# HG changeset patch # User Matt Harbison # Date 2018-07-05 19:07:29 # Node ID 050fbd9d103ad4f4b2085e721e4d175791fc8b4c # Parent 85da230c316aa7b4c70e332aca2d6fea67aaea68 test-convert: demonstrate an unstable hash issue for bzr -> hg -> hg It looks like the manifest value changing is the only difference, but I'm not sure why it's happening. I've got a similar divergence in a production repo that was also converted from bzr and has an octopus merge[1]. Unlike here, the manifest values for the destination merge commits reflect the initial merge only, instead of all four merges agreeing like this test. $ hg -R src_repo manifest -r 310 --debug | grep file # octopus fixup merge 2d8775bc2481bd28ac87038ecdf33e1dbddc80e9 644 file1 6adb9353a55bb8be76e71382efc724ec3ccf7ed5 644 file2 $ hg -R src_repo manifest -r 309 --debug | grep file # first merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 $ hg -R dst_repo manifest -r 273 --debug | grep file # octopus fixup merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 $ hg -R dst_repo manifest -r 272 --debug | grep file # first merge 362e7cb5163153c4989daad1a834871ae849f205 644 file1 2c65d947191938c3ea616b7ceb7648ff3843261f 644 file2 This divergence is espcially annoying because unlike changelog differences, I haven't figured out a way to fix this in code. The only way I found to work around it is to convert up to the point of divergence, `hg bundle` the bad revision in the source, apply it to the destination, add a line to the shamap, and fire off the conversion again. But I suspect that there's more to it than just the octopus merge because I also have a commit in the same repo, done in Mercurial (well after the conversion) that is exhibiting a similar issue (and it's not a merge commit). I'm almost positive that it was created with 4.4 or later. Any ideas? [1] https://www.mercurial-scm.org/pipermail/mercurial/2018-June/050924.html diff --git a/tests/test-convert-bzr-merges.t b/tests/test-convert-bzr-merges.t --- a/tests/test-convert-bzr-merges.t +++ b/tests/test-convert-bzr-merges.t @@ -69,4 +69,76 @@ test multiple merges at once 644 file-branch2 644 file-parent + $ hg convert source-hg hg2hg + initializing destination hg2hg repository + scanning source... + sorting... + converting... + 5 Initial add + 4 Added branch1 file + 3 Added parent file + 2 Added brach2 file + 1 Merged branches + 0 (octopus merge fixup) + $ hg -R hg2hg out source-hg -T compact + comparing with source-hg + searching for changes + 5[tip]:4,3 6bd55e826939 2009-10-10 08:00 +0100 foo + (octopus merge fixup) + +XXX: The manifest lines should probably agree, to avoid changing the hash when +converting hg -> hg + + $ hg -R source-hg log --debug -r tip + changeset: 5:b209510f11b2c987f920749cd8e352aa4b3230f2 + branch: source + tag: tip + phase: draft + parent: 4:1dc38c377bb35eeea4fa955056fbe4440d54a743 + parent: 3:4aaba1bfb426b8941bbf63f9dd52301152695164 + manifest: 5:1109e42bdcbd1f51baa69bc91079011d77057dbb + user: Foo Bar + date: Sat Oct 10 08:00:04 2009 +0100 + extra: branch=source + description: + (octopus merge fixup) + + + $ hg -R hg2hg log --debug -r tip + changeset: 5:6bd55e8269392769783345686faf7ff7b3b0215d + branch: source + tag: tip + phase: draft + parent: 4:1dc38c377bb35eeea4fa955056fbe4440d54a743 + parent: 3:4aaba1bfb426b8941bbf63f9dd52301152695164 + manifest: 4:daa315d56a98ba20811fdd0d9d575861f65cfa8c + user: Foo Bar + date: Sat Oct 10 08:00:04 2009 +0100 + extra: branch=source + description: + (octopus merge fixup) + + + $ hg -R source-hg manifest --debug -r tip + cdf31ed9242b209cd94697112160e2c5b37a667d 644 file + 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 + 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 + 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent + $ hg -R source-hg manifest --debug -r 'tip^' + cdf31ed9242b209cd94697112160e2c5b37a667d 644 file + 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 + 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 + 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent + + $ hg -R hg2hg manifest --debug -r tip + cdf31ed9242b209cd94697112160e2c5b37a667d 644 file + 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 + 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 + 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent + $ hg -R hg2hg manifest --debug -r 'tip^' + cdf31ed9242b209cd94697112160e2c5b37a667d 644 file + 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 + 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 + 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent + $ cd ..