[PATCH 2 of 2] copies: clean up _related logic

Yuya Nishihara yuya at tcha.org
Thu Apr 5 08:57:01 EDT 2018


On Wed, 04 Apr 2018 15:35:34 +0200, Gábor Stefanik wrote:
> # HG changeset patch
> # User Gábor Stefanik <gabor.stefanik at nng.com>
> # Date 1522848882 -7200
> #      Wed Apr 04 15:34:42 2018 +0200
> # Node ID 084ee003f2f3cb4d51129c4f1bb63e1ff4db14d0
> # Parent  d72ca973100a1f1a4451a7d1efdc3e43ebc2912e
> copies: clean up _related logic
> 
> The limit parameter was never actually used, since the only way the 4th case
> could be reached was if f1r and f2r converged. The new code makes this clear,
> and additionally reduces the conditional block to just 3 cases.

Yeah. I suspect the limit should be tested first, but doing that breaks
some tests. So, perhaps we have to handle the case of f.linkrev() < anc.rev()
anyway.

> diff -r d72ca973100a -r 084ee003f2f3 mercurial/copies.py
> --- a/mercurial/copies.py       Wed Apr 04 15:28:09 2018 +0200
> +++ b/mercurial/copies.py       Wed Apr 04 15:34:42 2018 +0200
> @@ -737,7 +737,7 @@
>      except StopIteration:
>          raise
> 
> -def _related(f1, f2, limit):
> +def _related(f1, f2):

There's one more caller of _related().

> @@ -764,10 +764,8 @@
>                  f1, g1 = _loose_next(g1)
>              elif f2r > f1r:
>                  f1, g1 = _loose_next(g1)
> -            elif f1 == f2:
> -                return f1 # a match
> -            elif f1r == f2r or f1r < limit or f2r < limit:
> -                return False # copy no longer relevant
> +            else: # f1 and f2 point to files in the same linkrev
> +                return f1 == f2 # true if they point to the same file


More information about the Mercurial-devel mailing list