hg-git and round-tripping (and file copies?)
Danek Duvall
danek.duvall at oracle.com
Thu Mar 16 16:59:17 EDT 2017
Gregory Szorc wrote:
> It is effectively impossible to round-trip between Git and Mercurial when
> file copies are involved. This is because Mercurial's filelog hashes
> include copy metadata and the parent nodes. Git's blob hashes, by contrast,
> are effectively content only. When you convert from Mercurial to Git, it
> will drop copy metadata (because Git doesn't track it explicitly). Then
> when you convert back to Mercurial, the copies have to be detected "just
> right" by hg-git for the hashes to align. Furthermore, the files have to be
> reintroduced in the same order, or the filelog parents may not align and
> the hashes may diverge. If a repo isn't linear, there's a non-zero chance
> of that happening.
Got it.
> It is best to have a single canonical repo and replicate from that.
> Attempting "syncing" from multiple discrete repos will only lead to
> divergence.
Sadly, that's not an option. We're just going to have to deal with the
breakage, until such time as we can avoid the git intermediary.
Thanks,
Danek
More information about the Mercurial-devel
mailing list