[PATCH] revlog: parentdelta flags for revlog index

in3xes at gmail.com in3xes at gmail.com
Mon Aug 9 10:14:21 CDT 2010


# HG changeset patch
# User Pradeepkumar Gayam <in3xes at gmail.com>
# Date 1281366194 -19800
# Node ID 127044ace0a8bcc4412d5b4b74c6e5b9d189356c
# Parent  05deba16c5d571e244364accbde31268008b2e3c
revlog: parentdelta flags for revlog index

diff -r 05deba16c5d5 -r 127044ace0a8 mercurial/revlog.py
--- a/mercurial/revlog.py	Fri Aug 06 12:59:13 2010 -0500
+++ b/mercurial/revlog.py	Mon Aug 09 20:33:14 2010 +0530
@@ -28,14 +28,16 @@
 REVLOGNG = 1
 REVLOGNGINLINEDATA = (1 << 16)
 REVLOGSHALLOW = (1 << 17)
+REVLOGPARENTDELTA = (1 << 18)
 REVLOG_DEFAULT_FLAGS = REVLOGNGINLINEDATA
 REVLOG_DEFAULT_FORMAT = REVLOGNG
 REVLOG_DEFAULT_VERSION = REVLOG_DEFAULT_FORMAT | REVLOG_DEFAULT_FLAGS
-REVLOGNG_FLAGS = REVLOGNGINLINEDATA | REVLOGSHALLOW
+REVLOGNG_FLAGS = REVLOGNGINLINEDATA | REVLOGSHALLOW | REVLOGPARENTDELTA
 
 # revlog index flags
+REVIDX_PARENTDELTA  = 1
 REVIDX_PUNCHED_FLAG = 2
-REVIDX_KNOWN_FLAGS = REVIDX_PUNCHED_FLAG
+REVIDX_KNOWN_FLAGS = REVIDX_PUNCHED_FLAG | REVIDX_PARENTDELTA
 
 # amount of data read unconditionally, should be >= 4
 # when not inline: threshold for using lazy index
@@ -441,12 +443,18 @@
         self.nodemap = {nullid: nullrev}
         self.index = []
         self._shallowroot = shallowroot
+        self._parentdelta = 0
+        self._deltachain = 0
 
         v = REVLOG_DEFAULT_VERSION
         if hasattr(opener, 'options') and 'defversion' in opener.options:
             v = opener.options['defversion']
             if v & REVLOGNG:
                 v |= REVLOGNGINLINEDATA
+            if v & REVLOGNG and 'parentdelta' in opener.options:
+                self._parentdelta = 1
+                v |= REVLOGPARENTDELTA
+            
         if shallowroot:
             v |= REVLOGSHALLOW
 
@@ -466,6 +474,7 @@
         self.version = v
         self._inline = v & REVLOGNGINLINEDATA
         self._shallow = v & REVLOGSHALLOW
+        self._deltachain = v & REVLOGPARENTDELTA
         flags = v & ~0xFFFF
         fmt = v & 0xFFFF
         if fmt == REVLOGV0 and flags:


More information about the Mercurial-devel mailing list