##// END OF EJS Templates
test-resolve.t: switch to mergestate.read()...
Siddharth Agarwal -
r26997:1791f9aa default
parent child Browse files
Show More
@@ -1,239 +1,239
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 update -C .' to abandon
37 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' 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 don't allow marking or unmarking driver-resolved files
56 don't allow marking or unmarking driver-resolved files
57
57
58 $ cat > $TESTTMP/markdriver.py << EOF
58 $ cat > $TESTTMP/markdriver.py << EOF
59 > '''mark and unmark files as driver-resolved'''
59 > '''mark and unmark files as driver-resolved'''
60 > from mercurial import cmdutil, merge, scmutil
60 > from mercurial import cmdutil, merge, scmutil
61 > cmdtable = {}
61 > cmdtable = {}
62 > command = cmdutil.command(cmdtable)
62 > command = cmdutil.command(cmdtable)
63 > @command('markdriver',
63 > @command('markdriver',
64 > [('u', 'unmark', None, '')],
64 > [('u', 'unmark', None, '')],
65 > 'FILE...')
65 > 'FILE...')
66 > def markdriver(ui, repo, *pats, **opts):
66 > def markdriver(ui, repo, *pats, **opts):
67 > wlock = repo.wlock()
67 > wlock = repo.wlock()
68 > try:
68 > try:
69 > ms = merge.mergestate(repo)
69 > ms = merge.mergestate.read(repo)
70 > m = scmutil.match(repo[None], pats, opts)
70 > m = scmutil.match(repo[None], pats, opts)
71 > for f in ms:
71 > for f in ms:
72 > if not m(f):
72 > if not m(f):
73 > continue
73 > continue
74 > if not opts['unmark']:
74 > if not opts['unmark']:
75 > ms.mark(f, 'd')
75 > ms.mark(f, 'd')
76 > else:
76 > else:
77 > ms.mark(f, 'u')
77 > ms.mark(f, 'u')
78 > ms.commit()
78 > ms.commit()
79 > finally:
79 > finally:
80 > wlock.release()
80 > wlock.release()
81 > EOF
81 > EOF
82 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver file1
82 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver file1
83 $ hg resolve --list
83 $ hg resolve --list
84 D file1
84 D file1
85 U file2
85 U file2
86 $ hg resolve --mark file1
86 $ hg resolve --mark file1
87 not marking file1 as it is driver-resolved
87 not marking file1 as it is driver-resolved
88 this should not print out file1
88 this should not print out file1
89 $ hg resolve --mark --all
89 $ hg resolve --mark --all
90 (no more unresolved files -- run "hg resolve --all" to conclude)
90 (no more unresolved files -- run "hg resolve --all" to conclude)
91 $ hg resolve --mark 'glob:file*'
91 $ hg resolve --mark 'glob:file*'
92 (no more unresolved files -- run "hg resolve --all" to conclude)
92 (no more unresolved files -- run "hg resolve --all" to conclude)
93 $ hg resolve --list
93 $ hg resolve --list
94 D file1
94 D file1
95 R file2
95 R file2
96 $ hg resolve --unmark file1
96 $ hg resolve --unmark file1
97 not unmarking file1 as it is driver-resolved
97 not unmarking file1 as it is driver-resolved
98 (no more unresolved files -- run "hg resolve --all" to conclude)
98 (no more unresolved files -- run "hg resolve --all" to conclude)
99 $ hg resolve --unmark --all
99 $ hg resolve --unmark --all
100 $ hg resolve --list
100 $ hg resolve --list
101 D file1
101 D file1
102 U file2
102 U file2
103 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver --unmark file1
103 $ hg --config extensions.markdriver=$TESTTMP/markdriver.py markdriver --unmark file1
104 $ hg resolve --list
104 $ hg resolve --list
105 U file1
105 U file1
106 U file2
106 U file2
107
107
108 resolve the failure
108 resolve the failure
109
109
110 $ echo resolved > file1
110 $ echo resolved > file1
111 $ hg resolve -m file1
111 $ hg resolve -m file1
112
112
113 resolve -l should show resolved file as resolved
113 resolve -l should show resolved file as resolved
114
114
115 $ hg resolve -l
115 $ hg resolve -l
116 R file1
116 R file1
117 U file2
117 U file2
118
118
119 $ hg resolve -l -Tjson
119 $ hg resolve -l -Tjson
120 [
120 [
121 {
121 {
122 "path": "file1",
122 "path": "file1",
123 "status": "R"
123 "status": "R"
124 },
124 },
125 {
125 {
126 "path": "file2",
126 "path": "file2",
127 "status": "U"
127 "status": "U"
128 }
128 }
129 ]
129 ]
130
130
131 resolve -m without paths should mark all resolved
131 resolve -m without paths should mark all resolved
132
132
133 $ hg resolve -m
133 $ hg resolve -m
134 (no more unresolved files)
134 (no more unresolved files)
135 $ hg commit -m 'resolved'
135 $ hg commit -m 'resolved'
136
136
137 resolve -l should be empty after commit
137 resolve -l should be empty after commit
138
138
139 $ hg resolve -l
139 $ hg resolve -l
140
140
141 $ hg resolve -l -Tjson
141 $ hg resolve -l -Tjson
142 [
142 [
143 ]
143 ]
144
144
145 resolve --all should abort when no merge in progress
145 resolve --all should abort when no merge in progress
146
146
147 $ hg resolve --all
147 $ hg resolve --all
148 abort: resolve command not applicable when not merging
148 abort: resolve command not applicable when not merging
149 [255]
149 [255]
150
150
151 resolve -m should abort when no merge in progress
151 resolve -m should abort when no merge in progress
152
152
153 $ hg resolve -m
153 $ hg resolve -m
154 abort: resolve command not applicable when not merging
154 abort: resolve command not applicable when not merging
155 [255]
155 [255]
156
156
157 set up conflict-free merge
157 set up conflict-free merge
158
158
159 $ hg up -qC 3
159 $ hg up -qC 3
160 $ hg merge 1
160 $ hg merge 1
161 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
161 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
162 (branch merge, don't forget to commit)
162 (branch merge, don't forget to commit)
163
163
164 resolve --all should do nothing in merge without conflicts
164 resolve --all should do nothing in merge without conflicts
165 $ hg resolve --all
165 $ hg resolve --all
166 (no more unresolved files)
166 (no more unresolved files)
167
167
168 resolve -m should do nothing in merge without conflicts
168 resolve -m should do nothing in merge without conflicts
169
169
170 $ hg resolve -m
170 $ hg resolve -m
171 (no more unresolved files)
171 (no more unresolved files)
172
172
173 get back to conflicting state
173 get back to conflicting state
174
174
175 $ hg up -qC 2
175 $ hg up -qC 2
176 $ hg merge --tool=internal:fail 1
176 $ hg merge --tool=internal:fail 1
177 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
177 0 files updated, 0 files merged, 0 files removed, 2 files unresolved
178 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
178 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
179 [1]
179 [1]
180
180
181 resolve without arguments should suggest --all
181 resolve without arguments should suggest --all
182 $ hg resolve
182 $ hg resolve
183 abort: no files or directories specified
183 abort: no files or directories specified
184 (use --all to re-merge all unresolved files)
184 (use --all to re-merge all unresolved files)
185 [255]
185 [255]
186
186
187 resolve --all should re-merge all unresolved files
187 resolve --all should re-merge all unresolved files
188 $ hg resolve --all
188 $ hg resolve --all
189 merging file1
189 merging file1
190 merging file2
190 merging file2
191 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
191 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
192 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
192 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
193 [1]
193 [1]
194 $ cat file1.orig
194 $ cat file1.orig
195 foo
195 foo
196 baz
196 baz
197 $ cat file2.orig
197 $ cat file2.orig
198 foo
198 foo
199 baz
199 baz
200
200
201 .orig files should exists where specified
201 .orig files should exists where specified
202 $ hg resolve --all --verbose --config 'ui.origbackuppath=.hg/origbackups'
202 $ hg resolve --all --verbose --config 'ui.origbackuppath=.hg/origbackups'
203 merging file1
203 merging file1
204 creating directory: $TESTTMP/repo/.hg/origbackups (glob)
204 creating directory: $TESTTMP/repo/.hg/origbackups (glob)
205 merging file2
205 merging file2
206 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
206 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
207 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
207 warning: conflicts while merging file2! (edit, then use 'hg resolve --mark')
208 [1]
208 [1]
209 $ ls .hg/origbackups
209 $ ls .hg/origbackups
210 file1.orig
210 file1.orig
211 file2.orig
211 file2.orig
212 $ grep '<<<' file1 > /dev/null
212 $ grep '<<<' file1 > /dev/null
213 $ grep '<<<' file2 > /dev/null
213 $ grep '<<<' file2 > /dev/null
214
214
215 resolve <file> should re-merge file
215 resolve <file> should re-merge file
216 $ echo resolved > file1
216 $ echo resolved > file1
217 $ hg resolve -q file1
217 $ hg resolve -q file1
218 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
218 warning: conflicts while merging file1! (edit, then use 'hg resolve --mark')
219 [1]
219 [1]
220 $ grep '<<<' file1 > /dev/null
220 $ grep '<<<' file1 > /dev/null
221
221
222 resolve <file> should do nothing if 'file' was marked resolved
222 resolve <file> should do nothing if 'file' was marked resolved
223 $ echo resolved > file1
223 $ echo resolved > file1
224 $ hg resolve -m file1
224 $ hg resolve -m file1
225 $ hg resolve -q file1
225 $ hg resolve -q file1
226 $ cat file1
226 $ cat file1
227 resolved
227 resolved
228
228
229 test crashed merge with empty mergestate
229 test crashed merge with empty mergestate
230
230
231 $ hg up -qC 1
231 $ hg up -qC 1
232 $ mkdir .hg/merge
232 $ mkdir .hg/merge
233 $ touch .hg/merge/state
233 $ touch .hg/merge/state
234
234
235 resolve -l should be empty
235 resolve -l should be empty
236
236
237 $ hg resolve -l
237 $ hg resolve -l
238
238
239 $ cd ..
239 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now