From patchwork Fri May 9 00:33:29 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4,of,5] merge: add labels parameter from merge.update to filemerge From: Durham Goode X-Patchwork-Id: 4686 Message-Id: <75ff3fc095cae6dcf513.1399595609@dev2000.prn2.facebook.com> To: Date: Thu, 8 May 2014 17:33:29 -0700 # HG changeset patch # User Durham Goode # Date 1399593263 25200 # Thu May 08 16:54:23 2014 -0700 # Node ID 75ff3fc095cae6dcf513d424b7abb23121cc7e55 # Parent 69cf8247537f72bf864d4799270329a7ef00b04f 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 @@ -450,9 +450,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 @@ -309,7 +309,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 @@ -366,7 +366,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 @@ -244,7 +244,7 @@ self._state[dfile][0] = state self._dirty = True - 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 @@ -267,7 +267,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] @@ -590,7 +591,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 @@ -678,7 +679,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: @@ -891,7 +892,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 @@ -1071,7 +1072,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)