comparison tests/test-merge-no-file-change.t @ 39148:46da52f4b820

commit: try hard to reuse p1 manifest if nothing changed This is all for commit reproducibility on "hg convert". With this change, p1 manifest is reused if ctx.files() *to be committed* is empty, and if new manifest entry is identical to p1. This is important property for "hg convert" since memctx.files() built from a convert source may be either a) more narrowed thanks to a committed ctx.files() which provides more accurate status, or b) containing redundant files because of sloppy filtering on e.g. octopus merge.
author Yuya Nishihara <yuya@tcha.org>
date Sat, 07 Jul 2018 22:40:39 +0900
parents f0c2653ca706
children 8988e640a8ac
comparison
equal deleted inserted replaced
39147:f0c2653ca706 39148:46da52f4b820
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 (branch merge, don't forget to commit) 29 (branch merge, don't forget to commit)
30 $ hg ci --debug -m merge 30 $ hg ci --debug -m merge
31 committing files: 31 committing files:
32 b 32 b
33 not reusing manifest (no file change in changelog, but manifest differs)
33 committing manifest 34 committing manifest
34 committing changelog 35 committing changelog
35 updating the branch cache 36 updating the branch cache
36 committed changeset 3:7aa8a293f5d97377037afc21e871e036e718d659 37 committed changeset 3:7aa8a293f5d97377037afc21e871e036e718d659
37 $ hg log -GTl 38 $ hg log -GTl
134 (branch merge, don't forget to commit) 135 (branch merge, don't forget to commit)
135 $ chmod +x b 136 $ chmod +x b
136 $ hg ci --debug -m merge 137 $ hg ci --debug -m merge
137 committing files: 138 committing files:
138 b 139 b
139 committing manifest 140 reusing manifest form p1 (listed files actually unchanged)
140 committing changelog 141 committing changelog
141 updating the branch cache 142 updating the branch cache
142 committed changeset 3:4bfaad7f925b7f17f60524dc5d4e605f7bfbba3f 143 committed changeset 3:c8d50407916ef8a5a97cb6e36ca9bc844a6ee13e
143 $ hg log -GTl 144 $ hg log -GTl
144 @ 3:4bfaad7f925b p=2,1 m=3:a3a9fe23a5b8 f=[] 145 @ 3:c8d50407916e p=2,1 m=2:36b69ba4b24b f=[]
145 |\ 146 |\
146 | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"] 147 | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"]
147 | | 148 | |
148 o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"] 149 o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"]
149 |/ 150 |/
153 0 a 154 0 a
154 0 x b 155 0 x b
155 156
156 $ cd .. 157 $ cd ..
157 $ check_convert_identity flag-change-take-p1 158 $ check_convert_identity flag-change-take-p1
158 3:c8d50407916e
159 *** BUG: hash changes on convert ***
160 o 3:c8d50407916e p=2,1 m=2:36b69ba4b24b f=[]
161 |\
162 | o 2:99451f16b3f5 p=0,-1 m=2:36b69ba4b24b f=["b"]
163 | |
164 o | 1:64d01526d4c2 p=0,-1 m=1:686dbf0aeca4 f=["b"]
165 |/
166 o 0:487a0a245cea p=-1,-1 m=0:8515d4bfda76 f=["a"]
167
168 159
169 An identical file added at both parents, but the flag differs. Take other: 160 An identical file added at both parents, but the flag differs. Take other:
170 161
171 $ hg init flag-change-take-p2 162 $ hg init flag-change-take-p2
172 $ cd flag-change-take-p2 163 $ cd flag-change-take-p2
224 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 215 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
225 (branch merge, don't forget to commit) 216 (branch merge, don't forget to commit)
226 $ hg ci --debug -m merge 217 $ hg ci --debug -m merge
227 committing files: 218 committing files:
228 c 219 c
220 not reusing manifest (no file change in changelog, but manifest differs)
229 committing manifest 221 committing manifest
230 committing changelog 222 committing changelog
231 updating the branch cache 223 updating the branch cache
232 committed changeset 4:f7fbc4e4d9a8fde03ba475adad675578c8bf472d 224 committed changeset 4:f7fbc4e4d9a8fde03ba475adad675578c8bf472d
233 $ hg log -GTl 225 $ hg log -GTl
297 1 files updated, 0 files merged, 0 files removed, 0 files unresolved 289 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
298 (branch merge, don't forget to commit) 290 (branch merge, don't forget to commit)
299 $ hg ci --debug -m merge 291 $ hg ci --debug -m merge
300 committing files: 292 committing files:
301 b 293 b
294 not reusing manifest (no file change in changelog, but manifest differs)
302 committing manifest 295 committing manifest
303 committing changelog 296 committing changelog
304 updating the branch cache 297 updating the branch cache
305 committed changeset 3:fb97d83b02fd072295cfc2171f21b7d38509bfd7 298 committed changeset 3:fb97d83b02fd072295cfc2171f21b7d38509bfd7
306 $ hg log -GT'{l} branch={branch}' 299 $ hg log -GT'{l} branch={branch}'