Git Adoption Soaring; Are There Good Migration Strategies?
Got To Get Me A Git writes "Distributed version control systems (DVCS) seem to be the next big thing for open source software development. Many projects have already adopted a DVCS and many others are in the process of migrating. There are a lot of major advantages to using a DVCS, but the task of migrating from one system to another appears to be a formidable challenge. The Perl Foundation's recent switch to Git took over a year to execute. The GNOME project is planning its own migration strategy right now after discovering that a significant majority of the project's developers favor Git. Perhaps some of the projects that are working on transitions from other mainstream version control systems can pool their resources and collaborate to make some standardized tools and migration best practices documentation. Does such a thing already exist? Are any folks out there in the Slashsphere working on migrating their own project or company to a DVCS? I'd appreciate some feedback from other readers about what works and what doesn't."
I always though bzr had the edge on git in terms of being a better DVCS. Is there a reason why the article seems to think that git is the default?
r MM MM MMNMMMM MMMMMMMMM MMMMMMMMMMMMMMMM MMMMMM MMMNM MM M Fuck your mother and your father
r MrMrr'ro',oro',o',oro',o',oro',o',oro', ',oro',o',rrrrr@MM Fuck your mother and your father
rMMrWrM'ro',oro',o'>>,r'ror`rr7MrXrM Fuck your mother and your father
rM,rrrM'ro',oro',o', ro',o',oro',o',oro',or,r'ro',rrrrMrrBr0 Fuck your mother and your father
rMrWrrM'ro',oro',o',oro',o',oro', ',oro',or,r'ro',rrrWMrr0rMX Fuck your mother and your father
rM2rSrMr;r,rXi'ro',o o',o',oro',o',oro', ',oro',o',rrrM7rrii@ Fuck your mother and your father
rMSr@MMrX0'ro',oro',o',rrrrSrrrrr;i'ro',oro',o',rr rrrrMMrrMrM Fuck your mother and your father
rMWMMM'ror`rra0BMMMZo',or`rrXBrrSrrroMMMMMMMMMB'ro ',rrrMrrMrM Fuck your mother and your father
rMMrMMrrrrMMMMM MMMMMMMMMMr'ror`r:MMMMMMMMMMMMMMMMMWrrrMMrMiS Fuck your mother and your father
r MMM2rrMMMMM (o) MMMMMMMMMM rr XMMMMMMMMMMMMMMMMMMMMorBM:MX Fuck your mother and your father
r MMMrrMMMMMMMM MMMMMMMMMMMMM r MMMMMMMMMMMMMMMMMMMMMMrrMMMM Fuck your mother and your father
rMMZrrBMMMMMMMMMMMMMMMMMMMMMM r MMMMMMMMMMMMMMMMMMMMMBrrrrMM Fuck your mother and your father
rMrrrrMMMMMMMMMMMMMMMMMMMMMMM r MMMMMMMMMMMMMMMMMMMMMWrWMrrM Fuck your mother and your father
WMrrirMMMMMMMMMMMMMMMMMMMMMMM rM MMMMMMMMMMMMMMMMMMMM,rrrrrM0 Fuck your mother and your father
MXrrrrMMMMMMMMMMMMMMMMMMMMMM'ror` MMMMMMMMMMMMMMMMMMM'ror`rMM Fuck your mother and your father
MZrrrr7MMMMMMMMMMMMMMMMMMMM rrorZr MMMMMMMMMMMM MMMMMrrXrrrZM Fuck your mother and your father
MMrrZrrMMMMMMMMMMMMMMMMMM; rrMMrMMr WMMMMMMMM (o) MMrrarrrrM0 Fuck your mother and your father
rMrr,rrrrXMMMMMMMMMMMMM rrr:MMMrMMM:r MMMMMMMMM MMrrrr7rrrrM Fuck your mother and your father
rMM'ro',rrrr,M0'ro',rrrrr,,MMMBrMMMMr,rrrrZMMM:rrr raWrrrrrMM Fuck your mother and your father
r MrrrrriirXrrr7rrSr,2rrrrSMMMMrMMMM'ro',rrrrrr2:r'r o',rrrM Fuck your mother and your father
r MM'ro',oro',or,r'ror`r8:MMMMMrMMMMMr;rr;iio',or,r' ror`rMM Fuck your mother and your father
rr MM'ro',oro',o',rrrrrr;WMMMMMrMMMMMrM'ro',oro',o',r rroMM Fuck your mother and your father
rrrr MMM'ro',oro',o',rrrrrMMMMMrMMMMM'ro',oro',o',rrrXM MM Fuck your mother and your father
rrrr 0MMMMr'ror,r'ro',rrrrBMMM@rZMMM;'ror,r'ror`rraMMMM M Fuck your mother and your father
'ror` MMMMMMrMr,rr;'ror,r'ror`ri'ror,r'ror`rirrrrMMMMaMa Fuck your mother and your father
'ror` MrrBMMMMr2rZMrr@rrrrZ'ro',rrr,,rror'rrrMrr;M@rrrM Fuck your mother and your father
'ror` MMrrrM2MMM8MrrrZrrrXMrrrX,rrrrMorrrrrrrMMMM@rrrrM Fuck your mother and your father
'ror` MMrrrMrrrZMMMMMMMMMMMiMMMrrrrrWMSMMMMMMMrZMrrrrMM Fuck your mother and your father
'ror`r MWrrMMrrWrrXrrrMrrriMaXMMMMMMBMrSrr7rr:rMMrrrrMX Fuck your mother and your father
'ror`r MMrrXMM2MMrMrrrMrrr,rrrM' or`rrrrBraMBMrM2rrriM Fuck your mother and your father
'ro',rr M2rrMrr@rrMMMMMMMMMr rMrrMorMMrZMZMMr;MMrrrrMM Fuck your mother and your father
'ro',rrr MrrrMMM0rZrrrMr rMMB7MM2MMrMrrSrrrrrMWrrrrrM Fuck your mother and your father
'ro',rrr MrrrrrSMMMMWSMr rrirrMrrrarMrrrM:MMBrSrrrrMM Fuck your mother and your father
'ro',rrr MM'ro',rrr2XMMMWMMMM0MMMMMMMMMMMMrrrrrrrr2M Fuck your mother and your father
'ro',rrrr MMr:'ro',rrrrrr;rrrrr8'ro',oro',o',rrrrMM Fuck your mother and your father
'ro',rrrrr XMMM'ror`roaM'ror`rr, rrrr;;:'ror`rrMMM Fuck your mother and your father
'ror,r'ro',rr WMM'ror,r' or`rBrrMrr rao',or`rMMMr Fuck your mother and your father
'ro',oro',o',rr MMMr:rr,rrrrMorrXS2,rrrrrZMMMX Fuck your mother and your father
'ro',oro',o',rrr rMMMZMMrrr;rrrrBrrrrrrMMMM Fuck your mother and your father
'ro',oro',or,r'ror` irXS2MMMMMMB8ZMMMMX: Fuck your mother and your father
and your father
TROLLKORE HEAD, I'M IN YOUR BED and your father
I'M FIZZY FIZZY WIZZY, I'M OFF MY HEAD and your father
Filter error: Please use fewer 'junk' characterso
Filter error: Please use fewer 'junk' characterso
Filter error: Please use fewer 'junk' characterso
Filter error: Please use fewer 'junk' characterso
OuT of bed 1n the but now they're
Use cvs2svn to convert your existing CVS repositories.
The tools that come with git for converting CVS to git do not work. You will see other posts about how git is different, such as how it manages commits versus files. CVS manages files, and doesn't track them well.
It has no ideas of when a branch ends, and even when they start is a bit iffy. Add to that the fact that CVS lets you pick and choose random files to be on a branch, then you can really start to get into a strange state.
For our CVS repository (goes back to 2001, we had 100's of branches, maybe 1000 tags), the git cvsimport tool placed code from our current development trunk into older versions. I'm sure you can see how bad that is.
After getting burned by that, we turned to cvs2svn. It took a long time (8 hours) to convert, but it converted correctly, and you only ever have to do it once.
My advice is to convert your repository, then check out random versions from both CVS and git, then run a diff on all the branches of importance. I wrote a script to do it for all branches and tags because I got burned the first time.