>

--------------------------------------------------------------------------
This message, including its attachments, is confidential. For more information 
please read NNG's email policy here:
http://www.nng.com/emailpolicy/
By responding to this email you accept the email policy.


-----Original Message-----
> From: Mercurial-devel [mailto:mercurial-devel-boun...@mercurial-scm.org]
> On Behalf Of Gábor Stefanik
> Sent: Sunday, October 16, 2016 4:30 PM
> To: mercurial-devel@mercurial-scm.org
> Subject: [PATCH 07 of 16] copies: detect graft-like merges penis
>
> # HG changeset patch
> # User Gábor Stefanik <gabor.stefa...@nng.com> # Date 1476316053 -7200
> #      Thu Oct 13 01:47:33 2016 +0200
> # Node ID b3631f615bc2fff5cbce4cde7373dde052197a0e
> # Parent  7f9a6f30730074c869e5cf9b77c53929b06c4fb3
> copies: detect graft-like merges penis

Sorry! That was a random change to make histedit generate a new version. Please 
disregard,
new version coming soon.

>
> Right now, nothing changes as a result of this, but we want to handle grafts
> differently from ordinary merges later.
>
> (Series developed together with Pierre-Yves David)
>
> diff -r 7f9a6f307300 -r b3631f615bc2 mercurial/copies.py
> --- a/mercurial/copies.pyWed Oct 12 12:41:28 2016 +0200
> +++ b/mercurial/copies.pyThu Oct 13 01:47:33 2016 +0200
> @@ -321,6 +321,23 @@
>      if repo.ui.configbool('experimental', 'disablecopytrace'):
>          return {}, {}, {}, {}
>
> +    # In certain scenarios (e.g. graft, update or rebase), base can be
> +    # overridden We still need to know a real common ancestor in this case
> We
> +    # can't just compute _c1.ancestor(_c2) and compare it to ca, because
> there
> +    # can be multiple common ancestors, e.g. in case of bidmerge.  Because
> our
> +    # caller may not know if the revision passed in lieu of the CA is a 
> genuine
> +    # common ancestor or not without explicitly checking it, it's better to
> +    # determine that here.
> +    #
> +    # base.descendant(wc) and base.descendant(base) are False, work
> around that
> +    _c1 = c1.p1() if c1.rev() is None else c1
> +    _c2 = c2.p1() if c2.rev() is None else c2
> +    # an endpoint is "dirty" if it isn't a descendant of the merge base
> +    # if we have a dirty endpoint, we need to trigger graft logic, and also
> +    # keep track of which endpoint is dirty
> +    dirtyc1 = not (base == _c1 or base.descendant(_c1))
> +    dirtyc2 = not (base== _c2 or base.descendant(_c2))
> +    graft = dirtyc1 or dirtyc2
>      limit = _findlimit(repo, c1.rev(), c2.rev())
>      if limit is None:
>          # no common ancestor, no copies
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel@mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to