##// END OF EJS Templates
context: introduce merge.preferancestor for controlling which ancestor to pick...
Mads Kiilerich -
r21126:99b5eaf3 default
parent child Browse files
Show More
@@ -396,7 +396,7 b' class changectx(basectx):'
396
396
397 def ancestor(self, c2):
397 def ancestor(self, c2):
398 """
398 """
399 return the ancestor context of self and c2
399 return the "best" ancestor context of self and c2
400 """
400 """
401 # deal with workingctxs
401 # deal with workingctxs
402 n2 = c2._node
402 n2 = c2._node
@@ -408,10 +408,19 b' class changectx(basectx):'
408 elif len(cahs) == 1:
408 elif len(cahs) == 1:
409 anc = cahs[0]
409 anc = cahs[0]
410 else:
410 else:
411 for r in self._repo.ui.configlist('merge', 'preferancestor'):
412 ctx = changectx(self._repo, r)
413 anc = ctx.node()
414 if anc in cahs:
415 break
416 else:
411 anc = self._repo.changelog.ancestor(self._node, n2)
417 anc = self._repo.changelog.ancestor(self._node, n2)
412 self._repo.ui.status(
418 self._repo.ui.status(
413 (_("note: using %s as ancestor of %s and %s\n") %
419 (_("note: using %s as ancestor of %s and %s\n") %
414 (short(anc), short(self._node), short(n2))))
420 (short(anc), short(self._node), short(n2))) +
421 ''.join(_(" alternatively, use --config "
422 "merge.preferancestor=%s\n") %
423 short(n) for n in sorted(cahs) if n != anc))
415 return changectx(self._repo, anc)
424 return changectx(self._repo, anc)
416
425
417 def descendant(self, other):
426 def descendant(self, other):
@@ -25,6 +25,7 b' Criss cross merging'
25
25
26 $ hg up -r3
26 $ hg up -r3
27 note: using 0f6b37dbe527 as ancestor of adfe50279922 and cf89f02107e5
27 note: using 0f6b37dbe527 as ancestor of adfe50279922 and cf89f02107e5
28 alternatively, use --config merge.preferancestor=40663881a6dd
28 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
29 $ echo '6 second change' > f2
30 $ echo '6 second change' > f2
30 $ hg ci -m '6 second change f2'
31 $ hg ci -m '6 second change f2'
@@ -75,6 +76,7 b' Criss cross merging'
75
76
76 $ hg merge -v --debug --tool internal:dump 5
77 $ hg merge -v --debug --tool internal:dump 5
77 note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922
78 note: using 0f6b37dbe527 as ancestor of 3b08d01b0ab5 and adfe50279922
79 alternatively, use --config merge.preferancestor=40663881a6dd
78 searching for copies back to rev 3
80 searching for copies back to rev 3
79 resolving manifests
81 resolving manifests
80 branchmerge: True, force: False, partial: False
82 branchmerge: True, force: False, partial: False
@@ -111,4 +113,14 b' Criss cross merging'
111 ==> f2.other <==
113 ==> f2.other <==
112 2 first change
114 2 first change
113
115
116 $ hg up -qC .
117 $ hg merge -v --tool internal:dump 5 --config merge.preferancestor="null 40663881 3b08d"
118 note: using 40663881a6dd as ancestor of 3b08d01b0ab5 and adfe50279922
119 alternatively, use --config merge.preferancestor=0f6b37dbe527
120 resolving manifests
121 merging f1
122 0 files updated, 0 files merged, 0 files removed, 1 files unresolved
123 use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
124 [1]
125
114 $ cd ..
126 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now