[PATCH 2 of 2] revlog: pass node as an argument of addrevision
Augie Fackler
lists at durin42.com
Mon Aug 19 14:08:21 CDT 2013
series LGTM
On Mon, Aug 19, 2013 at 2:55 PM, Wojciech Lopata <lopek at fb.com> wrote:
> # HG changeset patch
> # User Wojciech Lopata <lopek at fb.com>
> # Date 1376936723 25200
> # Mon Aug 19 11:25:23 2013 -0700
> # Node ID 568a119612c68959ac44c9ec73c7b50f71c10810
> # Parent ace27c00a18646ce022b5b75448246c1423bde6a
> revlog: pass node as an argument of addrevision
>
> This change will allow revlog subclasses that override 'checkhash' method
> to use custom strategy of computing nodeids without overriding 'addrevision'
> method.
>
> diff --git a/mercurial/revlog.py b/mercurial/revlog.py
> --- a/mercurial/revlog.py
> +++ b/mercurial/revlog.py
> @@ -990,7 +990,8 @@
> tr.replace(self.indexfile, trindex * self._io.size)
> self._chunkclear()
>
> - def addrevision(self, text, transaction, link, p1, p2, cachedelta=None):
> + def addrevision(self, text, transaction, link, p1, p2, cachedelta=None,
> + node=None):
> """add a revision to the log
>
> text - the revision data to add
> @@ -998,11 +999,14 @@
> link - the linkrev data to add
> p1, p2 - the parent nodeids of the revision
> cachedelta - an optional precomputed delta
> + node - nodeid of revision; typically node is not specified, and it is
> + computed by default as hash(text, p1, p2), however subclasses might
> + use different hashing method (and override checkhash() in such case)
> """
> if link == nullrev:
> raise RevlogError(_("attempted to add linkrev -1 to %s")
> % self.indexfile)
> - node = hash(text, p1, p2)
> + node = node or hash(text, p1, p2)
> if node in self.nodemap:
> return node
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list