Mercurial > hg
comparison tests/test-convert-bzr-merges.t @ 38573:050fbd9d103a
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
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 05 Jul 2018 15:07:29 -0400 |
parents | 85da230c316a |
children | 46da52f4b820 |
comparison
equal
deleted
inserted
replaced
38572:85da230c316a | 38573:050fbd9d103a |
---|---|
67 644 file | 67 644 file |
68 644 file-branch1 | 68 644 file-branch1 |
69 644 file-branch2 | 69 644 file-branch2 |
70 644 file-parent | 70 644 file-parent |
71 | 71 |
72 $ hg convert source-hg hg2hg | |
73 initializing destination hg2hg repository | |
74 scanning source... | |
75 sorting... | |
76 converting... | |
77 5 Initial add | |
78 4 Added branch1 file | |
79 3 Added parent file | |
80 2 Added brach2 file | |
81 1 Merged branches | |
82 0 (octopus merge fixup) | |
83 $ hg -R hg2hg out source-hg -T compact | |
84 comparing with source-hg | |
85 searching for changes | |
86 5[tip]:4,3 6bd55e826939 2009-10-10 08:00 +0100 foo | |
87 (octopus merge fixup) | |
88 | |
89 XXX: The manifest lines should probably agree, to avoid changing the hash when | |
90 converting hg -> hg | |
91 | |
92 $ hg -R source-hg log --debug -r tip | |
93 changeset: 5:b209510f11b2c987f920749cd8e352aa4b3230f2 | |
94 branch: source | |
95 tag: tip | |
96 phase: draft | |
97 parent: 4:1dc38c377bb35eeea4fa955056fbe4440d54a743 | |
98 parent: 3:4aaba1bfb426b8941bbf63f9dd52301152695164 | |
99 manifest: 5:1109e42bdcbd1f51baa69bc91079011d77057dbb | |
100 user: Foo Bar <foo.bar@example.com> | |
101 date: Sat Oct 10 08:00:04 2009 +0100 | |
102 extra: branch=source | |
103 description: | |
104 (octopus merge fixup) | |
105 | |
106 | |
107 $ hg -R hg2hg log --debug -r tip | |
108 changeset: 5:6bd55e8269392769783345686faf7ff7b3b0215d | |
109 branch: source | |
110 tag: tip | |
111 phase: draft | |
112 parent: 4:1dc38c377bb35eeea4fa955056fbe4440d54a743 | |
113 parent: 3:4aaba1bfb426b8941bbf63f9dd52301152695164 | |
114 manifest: 4:daa315d56a98ba20811fdd0d9d575861f65cfa8c | |
115 user: Foo Bar <foo.bar@example.com> | |
116 date: Sat Oct 10 08:00:04 2009 +0100 | |
117 extra: branch=source | |
118 description: | |
119 (octopus merge fixup) | |
120 | |
121 | |
122 $ hg -R source-hg manifest --debug -r tip | |
123 cdf31ed9242b209cd94697112160e2c5b37a667d 644 file | |
124 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 | |
125 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 | |
126 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent | |
127 $ hg -R source-hg manifest --debug -r 'tip^' | |
128 cdf31ed9242b209cd94697112160e2c5b37a667d 644 file | |
129 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 | |
130 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 | |
131 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent | |
132 | |
133 $ hg -R hg2hg manifest --debug -r tip | |
134 cdf31ed9242b209cd94697112160e2c5b37a667d 644 file | |
135 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 | |
136 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 | |
137 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent | |
138 $ hg -R hg2hg manifest --debug -r 'tip^' | |
139 cdf31ed9242b209cd94697112160e2c5b37a667d 644 file | |
140 5108144f585149b29779d7c7e51d61dd22303ffe 644 file-branch1 | |
141 80753c4a9ac3806858405b96b24a907b309e3616 644 file-branch2 | |
142 7108421418404a937c684d2479a34a24d2ce4757 644 file-parent | |
143 | |
72 $ cd .. | 144 $ cd .. |