On Thu, 2 Feb 2017 15:06:46 +0000, Jun Wu wrote: > This patch looks good to me. See inline comment about how to make it faster. > That could probably be fixed in flight. > > Excerpts from Stanislau Hlebik's message of 2017-02-02 02:57:24 -0800: > > # HG changeset patch > > # User Stanislau Hlebik <st...@fb.com> > > # Date 1486032998 28800 > > # Thu Feb 02 02:56:38 2017 -0800 > > # Node ID 13a528b72173b1228f6eeb0ffc2346e7b78d1d78 > > # Parent abf029200e198878a4576a87e095bd8d77d9cea9 > > localrepo: avoid unnecessary conversion from node to rev > > > > changelog.heads() first calls headrevs then converts them to nodes. > > localrepo.heads() then sorts them using self.changelog.rev function and > > makes > > useless conversion back to revs. Instead let's call changelog.headrevs() > > from > > localrepo.heads(), sort the output and then convert to nodes. Because > > headrevs > > does not support start parameter this optimization only works if start is > > None. > > > > diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py > > --- a/mercurial/localrepo.py > > +++ b/mercurial/localrepo.py > > @@ -1852,6 +1852,10 @@ > > listsubrepos) > > > > def heads(self, start=None): > > + if start is None: > > + headrevs = sorted(self.changelog.headrevs(), reverse=True) > > headrevs() is already sorted in both C and Python implementations, so > "sorted(..., reverse=True)" could be replaced by "reversed(...)".
Yeah. > > + return [self.changelog.node(rev) for rev in headrevs] The function call "self.changelog" wasn't instant because of repoview, but I don't remember if that's still true. Pierre-Yves? _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel