git Conversion Tasks

What's needed

Our discussion topics are getting long, and the stuff we need to do is getting lost in the noise. A lot of this changes quite a bit depending on how we implement the git repo, but best to start somewhere. These are in no particular order for now.

Assumptions subject to change: Migrate to github as repo, keep existing Tasks web.

Decisions ... Decisions ...

See MoveCodeRepositoryToGit for an opportunity to vote / comment. Brief summary here:
  • Github or our own repo. or both GITHUB
  • Is submodules still the right approach. Already decided but are we sure. Submodules It doesn't preclude other approaches like git-slave.
  • Should we migrate from Pootle to Weblate. Latter has much tighter integration with github. Yes - migrate to Weblate
  • Keep the Tasks web as primary tracker, or use Github issues tool? Tasks
  • How to implement the Foswikirev links to commits Plugin

Policy & Procedure

Task Raised by Concern Resolution
Fork control
How do we keep control on the "golden" core, and avoid a chaos of forks, what is the real Foswiki
Foswiki project repos are the official source. master and Release00X00 branches are official
 
Extensions
How do we track extensions back to their source repository. Do we apply any controls to Extensions web
Assume foswiki project, Extension name as repo. Modify web form to point to the repo for non-standard repos.

Foswiki Server

Task Who Complete Comments
choice-yes
Call expandCommonMacros for InterWiki links
github mirror
choice-yes
Need to establish a local repo that remains in sync with github as backup
pootle integration
 
 
Install http://weblate.org/ It does cross-branch translation, full github integration.
We'd be able to eliminate our current cron-based services. It also solves a major issue today. We can only translate a single branch.
Foswikirev: links
Item12821
choice-yes
Release plugin that maps svn rev to githash
Since we ship Foswikirev links as part of Foswiki, we need to make the mapper available as well.
Challenge is that svn -> git is 1:n. A single svn rev can cross branches. Mostly complete, needs updating after any svn commits until migration completed.
trunk.foswiki.org
choice-yes
Need rewritten script to update every 15 minutes.
choice-yes
Needs to attribute git commits to wikiname on task update when possible
git.foswik.org
 
choice-yes
Shutdown git browser on f.o. (Redirects to foswiki.org)

git server

Task Who Complete Comments
svn pre-commit
 
N/A
Rewrite if git server, not used with github, use client side checking
edit
svn pre-receive
 
N/A
Not used with github, use client side checking
edit
svn post-commit
 
N/A
use github service hooks for email. Decide if rssfeed and twitter still useful.
edit
Task commit tracking
choice-yes
If github, use webhook on push to drive a web transaction on foswiki to update the task (Partially complete)
Or use a local git repo which issues a git fetch to track the foswiki github account.
edit
github restructuring
choice-yes
pharvey volunteered on irc. Some restructuring may still be necessary. There appear to be some bogus repos that can be deleted.
edit
repo audit
 
choice-yes
Need to audit that all git repos are up-to-date with subversion.
edit
webhooks
 
choice-yes
Need to install the webhook into every repo. Need a better secret as well. Hook configure as http://trunk.foswiki.org/bin/rest/FoswikiOrgPlugin/githubpush, configured to send JSON.
edit
github
 
- choice-yes Remove the obsolete repositories created for per-extension for default+developer extensions
- Rename "foswiki" repo to subversionArchive or similar
edit

Github restructuring

  • Eliminate the current "foswiki" repo - mirror of trunk - replaced by _allDeveloper
    • Make sure that each plugin submodule tracks the master branch of the module
    • See stackoverflow question for info on converting an existing submodule to the new branch tracking format.
  • Create a _allFoswiki which will represent the official releases choice-yes
    • master branch tracks the "core" repo master branch, Submodules track master branch for each default extension.
    • Create a branch for Release01x00, Release01x01, and Release01x02 choice-yes
      • Each branch has submodules tracking the same branch on the default extensions choice-yes
    • For each branch, create tags for the Release01x01xNN releases choice-yes
    • For each release, check out all extensions to the version in use when the release was built. Commit that into the branch and tag it

Task Who Complete Comments
git pre-commit
choice-yes
tools/githooks/pre-commit converted from the svn version
edit
git commit-msg
choice-yes
tools/githooks/commit-msg
edit
install-hooks
choice-yes

pseudo-install.pl updated to install the hooks in .git/hooks/

edit
install-hooks
 
choice-yes
Make it more intelligent, only install when origin is a foswiki repo.
edit

Developer documentation

Task Who Complete Comments
 
 
Needs simplification, or eliminate / replace with other docs
edit
 
 
 
edit
 
 
 
edit
 
 
Replaces SvnRepository. Needs a lot of work.
Also need a very clear workflow for the submodules.
edit
 
 
 
edit

Developer tools

Task Who Complete Comments
pseudo-install
 
choice-yes
Mostly complete git support already. Need to remove the git-svn tie-in.
Need to be more selective on installing git hooks
edit
tools/*
 
 
Many of the utiltity scripts have svn references - needs review
edit
Automated test script
 
 
 
edit
deb / rpm build scripts
 
 
 
edit

Topic revision: r31 - 16 Sep 2014, GeorgeClark
The copyright of the content on this website is held by the contributing authors, except where stated elsewhere. See Copyright Statement. Creative Commons License    Legal Imprint    Privacy Policy