git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Migrating SVN to Git, and preserve merge information

From
ASAndrew Sayers <andrew-git@pileofstuff.org>
Date
Apr 10, 2012, 22:57 UTC
Message-ID
<4F84BAE2.5090803@pileofstuff.org>
In-Reply-To
<4F844F33.5000004@nekoconeko.nl>
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
Previous: Nick DoumaNext: Nick Douma
Message 2 of 5 in “Migrating SVN to Git, and preserve merge information”
  1. Nick DoumaApr 10, 2012
  2. Andrew SayersApr 10, 2012
  3. Nick DoumaApr 11, 2012
  4. Santi BéjarApr 11, 2012
  5. Andrew SayersApr 11, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.