Mercurial > hg
changeset 26223:ed12abab068e
simplemerge: enable option to resolve conflicts one way
With this change, the simplemerge algorithm grows an option to only
return the local or the other hunk in a conflicting region.
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Wed, 12 Aug 2015 08:53:01 -0400 |
parents | 3095b1027661 |
children | a4da463df6cf |
files | mercurial/simplemerge.py |
diffstat | 1 files changed, 25 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/simplemerge.py Wed Aug 26 16:27:14 2015 -0500 +++ b/mercurial/simplemerge.py Wed Aug 12 08:53:01 2015 -0400 @@ -90,7 +90,8 @@ start_marker='<<<<<<<', mid_marker='=======', end_marker='>>>>>>>', - base_marker=None): + base_marker=None, + localorother=None): """Return merge in cvs-like form. """ self.conflicts = False @@ -119,21 +120,28 @@ for i in range(t[1], t[2]): yield self.b[i] elif what == 'conflict': - self.conflicts = True - if start_marker is not None: - yield start_marker + newline - for i in range(t[3], t[4]): - yield self.a[i] - if base_marker is not None: - yield base_marker + newline - for i in range(t[1], t[2]): - yield self.base[i] - if mid_marker is not None: - yield mid_marker + newline - for i in range(t[5], t[6]): - yield self.b[i] - if end_marker is not None: - yield end_marker + newline + if localorother == 'local': + for i in range(t[3], t[4]): + yield self.a[i] + elif localorother == 'other': + for i in range(t[5], t[6]): + yield self.b[i] + else: + self.conflicts = True + if start_marker is not None: + yield start_marker + newline + for i in range(t[3], t[4]): + yield self.a[i] + if base_marker is not None: + yield base_marker + newline + for i in range(t[1], t[2]): + yield self.base[i] + if mid_marker is not None: + yield mid_marker + newline + for i in range(t[5], t[6]): + yield self.b[i] + if end_marker is not None: + yield end_marker + newline else: raise ValueError(what) @@ -390,7 +398,7 @@ out = sys.stdout m3 = Merge3Text(basetext, localtext, othertext) - extrakwargs = {} + extrakwargs = {"localorother": opts.get("localorother", None)} if mode == 'union': extrakwargs['start_marker'] = None extrakwargs['mid_marker'] = None