# HG changeset patch # User Durham Goode # Date 1399593263 25200 # Node ID 47b97d9af27e0c521b11c8f9464a2d037851f827 # Parent 9fb6f328576ac4e38f4e5071c4d669a6ceb3a76e 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 -r 9fb6f328576a -r 47b97d9af27e hgext/largefiles/overrides.py --- a/hgext/largefiles/overrides.py Tue Apr 22 13:32:05 2014 -0700 +++ b/hgext/largefiles/overrides.py Thu May 08 16:54:23 2014 -0700 @@ -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 -r 9fb6f328576a -r 47b97d9af27e mercurial/filemerge.py --- a/mercurial/filemerge.py Tue Apr 22 13:32:05 2014 -0700 +++ b/mercurial/filemerge.py Thu May 08 16:54:23 2014 -0700 @@ -300,6 +300,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. @@ -318,7 +320,7 @@ 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 @@ 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, diff -r 9fb6f328576a -r 47b97d9af27e mercurial/merge.py --- a/mercurial/merge.py Tue Apr 22 13:32:05 2014 -0700 +++ b/mercurial/merge.py Thu May 08 16:54:23 2014 -0700 @@ -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] @@ -629,7 +630,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 @@ -734,7 +735,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: @@ -990,7 +991,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 @@ -1170,7 +1171,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)