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.
This commit is contained in:
Durham Goode 2014-05-08 16:54:23 -07:00
parent 375be90a07
commit 0ac70cfdb2
3 changed files with 16 additions and 11 deletions

View File

@ -452,9 +452,9 @@ def overridecalculateupdates(origfn, repo, p1, p2, pas, branchmerge, force,
# 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()

View File

@ -300,6 +300,8 @@ _defaultconflictmarker = ('{node|short} ' +
'{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.
@ -318,7 +320,7 @@ def _formatlabels(repo, fcd, fco, labels):
return [_formatconflictmarker(repo, cd, tmpl, labels[0], pad),
_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
@ -376,10 +378,12 @@ def filemerge(repo, mynode, orig, fcd, fco, fca):
ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))
markerstyle = ui.config('ui', 'mergemarkers', 'detailed')
labels = ['local', 'other']
if markerstyle == 'basic':
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,

View File

@ -264,7 +264,7 @@ class mergestate(object):
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 @@ class mergestate(object):
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]
@ -629,7 +630,7 @@ def batchget(repo, mctx, actions):
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
@ -734,7 +735,7 @@ def applyupdates(repo, actions, wctx, mctx, overwrite):
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:
@ -990,7 +991,7 @@ def recordupdates(repo, actions, branchmerge):
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
@ -1170,7 +1171,7 @@ def update(repo, node, branchmerge, force, partial, ancestor=None,
# 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)