# HG changeset patch # User Gábor Stefanik <gabor.stefa...@nng.com> # Date 1522848489 -7200 # Wed Apr 04 15:28:09 2018 +0200 # Node ID d72ca973100a1f1a4451a7d1efdc3e43ebc2912e # Parent 656ac240f39284eec4435d25c01d71056aa4e8a5 copies: create and use _loose_next function for _related
_loose_next 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 d72ca973100a mercurial/copies.py --- a/mercurial/copies.py Sat Mar 24 01:30:50 2018 -0400 +++ b/mercurial/copies.py Wed Apr 04 15:28:09 2018 +0200 @@ -731,6 +731,12 @@ return copies, {}, {}, {}, {} +def _loose_next(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 = _loose_next(g1) if f2r is None: - f2 = next(g2) + f1, g1 = _loose_next(g1) while True: f1r, f2r = f1.linkrev(), f2.linkrev() if f1r > f2r: - f1 = next(g1) + f1, g1 = _loose_next(g1) elif f2r > f1r: - f2 = next(g2) + f1, g1 = _loose_next(g1) 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