@@ -571,8 +571,11 @@ def manifestmerge(repo, wctx, p2, pa, br
return actions
+actionpriority = dict((m, p) for p, m in enumerate(
+ ['r', 'f', 'g', 'a', 'k', 'm', 'dm', 'dg', 'dr', 'cd', 'dc', 'rd', 'e']))
+
def actionkey(a):
- return a[1] in "rf" and -1 or 0, a
+ return actionpriority[a[1]], a
def getremove(repo, mctx, overwrite, args):
"""apply usually-non-interactive updates to the working directory
@@ -848,16 +851,16 @@ def recordupdates(repo, actions, branchm
for a in actions:
f, m, args, msg = a
- if m == "r": # remove
+ if m == "r": # remove (must come first)
if branchmerge:
repo.dirstate.remove(f)
else:
repo.dirstate.drop(f)
+ elif m == "f": # forget (must come first)
+ repo.dirstate.drop(f)
elif m == "a": # re-add
if not branchmerge:
repo.dirstate.add(f)
- elif m == "f": # forget
- repo.dirstate.drop(f)
elif m == "e": # exec change
repo.dirstate.normallookup(f)
elif m == "k": # keep
@@ -150,8 +150,8 @@ Graft out of order, skipping a merge and
resolving manifests
branchmerge: True, force: True, partial: False
ancestor: 4c60f11aa304, local: 6b9e5368ca4e+, remote: 97f8bfe72746
+ e: remote is newer -> g
b: keep -> k
- e: remote is newer -> g
getting e
updating: e 1/1 files (100.00%)
e
@@ -160,8 +160,8 @@ Graft out of order, skipping a merge and
resolving manifests
branchmerge: True, force: True, partial: False
ancestor: 4c60f11aa304, local: 1905859650ec+, remote: 9c233e8e184d
+ d: remote is newer -> g
b: keep -> k
- d: remote is newer -> g
e: versions differ -> m
preserving e for resolve of e
getting d
@@ -196,8 +196,8 @@ The other way around:
f2: picking 'get' action
end of auction
+ f2: remote is newer -> g
f1: keep -> k
- f2: remote is newer -> g
getting f2
updating: f2 1/1 files (100.00%)
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -36,22 +36,22 @@
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: af1939970a1c, local: 044f8520aeeb+, remote: 85c198ef2f6c
- a2: divergent renames -> dr
+ b2: remote created -> g
b: remote moved from a -> m
preserving a for resolve of b
- b2: remote created -> g
+ a2: divergent renames -> dr
removing a
getting b2
updating: b2 1/3 files (33.33%)
- updating: a2 2/3 files (66.67%)
- note: possible conflict - a2 was renamed multiple times to:
- c2
- b2
- updating: b 3/3 files (100.00%)
+ updating: b 2/3 files (66.67%)
picked tool 'internal:merge' for b (binary False symlink False)
merging a and b to b
my b@044f8520aeeb+ other b@85c198ef2f6c ancestor a@af1939970a1c
premerge successful
+ updating: a2 3/3 files (100.00%)
+ note: possible conflict - a2 was renamed multiple times to:
+ c2
+ b2
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
@@ -181,8 +181,8 @@ Check for issue3074
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 19d7f95df299, local: 0084274f6b67+, remote: 5d32493049f0
+ newfile: remote created -> g
file: rename and delete -> rd
- newfile: remote created -> g
getting newfile
updating: newfile 1/2 files (50.00%)
updating: file 2/2 files (100.00%)
@@ -379,20 +379,20 @@ m "um a c" "um x c" " " "10 do merg
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 924404dff337, local: 02963e448370+, remote: fe905ef2c33e
- a: divergent renames -> dr
c: remote created -> g
rev: versions differ -> m
preserving rev for resolve of rev
+ a: divergent renames -> dr
getting c
updating: c 1/3 files (33.33%)
- updating: a 2/3 files (66.67%)
+ updating: rev 2/3 files (66.67%)
+ picked tool 'python ../merge' for rev (binary False symlink False)
+ merging rev
+ my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
+ updating: a 3/3 files (100.00%)
note: possible conflict - a was renamed multiple times to:
b
c
- updating: rev 3/3 files (100.00%)
- picked tool 'python ../merge' for rev (binary False symlink False)
- merging rev
- my rev@02963e448370+ other rev@fe905ef2c33e ancestor rev@924404dff337
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
--------------
@@ -746,9 +746,9 @@ m "nm a b" "um x a" " " "22 get a,
resolving manifests
branchmerge: True, force: False, partial: False
ancestor: 924404dff337, local: 02963e448370+, remote: 2b958612230f
+ c: remote created -> g
b: local copied/moved from a -> m
preserving b for resolve of b
- c: remote created -> g
rev: versions differ -> m
preserving rev for resolve of rev
getting c
@@ -836,6 +836,7 @@ 8 f (f) f f "remote differs from
ancestor: e6cb3cf11019, local: ec44bf929ab5+, remote: c62e34d0b898
remote changed 8/f which local deleted
use (c)hanged version or leave (d)eleted? c
+ 8/f: prompt recreating -> g
0/f: versions differ -> m
preserving 0/f for resolve of 0/f
1/g: versions differ -> m
@@ -856,7 +857,6 @@ 8 f (f) f f "remote differs from
preserving 6/g for resolve of 6/g
7/f: remote differs from untracked local -> m
preserving 7/f for resolve of 7/f
- 8/f: prompt recreating -> g
removing 4/f
getting 8/f
$ hg mani
@@ -46,9 +46,9 @@
resolving manifests
branchmerge: False, force: False, partial: False
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
+ b: remote created -> g
a: versions differ -> m
preserving a for resolve of a
- b: remote created -> g
getting b
updating: b 1/2 files (50.00%)
updating: a 2/2 files (100.00%)
@@ -100,9 +100,9 @@
resolving manifests
branchmerge: False, force: False, partial: False
ancestor: c19d34741b0a, local: c19d34741b0a+, remote: 1e71731e6fbb
+ b: remote created -> g
a: versions differ -> m
preserving a for resolve of a
- b: remote created -> g
getting b
updating: b 1/2 files (50.00%)
updating: a 2/2 files (100.00%)