192 def debug(s, msg, r=""): |
192 def debug(s, msg, r=""): |
193 if r: |
193 if r: |
194 r = "%s:%s:%s" % r |
194 r = "%s:%s:%s" % r |
195 repo.ui.debug(" subrepo %s: %s %s\n" % (s, msg, r)) |
195 repo.ui.debug(" subrepo %s: %s %s\n" % (s, msg, r)) |
196 |
196 |
|
197 promptssrc = filemerge.partextras(labels) |
197 for s, l in sorted(s1.iteritems()): |
198 for s, l in sorted(s1.iteritems()): |
|
199 prompts = None |
198 a = sa.get(s, nullstate) |
200 a = sa.get(s, nullstate) |
199 ld = l # local state with possible dirty flag for compares |
201 ld = l # local state with possible dirty flag for compares |
200 if wctx.sub(s).dirty(): |
202 if wctx.sub(s).dirty(): |
201 ld = (l[0], l[1] + "+") |
203 ld = (l[0], l[1] + "+") |
202 if wctx == actx: # overwrite |
204 if wctx == actx: # overwrite |
203 a = ld |
205 a = ld |
204 |
206 |
|
207 prompts = promptssrc.copy() |
|
208 prompts['s'] = s |
205 if s in s2: |
209 if s in s2: |
206 prompts = filemerge.partextras(labels) |
|
207 prompts['s'] = s |
|
208 r = s2[s] |
210 r = s2[s] |
209 if ld == r or r == a: # no change or local is newer |
211 if ld == r or r == a: # no change or local is newer |
210 sm[s] = l |
212 sm[s] = l |
211 continue |
213 continue |
212 elif ld == a: # other side changed |
214 elif ld == a: # other side changed |
265 '$$ &Changed $$ &Delete') % prompts, 0): |
267 '$$ &Changed $$ &Delete') % prompts, 0): |
266 debug(s, "prompt remove") |
268 debug(s, "prompt remove") |
267 wctx.sub(s).remove() |
269 wctx.sub(s).remove() |
268 |
270 |
269 for s, r in sorted(s2.items()): |
271 for s, r in sorted(s2.items()): |
|
272 prompts = None |
270 if s in s1: |
273 if s in s1: |
271 continue |
274 continue |
272 elif s not in sa: |
275 elif s not in sa: |
273 debug(s, "remote added, get", r) |
276 debug(s, "remote added, get", r) |
274 mctx.sub(s).get(r) |
277 mctx.sub(s).get(r) |
275 sm[s] = r |
278 sm[s] = r |
276 elif r != sa[s]: |
279 elif r != sa[s]: |
|
280 prompts = promptssrc.copy() |
|
281 prompts['s'] = s |
277 if repo.ui.promptchoice( |
282 if repo.ui.promptchoice( |
278 _(' remote%(o)s changed subrepository %(s)s' |
283 _(' remote%(o)s changed subrepository %(s)s' |
279 ' which local%(l)s removed\n' |
284 ' which local%(l)s removed\n' |
280 'use (c)hanged version or (d)elete?' |
285 'use (c)hanged version or (d)elete?' |
281 '$$ &Changed $$ &Delete') % prompts, 0) == 0: |
286 '$$ &Changed $$ &Delete') % prompts, 0) == 0: |