Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 18539:cf25e4efd685
merge: delay prompts a bit and show them in (extra) sorted order
Preparing for backout of 760c0d67ce5e.
The number of prompts will for all relevant cases be significantly smaller than
the total number of files in the manifests. We can thus afford to sort the
prompts more than we can afford to sort the manifests.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 24 Jan 2013 23:57:44 +0100 |
parents | 9de9727cea53 |
children | 139529b0a191 |
comparison
equal
deleted
inserted
replaced
18538:94317c2d53b8 | 18539:cf25e4efd685 |
---|---|
225 for s in sorted(p1.substate): | 225 for s in sorted(p1.substate): |
226 if p1.sub(s).dirty(): | 226 if p1.sub(s).dirty(): |
227 m1['.hgsubstate'] += "+" | 227 m1['.hgsubstate'] += "+" |
228 break | 228 break |
229 | 229 |
230 prompts = [] | |
230 # Compare manifests | 231 # Compare manifests |
231 visit = m1.iteritems() | 232 visit = m1.iteritems() |
232 if repo.ui.debugflag: | 233 if repo.ui.debugflag: |
233 visit = sorted(visit) | 234 visit = sorted(visit) |
234 for f, n in visit: | 235 for f, n in visit: |
263 elif f in copy: | 264 elif f in copy: |
264 f2 = copy[f] | 265 f2 = copy[f] |
265 act("local copied/moved to " + f2, "m", f, f2, f, False) | 266 act("local copied/moved to " + f2, "m", f, f2, f, False) |
266 elif f in ma: # clean, a different, no remote | 267 elif f in ma: # clean, a different, no remote |
267 if n != ma[f]: | 268 if n != ma[f]: |
268 if repo.ui.promptchoice( | 269 prompts.append((f, "cd")) # prompt changed/deleted |
269 _(" local changed %s which remote deleted\n" | |
270 "use (c)hanged version or (d)elete?") % f, | |
271 (_("&Changed"), _("&Delete")), 0): | |
272 act("prompt delete", "r", f) | |
273 else: | |
274 act("prompt keep", "a", f) | |
275 elif n[20:] == "a": # added, no remote | 270 elif n[20:] == "a": # added, no remote |
276 act("remote deleted", "f", f) | 271 act("remote deleted", "f", f) |
277 else: | 272 else: |
278 act("other deleted", "r", f) | 273 act("other deleted", "r", f) |
279 | 274 |
303 act("remote differs from untracked local", | 298 act("remote differs from untracked local", |
304 "m", f, f, f, False) | 299 "m", f, f, f, False) |
305 else: | 300 else: |
306 act("remote created", "g", f, m2.flags(f)) | 301 act("remote created", "g", f, m2.flags(f)) |
307 elif n != ma[f]: | 302 elif n != ma[f]: |
303 prompts.append((f, "dc")) # prompt deleted/changed | |
304 | |
305 for f, m in sorted(prompts): | |
306 if m == "cd": | |
307 if repo.ui.promptchoice( | |
308 _(" local changed %s which remote deleted\n" | |
309 "use (c)hanged version or (d)elete?") % f, | |
310 (_("&Changed"), _("&Delete")), 0): | |
311 act("prompt delete", "r", f) | |
312 else: | |
313 act("prompt keep", "a", f) | |
314 elif m == "dc": | |
308 if repo.ui.promptchoice( | 315 if repo.ui.promptchoice( |
309 _("remote changed %s which local deleted\n" | 316 _("remote changed %s which local deleted\n" |
310 "use (c)hanged version or leave (d)eleted?") % f, | 317 "use (c)hanged version or leave (d)eleted?") % f, |
311 (_("&Changed"), _("&Deleted")), 0) == 0: | 318 (_("&Changed"), _("&Deleted")), 0) == 0: |
312 act("prompt recreating", "g", f, m2.flags(f)) | 319 act("prompt recreating", "g", f, m2.flags(f)) |
313 | 320 else: assert False, m |
314 return actions | 321 return actions |
315 | 322 |
316 def actionkey(a): | 323 def actionkey(a): |
317 return a[1] == "r" and -1 or 0, a | 324 return a[1] == "r" and -1 or 0, a |
318 | 325 |