[PATCH 06 of 10] bundlerepo: use rev instead of node for iteration in revision()
Benoit Boissinot
bboissin at gmail.com
Wed Jan 16 14:25:45 CST 2013
On Wed, Jan 16, 2013 at 8:57 PM, Mads Kiilerich <mads at kiilerich.com> wrote:
> # HG changeset patch
> # User Mads Kiilerich <madski at unity3d.com>
> # Date 1358365301 -3600
> # Node ID d99799fc4f359b6f756c1a147523b1eaf3cc084f
> # Parent c2b44c239c909a81fcc6bedc78125ac5c2f43aa8
> bundlerepo: use rev instead of node for iteration in revision()
>
> Avoids some lookups and avoids using rev while iterating.
>
> diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
> --- a/mercurial/bundlerepo.py
> +++ b/mercurial/bundlerepo.py
> @@ -108,17 +108,16 @@
>
> text = None
> chain = []
> - iter_node = node
> + iterrev = rev
> # reconstruct the revision if it is from a changegroup
> - while rev in self.basemap:
> - if self._cache and self._cache[0] == iter_node:
> + while iterrev in self.basemap:
> + if self._cache and self._cache[1] == iterrev:
> text = self._cache[2]
> break
> - chain.append(rev)
> - iter_node = self.basemap[rev]
> - rev = self.rev(iter_node)
> + chain.append(iterrev)
> + iterrev = self.rev(self.basemap[rev])
>
self.basemap[iterrev] (it wasn't caught by any test?)
> if text is None:
> - text = revlog.revlog.revision(self, iter_node)
> + text = revlog.revlog.revision(self, iterrev)
>
> while chain:
> delta = self._chunk(chain.pop())
> @@ -127,9 +126,9 @@
> p1, p2 = self.parents(node)
> if node != revlog.hash(text, p1, p2):
> raise error.RevlogError(_("integrity check failed on %s:%d")
> - % (self.datafile, self.rev(node)))
> + % (self.datafile, rev))
>
> - self._cache = (node, self.rev(node), text)
> + self._cache = (node, rev, text)
> return text
>
> def addrevision(self, text, transaction, link, p1=None, p2=None,
> d=None):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20130116/a1f04ada/attachment.html>
More information about the Mercurial-devel
mailing list