Git/Conversion
This page is obsolete. It is being retained for archival purposes. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date. In July 2013 svn.wikimedia.org was put into read-only mode, completing the migration from Subversion to Git. |
Git conversion
Conversion of the MediaWiki source repository from Subversion to Git
|
This page discusses efforts to convert away from our current Subversion repository to Git. MediaWiki core and extensions used on Wikimedia sites have now switched to Git, but moving additional affected projects, and improving our new development infrastructure with tools integrating Gerrit and Git into our workflow, will continue to take engineering time until we completely switch our Subversion repository to read-only in the summer of 2013.
Rationale
[edit]Our current Subversion-based version control system has served us well, but we're in need of a more suitable version control system for our development effort. Our community is very distributed, with many parallel efforts and needs to integrate many different feature efforts. After long consideration, we've decided to move from Subversion to Git.
Some advantages of git:
- "I love git just because it allows me to commit locally (and offline)." - Guillaume Paumier
- "[Y]ou can create commits locally and push them to the server later (great for working without wifi), you can tell it 'save my work so I can go do something else now' in one command, and it'll allow us to review changes before they go into "trunk" (master).... without human intervention in merging things into trunk. Gerrit automates this process." - Roan Kattouw
Affected development projects
[edit]MediaWiki core (/trunk/phase3/) and MediaWiki extensions that WMF deploys moved to Git in March 2012. Afterwards, any other extensions, tools, or projects that wish to move can do so. These might include operations, fundraising, pywikibot, etc.
We will leave some codebases in Subversion and not bother migrating them, because those extensions or tools have been abandoned. Some developers will choose to move their projects to Github or some other git site. We will also leave svn.wikimedia.org up for at least multiple years; for the subdirectories holding projects that have moved to git, the repository will be read-only.
In January 2013, the MediaWiki SVN repository was made read-only. All active projects have moved to Git by now. Pywikibotis still on their respective repository, their status is detailed below:
- Pywikibot
Timeline
[edit]See Git/Conversion/Timeline for a history of how this proceeded.
Split up and convert repositories
[edit]A naïve git-svn
conversion of the entire repository (with branches) weighs in at around 7.8GB (November 2011). It makes no sense to make one Git MediaWiki repository, it should be split up.
In Subversion everything gets squashed into one giant repository. In Git repositories are split at the boundaries over which code does not cross.
Splitting
[edit]- MediaWiki will go in
mediawiki/core.git
- Extensions will go in
mediawiki/extensions/foo.git
- There will be an extension "meta repository" at
mediawiki/extensions.git
which will contain all extensions as submodules.
- There will be an extension "meta repository" at
- Other things across SVN need to find new homes in Git
Converting
[edit]- Every commit needs to be rewritten to give name/email pairs to SVN users. We are using username@users.mediawiki.org for a unified e-mail address scheme for all old commits.
Ongoing items
[edit]- Update links on MediaWiki.org
Ideal state
[edit]This is what we'd love to see:
History
[edit]People
[edit]Working on the conversion
[edit]- User:^demon
- Antoine Musso
- Roan Kattouw
Documents
[edit]- Task management: Task list from bug tracker (T24596)
- Status updates
- Gerrit - main documentation page for Gerrit
- Gerrit/Tagging Document describing how we intend to implement tagging feature
Communications
[edit]- 2011-09-22 - Rob Lanphier announces the plan to move to Git and Gerrit
- announcement of test repository
- "git boot camp" from October 2011 NOLA hackathon etherpad
- https://blog.wikimedia.org/2012/02/15/wikimedia-engineering-moving-from-subversion-to-git/
- Git, Gerrit, and You! or, Gerrit training available starting Monday 27 February
- Postponing Git migration until March 21
- When/how we'll add, remove people from Gerrit project owner groups
- Git migration: documentation and short-term considerations
- MediaWiki core deployments starting in April, and how that might work