[PATCH 06 of 12] Make addrevision fork overlay revlogs on first
commit
Brendan Cully
brendan at kublai.com
Tue Jan 2 15:42:18 CST 2007
# HG changeset patch
# User Brendan Cully <brendan at kublai.com>
# Date 1167777086 18000
# Node ID 1dcf6c30b7ef66af0d55386a8d059fe3a7cfc451
# Parent 579c2afa76e8e3e57e01f3432d20c7536a0e70f9
Make addrevision fork overlay revlogs on first commit.
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -958,7 +958,10 @@ class revlog(object):
start, length = self.start(rev), self.length(rev)
inline = self.inlinedata()
if inline:
- start += (rev + 1) * struct.calcsize(self.indexformat)
+ idxes = rev + 1
+ if self.overlay():
+ idxes -= self.startrev
+ start += idxes * struct.calcsize(self.indexformat)
end = start + length
def loadcache(df):
cache_length = max(cachelen, length) # 4k
@@ -1104,6 +1107,9 @@ class revlog(object):
p1, p2 - the parent nodeids of the revision
d - an optional precomputed delta
"""
+ if self.parent and self.startrev == self.parent.count():
+ self.parent.fork(self.opener)
+ self.load()
if not self.inlinedata():
dfh = self.opener(self.datafile, "a")
else:
More information about the Mercurial-devel
mailing list