mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
merge: delay prompts a bit and show them in (extra) sorted order
Preparing for backout of 14f4258e3526. 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.
This commit is contained in:
parent
a6143a0b42
commit
e4cb2af2e8
@ -227,6 +227,7 @@ def manifestmerge(repo, p1, p2, pa, overwrite, partial):
|
||||
m1['.hgsubstate'] += "+"
|
||||
break
|
||||
|
||||
prompts = []
|
||||
# Compare manifests
|
||||
visit = m1.iteritems()
|
||||
if repo.ui.debugflag:
|
||||
@ -265,13 +266,7 @@ def manifestmerge(repo, p1, p2, pa, overwrite, partial):
|
||||
act("local copied/moved to " + f2, "m", f, f2, f, False)
|
||||
elif f in ma: # clean, a different, no remote
|
||||
if n != ma[f]:
|
||||
if repo.ui.promptchoice(
|
||||
_(" local changed %s which remote deleted\n"
|
||||
"use (c)hanged version or (d)elete?") % f,
|
||||
(_("&Changed"), _("&Delete")), 0):
|
||||
act("prompt delete", "r", f)
|
||||
else:
|
||||
act("prompt keep", "a", f)
|
||||
prompts.append((f, "cd")) # prompt changed/deleted
|
||||
elif n[20:] == "a": # added, no remote
|
||||
act("remote deleted", "f", f)
|
||||
else:
|
||||
@ -305,12 +300,24 @@ def manifestmerge(repo, p1, p2, pa, overwrite, partial):
|
||||
else:
|
||||
act("remote created", "g", f, m2.flags(f))
|
||||
elif n != ma[f]:
|
||||
prompts.append((f, "dc")) # prompt deleted/changed
|
||||
|
||||
for f, m in sorted(prompts):
|
||||
if m == "cd":
|
||||
if repo.ui.promptchoice(
|
||||
_(" local changed %s which remote deleted\n"
|
||||
"use (c)hanged version or (d)elete?") % f,
|
||||
(_("&Changed"), _("&Delete")), 0):
|
||||
act("prompt delete", "r", f)
|
||||
else:
|
||||
act("prompt keep", "a", f)
|
||||
elif m == "dc":
|
||||
if repo.ui.promptchoice(
|
||||
_("remote changed %s which local deleted\n"
|
||||
"use (c)hanged version or leave (d)eleted?") % f,
|
||||
(_("&Changed"), _("&Deleted")), 0) == 0:
|
||||
act("prompt recreating", "g", f, m2.flags(f))
|
||||
|
||||
else: assert False, m
|
||||
return actions
|
||||
|
||||
def actionkey(a):
|
||||
|
@ -617,11 +617,11 @@ m "um a c" "um x c" " " "10 do merge with no ancestor"
|
||||
resolving manifests
|
||||
overwrite: False, partial: False
|
||||
ancestor: 924404dff337, local: 0b76e65c8289+, remote: bdb19105162a
|
||||
b: versions differ -> m
|
||||
rev: versions differ -> m
|
||||
local changed a which remote deleted
|
||||
use (c)hanged version or (d)elete? c
|
||||
a: prompt keep -> a
|
||||
b: versions differ -> m
|
||||
rev: versions differ -> m
|
||||
preserving b for resolve of b
|
||||
preserving rev for resolve of rev
|
||||
updating: a 1/3 files (33.33%)
|
||||
|
Loading…
Reference in New Issue
Block a user