[PATCH 5 of 5 mergedriver V2] merge.mergestate: compute dirstate action

Martin von Zweigbergk martinvonz at google.com
Thu Nov 19 15:22:27 CST 2015


These are pushed to the clowncopter, thanks!

On Thu, Nov 19, 2015 at 10:57 AM Siddharth Agarwal <sid0 at fb.com> wrote:

> # HG changeset patch
> # User Siddharth Agarwal <sid0 at fb.com>
> # Date 1447959002 28800
> #      Thu Nov 19 10:50:02 2015 -0800
> # Node ID 0ce719f9080e9dccb02929b675a14f1b36bf74f4
> # Parent  5ac34a97b978556e38e2e264ecefb7e903e98c16
> # Available At http://42.netv6.net/sid0-wip/hg/
> #              hg pull http://42.netv6.net/sid0-wip/hg/ -r 0ce719f9080e
> merge.mergestate: compute dirstate action
>
> In upcoming patches we're going to queue these actions up to be applied to
> the
> dirstate at the end.
>
> diff --git a/mercurial/merge.py b/mercurial/merge.py
> --- a/mercurial/merge.py
> +++ b/mercurial/merge.py
> @@ -410,7 +410,7 @@ class mergestate(object):
>      def _resolve(self, preresolve, dfile, wctx, labels=None):
>          """rerun merge process for file path `dfile`"""
>          if self[dfile] in 'rd':
> -            return True, 0
> +            return True, 0, None
>          stateentry = self._state[dfile]
>          state, hash, lfile, afile, anode, ofile, onode, flags = stateentry
>          octx = self._repo[self._other]
> @@ -445,19 +445,35 @@ class mergestate(object):
>              self._dirty = True
>          elif not r:
>              self.mark(dfile, 'r')
> -        return complete, r
> +
> +        action = None
> +        if complete:
> +            if deleted:
> +                if not fcd.isabsent(): # cd: remote picked (or otherwise
> deleted)
>

test-check-code-hg.t did not like the long line, so I moved the comment to
the next line.


> +                    action = 'r'
> +                # else: dc: local picked (no action necessary)
> +            else:
> +                if fcd.isabsent(): # dc: remote picked
> +                    action = 'g'
> +                elif fco.isabsent(): # cd: local picked
> +                    action = 'a'
> +                # else: regular merges (no action necessary)
> +
> +        return complete, r, action
>
>      def preresolve(self, dfile, wctx, labels=None):
>          """run premerge process for dfile
>
>          Returns whether the merge is complete, and the exit code."""
> -        return self._resolve(True, dfile, wctx, labels=labels)
> +        complete, r, action = self._resolve(True, dfile, wctx,
> labels=labels)
> +        return complete, r
>
>      def resolve(self, dfile, wctx, labels=None):
>          """run merge process (assuming premerge was run) for dfile
>
>          Returns the exit code of the merge."""
> -        return self._resolve(False, dfile, wctx, labels=labels)[1]
> +        complete, r, action = self._resolve(False, dfile, wctx,
> labels=labels)
> +        return r
>
>  def _checkunknownfile(repo, wctx, mctx, f, f2=None):
>      if f2 is None:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20151119/32b530c0/attachment.html>


More information about the Mercurial-devel mailing list