|Version 8 (modified by kthakore, 5 years ago)|
This page exists to document what needs to happen before Parrot's developers will feel confident about switching version control from Subversion to Git. See also GitObjections
- Backwards-compatibility of svn revision numbers. We aren't patient enough to change all references in Parrot and Trac to svn revisions, so there has to be a way to figure out what changes a svn revision refers to. This can be done by maintaining a read-only version of the svn repository.
- This is fixed by using "git svn clone" it keeps all rXXXX numbers in the commit messages
- This can be linked to old links of rXXXX throughout trac (an experiment/trial will be needed)
- When importing a SVN repo into Git, we have the choice of adding markers to each commit which reference the original SVN revision. It sounds like we want this.
- again git svn clone
- Trac integration - We aren't switching away from Trac, so we need to be sure that there's a *mature* Trac plugin that can work with Git, either directly or via a third-party host like GitHub. This needs to be researched carefully since poor or immature Trac integration could be a significant impediment to Parrot's progress.
- Trac has a git plugin ( http://trac-hacks.org/wiki/GitPlugin)
- Working example http://sdlperl.ath.cx/
Things To Think About
- svn-properties - What do we want to do with them? For the most part, they seem useless.
coke: when switching partcl to git I ripped these out and haven't needed them since. We might to investigate a branch in svn without them that we can merge to trunk just before the cutover.
- External dependencies - Currently NQP-rx is copied manually into the Parrot repo by pmichaud++ when the time is right. We could set up NQP-rx as a git submodule, such that when you check out the Parrot git repo, it would checkout a specific commit of the NQP-rx git repo in a subdirectory, such as ext/nqp-rx.
Coke: this might be nice to have; I know we could do this with svn/svn-externals but chose not to. We would certainly want the ability to lock it against a particular revision of the external repo. (This is indeed how git submodules work. You peg a directory to a specified SHA1.)