[PATCH 1 of 2 v2] copies: create and use _loosenext function for _related
Gábor Stefanik
gabor.stefanik at nng.com
Thu Apr 5 15:57:41 UTC 2018
# HG changeset patch
# User Gábor Stefanik <gabor.stefanik at nng.com>
# 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.
More information about the Mercurial-devel
mailing list