mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
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:
parent
375be90a07
commit
0ac70cfdb2
@ -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()
|
||||
|
@ -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,
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user