changeset 2082:856f0ba200bc

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)
author mason@suse.com
date Sat, 08 Apr 2006 20:08:06 -0400
parents 416d8b2a75b8
children 345107e167a0
files mercurial/appendfile.py mercurial/localrepo.py mercurial/revlog.py
diffstat 3 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- 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