Subject: Re: Another way to compare tools: is it possible to transfer full history?

From: Tomas Carnecky <[email-masked]>
Date: Tue, 28 Sep 2010 16:53:29 +0200

On 9/28/10 3:44 PM, Tuomo wrote:
> I have seen lots of comparisons between source control tools, 
> but have not found a comparison that would explain the fundamental differences 
> and similarities in a way that would really let me choose. 
> So I decided to try a new approach: if one tries to transfer the full history 
> of an application or a larger product/project, which features can I rely on 
> finding in any decently recent tool?
> 
> Let's start from Git vs. Mercurial: is it possible to move the whole history 
> of an application (with or without submodules) from Git to Mercurial? 
> From Mercurial to Git? 

fast-import/export (man git-fast-export/import) seems to be the future.
Git provides excellent support for it and other SCMs are adopting it as
well. And then there are custom written conversion tools, just take a
look at [1] to see which ones are available.

(shameless plug: just this weekend I started collecting the various fast
import/export tools and made a webpage about it:
http://caurea.org/fast-export-import/. It's far from complete though.
And if you know any tools that perform better than those I've listed,
I'd be glade to update the page).

> If it is not always possible, what is the feature that might completely 
> prevent the whole attempt? If partial transfer is possible, what information 
> might be missing in the result?

Not all SCMs have the same features. Subversion for example doesn't have
real branches, tags nor merges (in the same sense that Git does). And
even in distributed version control systems there can be differences.
Git history can't be mapped 1:1 to Mercurial (octopus merges come to
mind). Some of these things can be reasonably emulated, some can't and
you loose that information.

tom

[1]
https://git.wiki.kernel.org/index.php/InterfacesFrontendsAndTools#Interaction_with_other_Revision_Control_Systems