On Wed, Jan 4, 2017 at 11:06 AM, Pierre-Yves David <pierre-yves.da...@ens-lyon.org> wrote: > > > On 01/04/2017 07:52 PM, Martin von Zweigbergk via Mercurial-devel wrote: >> >> # HG changeset patch >> # User Martin von Zweigbergk <martinv...@google.com> >> # Date 1483554904 28800 >> # Wed Jan 04 10:35:04 2017 -0800 >> # Node ID c9c5864ddd54b240692a2712d59227c9d4ca2f99 >> # Parent acf0037a9a5bb14603bb50c57822d4ab5896e5b5 >> repair: combine two loops over changelog revisions >> >> This just saves a few lines. > > > Beware that cl.revs(start) might be different from > xrange(start, len(cl)) if filtering come into play.
Good point. > > I would vaguely assume that strip is enforcing it run on an unfiltered > changelog, but can you double check that? Yep, about 20 lines up, you'll find these two lines: repo = repo.unfiltered() [...] cl = repo.changelog > (In particular, it is suspicious > that we have a difference here why would we have move of the call to > cl.revs(…) and not the other one ?) > If not already the case, It is probably worth dropping an assert+comment > (or a ProgrammingError) to protect that assertion. > > Cheers, > > >> diff -r acf0037a9a5b -r c9c5864ddd54 mercurial/repair.py >> --- a/mercurial/repair.py Wed Jan 04 10:07:12 2017 -0800 >> +++ b/mercurial/repair.py Wed Jan 04 10:35:04 2017 -0800 >> @@ -91,6 +91,9 @@ >> striplist = [cl.rev(node) for node in nodelist] >> striprev = min(striplist) >> >> + files = _collectfiles(repo, striprev) >> + saverevs = _collectbrokencsets(repo, files, striprev) >> + >> # Some revisions with rev > striprev may not be descendants of >> striprev. >> # We have to find these revisions and put them in a bundle, so that >> # we can restore them after the truncations. >> @@ -99,16 +102,11 @@ >> # (head = revision in the set that has no descendant in the set; >> # base = revision in the set that has no ancestor in the set) >> tostrip = set(striplist) >> + saveheads = set(saverevs) >> for r in cl.revs(start=striprev + 1): >> if any(p in tostrip for p in cl.parentrevs(r)): >> tostrip.add(r) >> >> - files = _collectfiles(repo, striprev) >> - saverevs = _collectbrokencsets(repo, files, striprev) >> - >> - # compute heads >> - saveheads = set(saverevs) >> - for r in xrange(striprev + 1, len(cl)): >> if r not in tostrip: >> saverevs.add(r) >> saveheads.difference_update(cl.parentrevs(r)) >> _______________________________________________ >> Mercurial-devel mailing list >> Mercurial-devel@mercurial-scm.org >> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel >> > > -- > Pierre-Yves David _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel