Subject: Re: Migrating SVN to Git, and preserve merge information

From: Andrew Sayers <[email-masked]>
Date: Tue, 10 Apr 2012 23:57:38 +0100

Hi Nick,

Would I be right in thinking that a commit like "Merged r100,r101,r102
from trunk" will create three grafts?  If so, that might be the problem.

Git differentiates between "merges" (which include every commit up to
and including the specified one) and "cherry-picks" (which just include
the specified commit), whereas SVN calls both of these "merges".  Grafts
are a way of creating "merges" rather than "cherry-picks" (which git
doesn't have any metadata for), and it's not at all easy to get "merge"
data out of SVN in the general case.  Having said that, it's often a
good enough heuristic to pick the highest revision number mentioned in
the commit message and pretend it's a merge.

Incidentally, I'm planning to work on this area of SVN->git conversion
in the coming months.  I don't have anything you could use yet, but I
don't suppose the scripts you used are available somewhere?  Getting
revision information out of log files is particularly tricky, and
everyone stumbles over a different set of issues.  I'd be really
interested to pick any nuggets of wisdom out of the approach you took.

	- Andrew