Submitter | Gábor Stefanik |
---|---|
Date | April 5, 2018, 3:57 p.m. |
Message ID | <7d13af1b5cd6e5c95dce.1522943861@GSTEFANIK.NavnGo.local> |
Download | mbox | patch |
Permalink | /patch/30391/ |
State | Accepted |
Headers | show |
Comments
On Thu, 05 Apr 2018 17:57:41 +0200, Gábor Stefanik wrote: > # HG changeset patch > # User Gábor Stefanik <gabor.stefanik@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 Seems fine, but please resend with the subsequent patches that will probably extend _loosenext(g).
Patch
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: