Additional appendfile fixes for interleaved data/index files
The appendfile code was not passing default version info to the
changelog or manifest classes, and so they were always being created
as version 0.
revlog.checkinlinesize had to be corrected to seek to the end
of the index file when no index file was passed (only clone does this)
--- a/mercurial/appendfile.py
+++ b/mercurial/appendfile.py
@@ -180,15 +180,15 @@ class appendopener(object):
# not mixed up together.
class appendchangelog(changelog.changelog, appendopener):
- def __init__(self, opener):
+ def __init__(self, opener, version):
appendopener.__init__(self, opener)
- changelog.changelog.__init__(self, self)
+ changelog.changelog.__init__(self, self, version)
def checkinlinesize(self, fp, tr):
return
class appendmanifest(manifest.manifest, appendopener):
- def __init__(self, opener):
+ def __init__(self, opener, version):
appendopener.__init__(self, opener)
- manifest.manifest.__init__(self, self)
+ manifest.manifest.__init__(self, self, version)
def checkinlinesize(self, fp, tr):
return
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1413,7 +1413,7 @@ class localrepository(object):
# write changelog and manifest data to temp files so
# concurrent readers will not see inconsistent view
- cl = appendfile.appendchangelog(self.opener)
+ cl = appendfile.appendchangelog(self.opener, self.changelog.version)
oldheads = len(cl.heads())
@@ -1427,7 +1427,7 @@ class localrepository(object):
cnr = cor
changesets = cnr - cor
- mf = appendfile.appendmanifest(self.opener)
+ mf = appendfile.appendmanifest(self.opener, self.manifest.version)
# pull off the manifest group
self.ui.status(_("adding manifests\n"))
@@ -1455,10 +1455,10 @@ class localrepository(object):
cl.writedata()
# make changelog and manifest see real files again
- self.changelog = changelog.changelog(self.opener)
- self.manifest = manifest.manifest(self.opener)
+ self.changelog = changelog.changelog(self.opener, self.changelog.version)
+ self.manifest = manifest.manifest(self.opener, self.manifest.version)
self.changelog.checkinlinesize(tr)
- self.changelog.checkinlinesize(tr)
+ self.manifest.checkinlinesize(tr)
newheads = len(self.changelog.heads())
heads = ""
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -822,6 +822,7 @@ class revlog(object):
return
if not fp:
fp = self.opener(self.indexfile, 'r')
+ fp.seek(0, 2)
size = fp.tell()
if size < 131072:
return