# HG changeset patch # User Remi Chaintron # Date 2017-01-05 17:16:07 # Node ID e12c0fa1f65b9afc87a527234261a1eaab4d1430 # Parent 2df983125d37d70475ed69c9bc7056c08e5b1e83 revlog: pass revlog flags to addrevision Adding the ability to passing flags to addrevision instead of simply passing default flags to _addrevision will allow extensions relying on flag transforms to wrap around addrevision() in order to update revlog flags. The first use case of this patch will be the lfs extension marking nodes as stored externally when the contents are larger than the defined threshold. One of the reasons leading to setting flags in addrevision() wrappers in the flag processor design is that it allows to detect files larger than the 2GB limit before the check is performed, which allows lfs to transform the contents into metadata. diff --git a/mercurial/revlog.py b/mercurial/revlog.py --- a/mercurial/revlog.py +++ b/mercurial/revlog.py @@ -1328,7 +1328,7 @@ class revlog(object): self._chunkclear() def addrevision(self, text, transaction, link, p1, p2, cachedelta=None, - node=None): + node=None, flags=REVIDX_DEFAULT_FLAGS): """add a revision to the log text - the revision data to add @@ -1339,6 +1339,7 @@ class revlog(object): 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) + flags - the known flags to set on the revision """ if link == nullrev: raise RevlogError(_("attempted to add linkrev -1 to %s") @@ -1359,7 +1360,7 @@ class revlog(object): ifh = self.opener(self.indexfile, "a+", checkambig=self._checkambig) try: return self._addrevision(node, text, transaction, link, p1, p2, - REVIDX_DEFAULT_FLAGS, cachedelta, ifh, dfh) + flags, cachedelta, ifh, dfh) finally: if dfh: dfh.close()