[PATCHES] lwcopy-related

Sune Foldager cryo at cyanite.org
Wed May 4 12:54:44 CDT 2011


Two lwcopy-related patches. The first one adds a flags element to bundle
chunks, which will come with the new bundle format, and used for lwcopy.

The second one adds a file() function to filelog, so new filelogs can be
opened without access to the repository object. This is needed later by
lwcopy because bundlerepo needs to return its own filelog class.

Looks good to you, then I'll push them.

(haven't gotten my patchbomb setup done on this computer, so I include
the patches below.)

/Sune

# HG changeset patch
# User Sune Foldager <cryo at cyanite.org>
# Date 1304522720 -7200
# Node ID bba76d1f9dfb8f8bd5aed47e7c6b7ec5feced1a5
# Parent  4ab6e2d597cca476a3aab865620ec946dd307972
bundler: support flags in chunks

diff -r 4ab6e2d597cc -r bba76d1f9dfb mercurial/changegroup.py
--- a/mercurial/changegroup.py	Wed May 04 19:27:55 2011 +0200
+++ b/mercurial/changegroup.py	Wed May 04 17:25:20 2011 +0200
@@ -192,7 +192,7 @@
          delta = readexactly(self._stream, l - self.deltaheadersize)
          node, p1, p2, deltabase, cs = self._deltaheader(header, prevnode)
          return dict(node=node, p1=p1, p2=p2, cs=cs,
-                    deltabase=deltabase, delta=delta)
+                    deltabase=deltabase, delta=delta, flags=0)
  
  class headerlessfixup(object):
      def __init__(self, fh, h):


# HG changeset patch
# User Sune Foldager <cryo at cyanite.org>
# Date 1304528038 -7200
# Node ID 785ddd239a4e8a1d1fb55bfa28cee49debac59f9
# Parent  bba76d1f9dfb8f8bd5aed47e7c6b7ec5feced1a5
filelog: add file function to open other filelogs

diff -r bba76d1f9dfb -r 785ddd239a4e mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py	Wed May 04 17:25:20 2011 +0200
+++ b/mercurial/bundlerepo.py	Wed May 04 18:53:58 2011 +0200
@@ -150,10 +150,14 @@
                                linkmapper)
  
  class bundlefilelog(bundlerevlog, filelog.filelog):
-    def __init__(self, opener, path, bundle, linkmapper):
+    def __init__(self, opener, path, bundle, linkmapper, repo):
          filelog.filelog.__init__(self, opener, path)
          bundlerevlog.__init__(self, opener, self.indexfile, bundle,
                                linkmapper)
+        self._repo = repo
+
+    def file(self, f):
+        self._repo.file(f)
  
  class bundlerepository(localrepo.localrepository):
      def __init__(self, ui, path, bundlename):
@@ -244,7 +248,7 @@
          if f in self.bundlefilespos:
              self.bundle.seek(self.bundlefilespos[f])
              return bundlefilelog(self.sopener, f, self.bundle,
-                                 self.changelog.rev)
+                                 self.changelog.rev, self)
          else:
              return filelog.filelog(self.sopener, f)
  
diff -r bba76d1f9dfb -r 785ddd239a4e mercurial/filelog.py
--- a/mercurial/filelog.py	Wed May 04 17:25:20 2011 +0200
+++ b/mercurial/filelog.py	Wed May 04 18:53:58 2011 +0200
@@ -34,6 +34,9 @@
          revlog.revlog.__init__(self, opener,
                          "/".join(("data", path + ".i")))
  
+    def file(self, f):
+        return filelog(self.opener, f)
+
      def read(self, node):
          t = self.revision(node)
          if not t.startswith('\1\n'):


More information about the Mercurial-devel mailing list