[PATCH 2 of 2] repair: combine two loops over changelog revisions
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Wed Jan 4 14:06:55 EST 2017
On 01/04/2017 07:52 PM, Martin von Zweigbergk via Mercurial-devel wrote:
> # HG changeset patch
> # User Martin von Zweigbergk <martinvonz at 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.
I would vaguely assume that strip is enforcing it run on an unfiltered
changelog, but can you double check that? (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 at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
>
--
Pierre-Yves David
More information about the Mercurial-devel
mailing list