Re: [PATCH 1 of 2 v2] copies: create and use _loosenext function for _related

2018-04-06 Thread Yuya Nishihara
On Thu, 05 Apr 2018 17:57:41 +0200, Gábor Stefanik wrote:
> # HG changeset patch
> # User Gábor Stefanik 
> # Date 1522943551 -7200
> #  Thu Apr 05 17:52:31 2018 +0200
> # Node ID 7d13af1b5cd6e5c95dceefc7d905429889583c8c
> # Parent  656ac240f39284eec4435d25c01d71056aa4e8a5
> copies: create and use _loosenext function for _related
> 
> _loosenext is going to be a variant of the next function that tries to follow
> grafts and similar relationship when the regular next raises StopIteration.
> This is needed for bug 5834.
> 
> diff -r 656ac240f392 -r 7d13af1b5cd6 mercurial/copies.py
> --- a/mercurial/copies.py   Sat Mar 24 01:30:50 2018 -0400
> +++ b/mercurial/copies.py   Thu Apr 05 17:52:31 2018 +0200
> @@ -731,6 +731,12 @@
> 
>  return copies, {}, {}, {}, {}
> 
> +def _loosenext(g):
> +try:
> +return next(g), g
> +except StopIteration:
> +raise

Seems fine, but please resend with the subsequent patches that will probably
extend _loosenext(g).
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


[PATCH 1 of 2 v2] copies: create and use _loosenext function for _related

2018-04-05 Thread Gábor Stefanik
# HG changeset patch
# User Gábor Stefanik 
# Date 1522943551 -7200
#  Thu Apr 05 17:52:31 2018 +0200
# Node ID 7d13af1b5cd6e5c95dceefc7d905429889583c8c
# Parent  656ac240f39284eec4435d25c01d71056aa4e8a5
copies: create and use _loosenext function for _related

_loosenext is going to be a variant of the next function that tries to follow
grafts and similar relationship when the regular next raises StopIteration.
This is needed for bug 5834.

diff -r 656ac240f392 -r 7d13af1b5cd6 mercurial/copies.py
--- a/mercurial/copies.py   Sat Mar 24 01:30:50 2018 -0400
+++ b/mercurial/copies.py   Thu Apr 05 17:52:31 2018 +0200
@@ -731,6 +731,12 @@

 return copies, {}, {}, {}, {}

+def _loosenext(g):
+try:
+return next(g), g
+except StopIteration:
+raise
+
 def _related(f1, f2, limit):
 """return True if f1 and f2 filectx have a common ancestor

@@ -748,16 +754,16 @@
 f1r, f2r = f1.linkrev(), f2.linkrev()

 if f1r is None:
-f1 = next(g1)
+f1, g1 = _loosenext(g1)
 if f2r is None:
-f2 = next(g2)
+f2, g2 = _loosenext(g2)

 while True:
 f1r, f2r = f1.linkrev(), f2.linkrev()
 if f1r > f2r:
-f1 = next(g1)
+f1, g1 = _loosenext(g1)
 elif f2r > f1r:
-f2 = next(g2)
+f2, g2 = _loosenext(g2)
 elif f1 == f2:
 return f1 # a match
 elif f1r == f2r or f1r < limit or f2r < limit:

 This message, including its attachments, is confidential and the property of 
NNG Llc. For more information please read NNG's email policy here:
https://www.nng.com/email-policy/
By responding to this email you accept the email policy.
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel