From patchwork Sat May 10 02:48:09 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2, of, 5, V2] merge: add labels parameter from merge.update to filemerge From: Durham Goode X-Patchwork-Id: 4698 Message-Id: <72a14d81d73869c88a1d.1399690089@dev2000.prn2.facebook.com> To: Date: Fri, 9 May 2014 19:48:09 -0700 # HG changeset patch # User Durham Goode # Date 1399593263 25200 # Thu May 08 16:54:23 2014 -0700 # Node ID 72a14d81d73869c88a1d1c857ee6cc57606d9bf0 # Parent b2bd6cb822bae0e27593103aa63cc2bb46b48532 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 @@ -312,7 +312,7 @@ getmarker(labels[1], co), ] -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 @@ -369,7 +369,8 @@ ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca)) - labels = ['local', 'other'] + if not labels: + labels = ['local', 'other'] formattedlabels = _formatlabels(repo, fcd, fco, labels) needcheck, r = func(repo, mynode, orig, fcd, fco, fca, toolconf, (a, b, c, back), labels=formattedlabels) 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)