##// END OF EJS Templates
tests: fix a couple typos in test-resolve.t comments and add a comment...
Kyle Lippincott -
r40600:8785d66e default
parent child Browse files
Show More
@@ -1,616 +1,618 b''
1 test that a commit clears the merge state.
1 test that a commit clears the merge state.
2
2
3 $ hg init repo
3 $ hg init repo
4 $ cd repo
4 $ cd repo
5
5
6 $ echo foo > file1
6 $ echo foo > file1
7 $ echo foo > file2
7 $ echo foo > file2
8 $ hg commit -Am 'add files'
8 $ hg commit -Am 'add files'
9 adding file1
9 adding file1
10 adding file2
10 adding file2
11
11
12 $ echo bar >> file1
12 $ echo bar >> file1
13 $ echo bar >> file2
13 $ echo bar >> file2
14 $ hg commit -Am 'append bar to files'
14 $ hg commit -Am 'append bar to files'
15
15
16 create a second head with conflicting edits
16 create a second head with conflicting edits
17
17
18 $ hg up -C 0
18 $ hg up -C 0
19 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
19 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
20 $ echo baz >> file1
20 $ echo baz >> file1
21 $ echo baz >> file2
21 $ echo baz >> file2
22 $ hg commit -Am 'append baz to files'
22 $ hg commit -Am 'append baz to files'
23 created new head
23 created new head
24
24
25 create a third head with no conflicting edits
25 create a third head with no conflicting edits
26 $ hg up -qC 0
26 $ hg up -qC 0
27 $ echo foo > file3
27 $ echo foo > file3
28 $ hg commit -Am 'add non-conflicting file'
28 $ hg commit -Am 'add non-conflicting file'
29 adding file3
29 adding file3
30 created new head
30 created new head
31
31
32 failing merge
32 failing merge
33
33
34 $ hg up -qC 2
34 $ hg up -qC 2
35 $ hg merge --tool=internal:fail 1
35 $ hg merge --tool=internal:fail 1
36 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
36 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
37 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
37 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
38 [1]
38 [1]
39
39
40 resolve -l should contain unresolved entries
40 resolve -l should contain unresolved entries
41
41
42 $ hg resolve -l
42 $ hg resolve -l
43 U file1
43 U file1
44 U file2
44 U file2
45
45
46 $ hg resolve -l --no-status
46 $ hg resolve -l --no-status
47 file1
47 file1
48 file2
48 file2
49
49
50 resolving an unknown path should emit a warning, but not for -l
50 resolving an unknown path should emit a warning, but not for -l
51
51
52 $ hg resolve -m does-not-exist
52 $ hg resolve -m does-not-exist
53 arguments do not match paths that need resolving
53 arguments do not match paths that need resolving
54 $ hg resolve -l does-not-exist
54 $ hg resolve -l does-not-exist
55
55
56 tell users how they could have used resolve
56 tell users how they could have used resolve
57
57
58 $ mkdir nested
58 $ mkdir nested
59 $ cd nested
59 $ cd nested
60 $ hg resolve -m file1
60 $ hg resolve -m file1
61 arguments do not match paths that need resolving
61 arguments do not match paths that need resolving
62 (try: hg resolve -m path:file1)
62 (try: hg resolve -m path:file1)
63 $ hg resolve -m file1 filez
63 $ hg resolve -m file1 filez
64 arguments do not match paths that need resolving
64 arguments do not match paths that need resolving
65 (try: hg resolve -m path:file1 path:filez)
65 (try: hg resolve -m path:file1 path:filez)
66 $ hg resolve -m path:file1 path:filez
66 $ hg resolve -m path:file1 path:filez
67 $ hg resolve -l
67 $ hg resolve -l
68 R file1
68 R file1
69 U file2
69 U file2
70 $ hg resolve --re-merge filez file2
70 $ hg resolve --re-merge filez file2
71 arguments do not match paths that need resolving
71 arguments do not match paths that need resolving
72 (try: hg resolve --re-merge path:filez path:file2)
72 (try: hg resolve --re-merge path:filez path:file2)
73 $ hg resolve -m filez file2
73 $ hg resolve -m filez file2
74 arguments do not match paths that need resolving
74 arguments do not match paths that need resolving
75 (try: hg resolve -m path:filez path:file2)
75 (try: hg resolve -m path:filez path:file2)
76 $ hg resolve -m path:filez path:file2
76 $ hg resolve -m path:filez path:file2
77 (no more unresolved files)
77 (no more unresolved files)
78 $ hg resolve -l
78 $ hg resolve -l
79 R file1
79 R file1
80 R file2
80 R file2
81
81
82 cleanup
82 cleanup
83 $ hg resolve -u
83 $ hg resolve -u
84 $ cd ..
84 $ cd ..
85 $ rmdir nested
85 $ rmdir nested
86
86
87 don't allow marking or unmarking driver-resolved files
87 don't allow marking or unmarking driver-resolved files
88
88
89 $ cat > $TESTTMP/markdriver.py << EOF
89 $ cat > $TESTTMP/markdriver.py << EOF
90 > '''mark and unmark files as driver-resolved'''
90 > '''mark and unmark files as driver-resolved'''
91 > from mercurial import (
91 > from mercurial import (
92 > merge,
92 > merge,
93 > pycompat,
93 > pycompat,
94 > registrar,
94 > registrar,
95 > scmutil,
95 > scmutil,
96 > )
96 > )
97 > cmdtable = {}
97 > cmdtable = {}
98 > command = registrar.command(cmdtable)
98 > command = registrar.command(cmdtable)
99 > @command(b'markdriver',
99 > @command(b'markdriver',
100 > [(b'u', b'unmark', None, b'')],
100 > [(b'u', b'unmark', None, b'')],
101 > b'FILE...')
101 > b'FILE...')
102 > def markdriver(ui, repo, *pats, **opts):
102 > def markdriver(ui, repo, *pats, **opts):
103 > wlock = repo.wlock()
103 > wlock = repo.wlock()
104 > opts = pycompat.byteskwargs(opts)
104 > opts = pycompat.byteskwargs(opts)
105 > try:
105 > try:
106 > ms = merge.mergestate.read(repo)
106 > ms = merge.mergestate.read(repo)
107 > m = scmutil.match(repo[None], pats, opts)
107 > m = scmutil.match(repo[None], pats, opts)
108 > for f in ms:
108 > for f in ms:
109 > if not m(f):
109 > if not m(f):
110 > continue
110 > continue
111 > if not opts[b'unmark']:
111 > if not opts[b'unmark']:
112 > ms.mark(f, b'd')
112 > ms.mark(f, b'd')
113 > else:
113 > else:
114 > ms.mark(f, b'u')
114 > ms.mark(f, b'u')
115 > ms.commit()
115 > ms.commit()
116 > finally:
116 > finally:
117 > wlock.release()
117 > wlock.release()
118 > EOF
118 > EOF
119 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver file1
119 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver file1
120 $ hg resolve --list
120 $ hg resolve --list
121 D file1
121 D file1
122 U file2
122 U file2
123 $ hg resolve --mark file1
123 $ hg resolve --mark file1
124 not marking file1 as it is driver-resolved
124 not marking file1 as it is driver-resolved
125 this should not print out file1
125 this should not print out file1
126 $ hg resolve --mark --all
126 $ hg resolve --mark --all
127 (no more unresolved files -- run "hg resolve --all" to conclude)
127 (no more unresolved files -- run "hg resolve --all" to conclude)
128 $ hg resolve --mark 'glob:file*'
128 $ hg resolve --mark 'glob:file*'
129 (no more unresolved files -- run "hg resolve --all" to conclude)
129 (no more unresolved files -- run "hg resolve --all" to conclude)
130 $ hg resolve --list
130 $ hg resolve --list
131 D file1
131 D file1
132 R file2
132 R file2
133 $ hg resolve --unmark file1
133 $ hg resolve --unmark file1
134 not unmarking file1 as it is driver-resolved
134 not unmarking file1 as it is driver-resolved
135 (no more unresolved files -- run "hg resolve --all" to conclude)
135 (no more unresolved files -- run "hg resolve --all" to conclude)
136 $ hg resolve --unmark --all
136 $ hg resolve --unmark --all
137 $ hg resolve --list
137 $ hg resolve --list
138 D file1
138 D file1
139 U file2
139 U file2
140 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver --unmark file1
140 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver --unmark file1
141 $ hg resolve --list
141 $ hg resolve --list
142 U file1
142 U file1
143 U file2
143 U file2
144
144
145 resolve the failure
145 resolve the failure
146
146
147 $ echo resolved > file1
147 $ echo resolved > file1
148 $ hg resolve -m file1
148 $ hg resolve -m file1
149
149
150 resolve -l should show resolved file as resolved
150 resolve -l should show resolved file as resolved
151
151
152 $ hg resolve -l
152 $ hg resolve -l
153 R file1
153 R file1
154 U file2
154 U file2
155
155
156 $ hg resolve -l -Tjson
156 $ hg resolve -l -Tjson
157 [
157 [
158 {
158 {
159 "mergestatus": "R",
159 "mergestatus": "R",
160 "path": "file1"
160 "path": "file1"
161 },
161 },
162 {
162 {
163 "mergestatus": "U",
163 "mergestatus": "U",
164 "path": "file2"
164 "path": "file2"
165 }
165 }
166 ]
166 ]
167
167
168 $ hg resolve -l -T '{path} {mergestatus} {status} {p1rev} {p2rev}\n'
168 $ hg resolve -l -T '{path} {mergestatus} {status} {p1rev} {p2rev}\n'
169 file1 R M 2 1
169 file1 R M 2 1
170 file2 U M 2 1
170 file2 U M 2 1
171
171
172 resolve -m without paths should mark all resolved
172 resolve -m without paths should mark all resolved
173
173
174 $ hg resolve -m
174 $ hg resolve -m
175 (no more unresolved files)
175 (no more unresolved files)
176 $ hg commit -m 'resolved'
176 $ hg commit -m 'resolved'
177
177
178 resolve -l should be empty after commit
178 resolve -l should be empty after commit
179
179
180 $ hg resolve -l
180 $ hg resolve -l
181
181
182 $ hg resolve -l -Tjson
182 $ hg resolve -l -Tjson
183 [
183 [
184 ]
184 ]
185
185
186 resolve --all should abort when no merge in progress
186 resolve --all should abort when no merge in progress
187
187
188 $ hg resolve --all
188 $ hg resolve --all
189 abort: resolve command not applicable when not merging
189 abort: resolve command not applicable when not merging
190 [255]
190 [255]
191
191
192 resolve -m should abort when no merge in progress
192 resolve -m should abort when no merge in progress
193
193
194 $ hg resolve -m
194 $ hg resolve -m
195 abort: resolve command not applicable when not merging
195 abort: resolve command not applicable when not merging
196 [255]
196 [255]
197
197
198 can not update or merge when there are unresolved conflicts
198 can not update or merge when there are unresolved conflicts
199
199
200 $ hg up -qC 0
200 $ hg up -qC 0
201 $ echo quux >> file1
201 $ echo quux >> file1
202 $ hg up 1
202 $ hg up 1
203 merging file1
203 merging file1
204 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
204 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
205 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
205 1 files updated, 0 files merged, 0 files removed, 1 files unresolved
206 use 'hg resolve' to retry unresolved file merges
206 use 'hg resolve' to retry unresolved file merges
207 [1]
207 [1]
208 $ hg up 0
208 $ hg up 0
209 abort: outstanding merge conflicts
209 abort: outstanding merge conflicts
210 [255]
210 [255]
211 $ hg merge 2
211 $ hg merge 2
212 abort: outstanding merge conflicts
212 abort: outstanding merge conflicts
213 [255]
213 [255]
214 $ hg merge --force 2
214 $ hg merge --force 2
215 abort: outstanding merge conflicts
215 abort: outstanding merge conflicts
216 [255]
216 [255]
217
217
218 set up conflict-free merge
218 set up conflict-free merge
219
219
220 $ hg up -qC 3
220 $ hg up -qC 3
221 $ hg merge 1
221 $ hg merge 1
222 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
222 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
223 (branch merge, don't forget to commit)
223 (branch merge, don't forget to commit)
224
224
225 resolve --all should do nothing in merge without conflicts
225 resolve --all should do nothing in merge without conflicts
226 $ hg resolve --all
226 $ hg resolve --all
227 (no more unresolved files)
227 (no more unresolved files)
228
228
229 resolve -m should do nothing in merge without conflicts
229 resolve -m should do nothing in merge without conflicts
230
230
231 $ hg resolve -m
231 $ hg resolve -m
232 (no more unresolved files)
232 (no more unresolved files)
233
233
234 get back to conflicting state
234 get back to conflicting state
235
235
236 $ hg up -qC 2
236 $ hg up -qC 2
237 $ hg merge --tool=internal:fail 1
237 $ hg merge --tool=internal:fail 1
238 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
238 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
239 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
239 use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
240 [1]
240 [1]
241
241
242 resolve without arguments should suggest --all
242 resolve without arguments should suggest --all
243 $ hg resolve
243 $ hg resolve
244 abort: no files or directories specified
244 abort: no files or directories specified
245 (use --all to re-merge all unresolved files)
245 (use --all to re-merge all unresolved files)
246 [255]
246 [255]
247
247
248 resolve --all should re-merge all unresolved files
248 resolve --all should re-merge all unresolved files
249 $ hg resolve --all
249 $ hg resolve --all
250 merging file1
250 merging file1
251 merging file2
251 merging file2
252 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
252 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
253 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
253 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
254 [1]
254 [1]
255 $ cat file1.orig
255 $ cat file1.orig
256 foo
256 foo
257 baz
257 baz
258 $ cat file2.orig
258 $ cat file2.orig
259 foo
259 foo
260 baz
260 baz
261
261
262 .orig files should exists where specified
262 .orig files should exists where specified
263 $ hg resolve --all --verbose --config 'ui.origbackuppath=.hg/origbackups'
263 $ hg resolve --all --verbose --config 'ui.origbackuppath=.hg/origbackups'
264 merging file1
264 merging file1
265 creating directory: $TESTTMP/repo/.hg/origbackups
265 creating directory: $TESTTMP/repo/.hg/origbackups
266 merging file2
266 merging file2
267 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
267 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
268 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
268 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
269 [1]
269 [1]
270 $ ls .hg/origbackups
270 $ ls .hg/origbackups
271 file1
271 file1
272 file2
272 file2
273 $ grep '<<<' file1 > /dev/null
273 $ grep '<<<' file1 > /dev/null
274 $ grep '<<<' file2 > /dev/null
274 $ grep '<<<' file2 > /dev/null
275
275
276 resolve <file> should re-merge file
276 resolve <file> should re-merge file
277 $ echo resolved > file1
277 $ echo resolved > file1
278 $ hg resolve -q file1
278 $ hg resolve -q file1
279 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
279 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
280 [1]
280 [1]
281 $ grep '<<<' file1 > /dev/null
281 $ grep '<<<' file1 > /dev/null
282
282
283 test .orig behavior with resolve
283 test .orig behavior with resolve
284
284
285 $ hg resolve -q file1 --tool "sh -c 'f --dump \"$TESTTMP/repo/file1.orig\"'"
285 $ hg resolve -q file1 --tool "sh -c 'f --dump \"$TESTTMP/repo/file1.orig\"'"
286 $TESTTMP/repo/file1.orig:
286 $TESTTMP/repo/file1.orig:
287 >>>
287 >>>
288 foo
288 foo
289 baz
289 baz
290 <<<
290 <<<
291
291
292 resolve <file> should do nothing if 'file' was marked resolved
292 resolve <file> should do nothing if 'file' was marked resolved
293 $ echo resolved > file1
293 $ echo resolved > file1
294 $ hg resolve -m file1
294 $ hg resolve -m file1
295 $ hg resolve -q file1
295 $ hg resolve -q file1
296 $ cat file1
296 $ cat file1
297 resolved
297 resolved
298
298
299 insert unsupported advisory merge record
299 insert unsupported advisory merge record
300
300
301 $ hg --config extensions.fakemergerecord=$TESTDIR/fakemergerecord.py fakemergerecord -x
301 $ hg --config extensions.fakemergerecord=$TESTDIR/fakemergerecord.py fakemergerecord -x
302 $ hg debugmergestate
302 $ hg debugmergestate
303 * version 2 records
303 * version 2 records
304 local: 57653b9f834a4493f7240b0681efcb9ae7cab745
304 local: 57653b9f834a4493f7240b0681efcb9ae7cab745
305 other: dc77451844e37f03f5c559e3b8529b2b48d381d1
305 other: dc77451844e37f03f5c559e3b8529b2b48d381d1
306 labels:
306 labels:
307 local: working copy
307 local: working copy
308 other: merge rev
308 other: merge rev
309 unrecognized entry: x advisory record
309 unrecognized entry: x advisory record
310 file extras: file1 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
310 file extras: file1 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
311 file: file1 (record type "F", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
311 file: file1 (record type "F", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
312 local path: file1 (flags "")
312 local path: file1 (flags "")
313 ancestor path: file1 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
313 ancestor path: file1 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
314 other path: file1 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
314 other path: file1 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
315 file extras: file2 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
315 file extras: file2 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
316 file: file2 (record type "F", state "u", hash cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523)
316 file: file2 (record type "F", state "u", hash cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523)
317 local path: file2 (flags "")
317 local path: file2 (flags "")
318 ancestor path: file2 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
318 ancestor path: file2 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
319 other path: file2 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
319 other path: file2 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
320 $ hg resolve -l
320 $ hg resolve -l
321 R file1
321 R file1
322 U file2
322 U file2
323
323
324 insert unsupported mandatory merge record
324 insert unsupported mandatory merge record
325
325
326 $ hg --config extensions.fakemergerecord=$TESTDIR/fakemergerecord.py fakemergerecord -X
326 $ hg --config extensions.fakemergerecord=$TESTDIR/fakemergerecord.py fakemergerecord -X
327 $ hg debugmergestate
327 $ hg debugmergestate
328 * version 2 records
328 * version 2 records
329 local: 57653b9f834a4493f7240b0681efcb9ae7cab745
329 local: 57653b9f834a4493f7240b0681efcb9ae7cab745
330 other: dc77451844e37f03f5c559e3b8529b2b48d381d1
330 other: dc77451844e37f03f5c559e3b8529b2b48d381d1
331 labels:
331 labels:
332 local: working copy
332 local: working copy
333 other: merge rev
333 other: merge rev
334 file extras: file1 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
334 file extras: file1 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
335 file: file1 (record type "F", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
335 file: file1 (record type "F", state "r", hash 60b27f004e454aca81b0480209cce5081ec52390)
336 local path: file1 (flags "")
336 local path: file1 (flags "")
337 ancestor path: file1 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
337 ancestor path: file1 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
338 other path: file1 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
338 other path: file1 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
339 file extras: file2 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
339 file extras: file2 (ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac)
340 file: file2 (record type "F", state "u", hash cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523)
340 file: file2 (record type "F", state "u", hash cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523)
341 local path: file2 (flags "")
341 local path: file2 (flags "")
342 ancestor path: file2 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
342 ancestor path: file2 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd)
343 other path: file2 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
343 other path: file2 (node 6f4310b00b9a147241b071a60c28a650827fb03d)
344 unrecognized entry: X mandatory record
344 unrecognized entry: X mandatory record
345 $ hg resolve -l
345 $ hg resolve -l
346 abort: unsupported merge state records: X
346 abort: unsupported merge state records: X
347 (see https://mercurial-scm.org/wiki/MergeStateRecords for more information)
347 (see https://mercurial-scm.org/wiki/MergeStateRecords for more information)
348 [255]
348 [255]
349 $ hg resolve -ma
349 $ hg resolve -ma
350 abort: unsupported merge state records: X
350 abort: unsupported merge state records: X
351 (see https://mercurial-scm.org/wiki/MergeStateRecords for more information)
351 (see https://mercurial-scm.org/wiki/MergeStateRecords for more information)
352 [255]
352 [255]
353 $ hg summary
353 $ hg summary
354 warning: merge state has unsupported record types: X
354 warning: merge state has unsupported record types: X
355 parent: 2:57653b9f834a
355 parent: 2:57653b9f834a
356 append baz to files
356 append baz to files
357 parent: 1:dc77451844e3
357 parent: 1:dc77451844e3
358 append bar to files
358 append bar to files
359 branch: default
359 branch: default
360 commit: 2 modified, 2 unknown (merge)
360 commit: 2 modified, 2 unknown (merge)
361 update: 2 new changesets (update)
361 update: 2 new changesets (update)
362 phases: 5 draft
362 phases: 5 draft
363
363
364 update --clean shouldn't abort on unsupported records
364 update --clean shouldn't abort on unsupported records
365
365
366 $ hg up -qC 1
366 $ hg up -qC 1
367 $ hg debugmergestate
367 $ hg debugmergestate
368 no merge state found
368 no merge state found
369
369
370 test crashed merge with empty mergestate
370 test crashed merge with empty mergestate
371
371
372 $ mkdir .hg/merge
372 $ mkdir .hg/merge
373 $ touch .hg/merge/state
373 $ touch .hg/merge/state
374
374
375 resolve -l should be empty
375 resolve -l should be empty
376
376
377 $ hg resolve -l
377 $ hg resolve -l
378
378
379 resolve -m can be configured to look for remaining conflict markers
379 resolve -m can be configured to look for remaining conflict markers
380 $ hg up -qC 2
380 $ hg up -qC 2
381 $ hg merge -q --tool=internal:merge 1
381 $ hg merge -q --tool=internal:merge 1
382 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
382 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
383 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
383 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
384 [1]
384 [1]
385 $ hg resolve -l
385 $ hg resolve -l
386 U file1
386 U file1
387 U file2
387 U file2
388 $ echo 'remove markers' > file1
388 $ echo 'remove markers' > file1
389 $ hg --config commands.resolve.mark-check=abort resolve -m
389 $ hg --config commands.resolve.mark-check=abort resolve -m
390 warning: the following files still have conflict markers:
390 warning: the following files still have conflict markers:
391 file2
391 file2
392 abort: conflict markers detected
392 abort: conflict markers detected
393 (use --all to mark anyway)
393 (use --all to mark anyway)
394 [255]
394 [255]
395 $ hg resolve -l
395 $ hg resolve -l
396 U file1
396 U file1
397 U file2
397 U file2
398 Try with --all from the hint
398 Try with --all from the hint
399 $ hg --config commands.resolve.mark-check=abort resolve -m --all
399 $ hg --config commands.resolve.mark-check=abort resolve -m --all
400 warning: the following files still have conflict markers:
400 warning: the following files still have conflict markers:
401 file2
401 file2
402 (no more unresolved files)
402 (no more unresolved files)
403 $ hg resolve -l
403 $ hg resolve -l
404 R file1
404 R file1
405 R file2
405 R file2
406 Test option value 'warn'
406 Test option value 'warn'
407 $ hg resolve --unmark
407 $ hg resolve --unmark
408 $ hg resolve -l
408 $ hg resolve -l
409 U file1
409 U file1
410 U file2
410 U file2
411 $ hg --config commands.resolve.mark-check=warn resolve -m
411 $ hg --config commands.resolve.mark-check=warn resolve -m
412 warning: the following files still have conflict markers:
412 warning: the following files still have conflict markers:
413 file2
413 file2
414 (no more unresolved files)
414 (no more unresolved files)
415 $ hg resolve -l
415 $ hg resolve -l
416 R file1
416 R file1
417 R file2
417 R file2
418 If the file is already marked as resolved, we don't warn about it
418 If the file is already marked as resolved, we don't warn about it
419 $ hg resolve --unmark file1
419 $ hg resolve --unmark file1
420 $ hg resolve -l
420 $ hg resolve -l
421 U file1
421 U file1
422 R file2
422 R file2
423 $ hg --config commands.resolve.mark-check=warn resolve -m
423 $ hg --config commands.resolve.mark-check=warn resolve -m
424 (no more unresolved files)
424 (no more unresolved files)
425 $ hg resolve -l
425 $ hg resolve -l
426 R file1
426 R file1
427 R file2
427 R file2
428 If the user passes an invalid value, we treat it as 'none'.
428 If the user passes an invalid value, we treat it as 'none'.
429 $ hg resolve --unmark
429 $ hg resolve --unmark
430 $ hg resolve -l
430 $ hg resolve -l
431 U file1
431 U file1
432 U file2
432 U file2
433 $ hg --config commands.resolve.mark-check=nope resolve -m
433 $ hg --config commands.resolve.mark-check=nope resolve -m
434 (no more unresolved files)
434 (no more unresolved files)
435 $ hg resolve -l
435 $ hg resolve -l
436 R file1
436 R file1
437 R file2
437 R file2
438 Test explicitly setting the otion to 'none'
438 Test explicitly setting the option to 'none'
439 $ hg resolve --unmark
439 $ hg resolve --unmark
440 $ hg resolve -l
440 $ hg resolve -l
441 U file1
441 U file1
442 U file2
442 U file2
443 $ hg --config commands.resolve.mark-check=none resolve -m
443 $ hg --config commands.resolve.mark-check=none resolve -m
444 (no more unresolved files)
444 (no more unresolved files)
445 $ hg resolve -l
445 $ hg resolve -l
446 R file1
446 R file1
447 R file2
447 R file2
448 Testing the --re-merge flag
448 Testing the --re-merge flag
449 $ hg resolve --unmark file1
449 $ hg resolve --unmark file1
450 $ hg resolve -l
450 $ hg resolve -l
451 U file1
451 U file1
452 R file2
452 R file2
453 $ hg resolve --mark --re-merge
453 $ hg resolve --mark --re-merge
454 abort: too many actions specified
454 abort: too many actions specified
455 [255]
455 [255]
456 $ hg resolve --re-merge --all
456 $ hg resolve --re-merge --all
457 merging file1
457 merging file1
458 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
458 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
459 [1]
459 [1]
460 Explicit re-merge
460 Explicit re-merge
461 $ hg resolve --unmark file1
461 $ hg resolve --unmark file1
462 $ hg resolve --config commands.resolve.explicit-re-merge=1 --all
462 $ hg resolve --config commands.resolve.explicit-re-merge=1 --all
463 abort: no action specified
463 abort: no action specified
464 (use --mark, --unmark, --list or --re-merge)
464 (use --mark, --unmark, --list or --re-merge)
465 [255]
465 [255]
466 $ hg resolve --config commands.resolve.explicit-re-merge=1 --re-merge --all
466 $ hg resolve --config commands.resolve.explicit-re-merge=1 --re-merge --all
467 merging file1
467 merging file1
468 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
468 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
469 [1]
469 [1]
470
470
471 $ cd ..
471 $ cd ..
472
472
473 ======================================================
473 ======================================================
474 Test 'hg resolve' confirm config option functionality |
474 Test 'hg resolve' confirm config option functionality |
475 ======================================================
475 ======================================================
476 $ cat >> $HGRCPATH << EOF
476 $ cat >> $HGRCPATH << EOF
477 > [extensions]
477 > [extensions]
478 > rebase=
478 > rebase=
479 > EOF
479 > EOF
480
480
481 $ hg init repo2
481 $ hg init repo2
482 $ cd repo2
482 $ cd repo2
483
483
484 $ echo boss > boss
484 $ echo boss > boss
485 $ hg ci -Am "add boss"
485 $ hg ci -Am "add boss"
486 adding boss
486 adding boss
487
487
488 $ for emp in emp1 emp2 emp3; do echo work > $emp; done;
488 $ for emp in emp1 emp2 emp3; do echo work > $emp; done;
489 $ hg ci -Aqm "added emp1 emp2 emp3"
489 $ hg ci -Aqm "added emp1 emp2 emp3"
490
490
491 $ hg up 0
491 $ hg up 0
492 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
492 0 files updated, 0 files merged, 3 files removed, 0 files unresolved
493
493
494 $ for emp in emp1 emp2 emp3; do echo nowork > $emp; done;
494 $ for emp in emp1 emp2 emp3; do echo nowork > $emp; done;
495 $ hg ci -Aqm "added lazy emp1 emp2 emp3"
495 $ hg ci -Aqm "added lazy emp1 emp2 emp3"
496
496
497 $ hg log -GT "{rev} {node|short} {firstline(desc)}\n"
497 $ hg log -GT "{rev} {node|short} {firstline(desc)}\n"
498 @ 2 0acfd4a49af0 added lazy emp1 emp2 emp3
498 @ 2 0acfd4a49af0 added lazy emp1 emp2 emp3
499 |
499 |
500 | o 1 f30f98a8181f added emp1 emp2 emp3
500 | o 1 f30f98a8181f added emp1 emp2 emp3
501 |/
501 |/
502 o 0 88660038d466 add boss
502 o 0 88660038d466 add boss
503
503
504 $ hg rebase -s 1 -d 2
504 $ hg rebase -s 1 -d 2
505 rebasing 1:f30f98a8181f "added emp1 emp2 emp3"
505 rebasing 1:f30f98a8181f "added emp1 emp2 emp3"
506 merging emp1
506 merging emp1
507 merging emp2
507 merging emp2
508 merging emp3
508 merging emp3
509 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
509 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
510 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
510 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
511 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
511 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
512 unresolved conflicts (see hg resolve, then hg rebase --continue)
512 unresolved conflicts (see hg resolve, then hg rebase --continue)
513 [1]
513 [1]
514
514
515 Test when commands.resolve.confirm config option is not set:
515 Test when commands.resolve.confirm config option is not set:
516 ===========================================================
516 ===========================================================
517 $ hg resolve --all
517 $ hg resolve --all
518 merging emp1
518 merging emp1
519 merging emp2
519 merging emp2
520 merging emp3
520 merging emp3
521 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
521 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
522 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
522 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
523 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
523 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
524 [1]
524 [1]
525
525
526 Test when config option is set:
526 Test when config option is set:
527 ==============================
527 ==============================
528 $ cat >> $HGRCPATH << EOF
528 $ cat >> $HGRCPATH << EOF
529 > [ui]
529 > [ui]
530 > interactive = True
530 > interactive = True
531 > [commands]
531 > [commands]
532 > resolve.confirm = True
532 > resolve.confirm = True
533 > EOF
533 > EOF
534
534
535 $ hg resolve
535 $ hg resolve
536 abort: no files or directories specified
536 abort: no files or directories specified
537 (use --all to re-merge all unresolved files)
537 (use --all to re-merge all unresolved files)
538 [255]
538 [255]
539 $ hg resolve --all << EOF
539 $ hg resolve --all << EOF
540 > n
540 > n
541 > EOF
541 > EOF
542 re-merge all unresolved files (yn)? n
542 re-merge all unresolved files (yn)? n
543 abort: user quit
543 abort: user quit
544 [255]
544 [255]
545
545
546 $ hg resolve --all << EOF
546 $ hg resolve --all << EOF
547 > y
547 > y
548 > EOF
548 > EOF
549 re-merge all unresolved files (yn)? y
549 re-merge all unresolved files (yn)? y
550 merging emp1
550 merging emp1
551 merging emp2
551 merging emp2
552 merging emp3
552 merging emp3
553 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
553 warning: conflicts while merging emp1! (edit, then use 'hg resolve --mark')
554 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
554 warning: conflicts while merging emp2! (edit, then use 'hg resolve --mark')
555 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
555 warning: conflicts while merging emp3! (edit, then use 'hg resolve --mark')
556 [1]
556 [1]
557
557
558 Test that commands.resolve.confirm respect --mark option (only when no patterns args are given):
558 Test that commands.resolve.confirm respect --mark option (only when no patterns args are given):
559 ===============================================================================================
559 ===============================================================================================
560
560
561 $ hg resolve -m emp1
561 $ hg resolve -m emp1
562 $ hg resolve -l
562 $ hg resolve -l
563 R emp1
563 R emp1
564 U emp2
564 U emp2
565 U emp3
565 U emp3
566
566
567 $ hg resolve -m << EOF
567 $ hg resolve -m << EOF
568 > n
568 > n
569 > EOF
569 > EOF
570 mark all unresolved files as resolved (yn)? n
570 mark all unresolved files as resolved (yn)? n
571 abort: user quit
571 abort: user quit
572 [255]
572 [255]
573
573
574 $ hg resolve -m << EOF
574 $ hg resolve -m << EOF
575 > y
575 > y
576 > EOF
576 > EOF
577 mark all unresolved files as resolved (yn)? y
577 mark all unresolved files as resolved (yn)? y
578 (no more unresolved files)
578 (no more unresolved files)
579 continue: hg rebase --continue
579 continue: hg rebase --continue
580 $ hg resolve -l
580 $ hg resolve -l
581 R emp1
581 R emp1
582 R emp2
582 R emp2
583 R emp3
583 R emp3
584
584
585 Test that commands.resolve.confirm respect --unmark option (only when no patterns args are given):
585 Test that commands.resolve.confirm respect --unmark option (only when no patterns args are given):
586 ===============================================================================================
586 =================================================================================================
587
587
588 $ hg resolve -u emp1
588 $ hg resolve -u emp1
589
589
590 $ hg resolve -l
590 $ hg resolve -l
591 U emp1
591 U emp1
592 R emp2
592 R emp2
593 R emp3
593 R emp3
594
594
595 $ hg resolve -u << EOF
595 $ hg resolve -u << EOF
596 > n
596 > n
597 > EOF
597 > EOF
598 mark all resolved files as unresolved (yn)? n
598 mark all resolved files as unresolved (yn)? n
599 abort: user quit
599 abort: user quit
600 [255]
600 [255]
601
601
602 $ hg resolve -m << EOF
602 $ hg resolve -m << EOF
603 > y
603 > y
604 > EOF
604 > EOF
605 mark all unresolved files as resolved (yn)? y
605 mark all unresolved files as resolved (yn)? y
606 (no more unresolved files)
606 (no more unresolved files)
607 continue: hg rebase --continue
607 continue: hg rebase --continue
608
608
609 $ hg resolve -l
609 $ hg resolve -l
610 R emp1
610 R emp1
611 R emp2
611 R emp2
612 R emp3
612 R emp3
613
613
614 $ hg rebase --abort
614 $ hg rebase --abort
615 rebase aborted
615 rebase aborted
616
617 Done with commands.resolve.confirm tests:
616 $ cd ..
618 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now