[PATCH 2 of 5 V3] merge: add labels parameter from merge.update to filemerge
Durham Goode
durham at fb.com
Tue May 13 00:47:34 UTC 2014
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1399593263 25200
# Thu May 08 16:54:23 2014 -0700
# Node ID 20a401c6feed49f6597e76789b055b0e84b20265
# Parent 09732bdb2784d9402e278c36406819a98919c2ca
merge: add labels parameter from merge.update to filemerge
Adds a labels function parameter to all the functions between merge.update and
filemerge.filemerge. This will allow commands like rebase to specify custom
marker labels.
diff --git a/hgext/largefiles/overrides.py b/hgext/largefiles/overrides.py
--- a/hgext/largefiles/overrides.py
+++ b/hgext/largefiles/overrides.py
@@ -452,9 +452,9 @@
# Override filemerge to prompt the user about how they wish to merge
# largefiles. This will handle identical edits without prompting the user.
-def overridefilemerge(origfn, repo, mynode, orig, fcd, fco, fca):
+def overridefilemerge(origfn, repo, mynode, orig, fcd, fco, fca, labels=None):
if not lfutil.isstandin(orig):
- return origfn(repo, mynode, orig, fcd, fco, fca)
+ return origfn(repo, mynode, orig, fcd, fco, fca, labels=labels)
ahash = fca.data().strip().lower()
dhash = fcd.data().strip().lower()
diff --git a/mercurial/filemerge.py b/mercurial/filemerge.py
--- a/mercurial/filemerge.py
+++ b/mercurial/filemerge.py
@@ -295,6 +295,8 @@
'{ifeq(branch, "default", "", "{branch} ")}' +
'- {author|user}: "{desc|firstline}"')
+_defaultconflictlabels = ['local', 'other']
+
def _formatlabels(repo, fcd, fco, labels):
"""Formats the given labels using the conflict marker template.
@@ -316,7 +318,7 @@
_formatconflictmarker(repo, co, tmpl, labels[1], pad),
]
-def filemerge(repo, mynode, orig, fcd, fco, fca):
+def filemerge(repo, mynode, orig, fcd, fco, fca, labels=None):
"""perform a 3-way merge in the working directory
mynode = parent node before merge
@@ -373,10 +375,12 @@
ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))
- labels = ['local', 'other']
if ui.configbool('merge', 'oldconflictmarkers', False):
- formattedlabels = labels
+ formattedlabels = _defaultconflictlabels
else:
+ if not labels:
+ labels = _defaultconflictlabels
+
formattedlabels = _formatlabels(repo, fcd, fco, labels)
needcheck, r = func(repo, mynode, orig, fcd, fco, fca, toolconf,
diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -264,7 +264,7 @@
if entry[0] == 'u':
yield f
- def resolve(self, dfile, wctx):
+ def resolve(self, dfile, wctx, labels=None):
"""rerun merge process for file path `dfile`"""
if self[dfile] == 'r':
return 0
@@ -287,7 +287,8 @@
f = self._repo.opener("merge/" + hash)
self._repo.wwrite(dfile, f.read(), flags)
f.close()
- r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca)
+ r = filemerge.filemerge(self._repo, self._local, lfile, fcd, fco, fca,
+ labels=labels)
if r is None:
# no real conflict
del self._state[dfile]
@@ -610,7 +611,7 @@
if i > 0:
yield i, f
-def applyupdates(repo, actions, wctx, mctx, overwrite):
+def applyupdates(repo, actions, wctx, mctx, overwrite, labels=None):
"""apply the merge action list to the working directory
wctx is the working copy context
@@ -698,7 +699,7 @@
overwrite)
continue
audit(f)
- r = ms.resolve(f, wctx)
+ r = ms.resolve(f, wctx, labels=labels)
if r is not None and r > 0:
unresolved += 1
else:
@@ -911,7 +912,7 @@
repo.dirstate.normal(f)
def update(repo, node, branchmerge, force, partial, ancestor=None,
- mergeancestor=False):
+ mergeancestor=False, labels=None):
"""
Perform a merge between the working directory and the given node
@@ -1091,7 +1092,7 @@
# note that we're in the middle of an update
repo.vfs.write('updatestate', p2.hex())
- stats = applyupdates(repo, actions, wc, p2, overwrite)
+ stats = applyupdates(repo, actions, wc, p2, overwrite, labels=labels)
if not partial:
repo.setparents(fp1, fp2)
More information about the Mercurial-devel
mailing list