[PATCH 4 of 8] bundlerepo: make baserevision return raw text

Jun Wu quark at fb.com
Thu Apr 6 22:08:12 EDT 2017


# HG changeset patch
# User Jun Wu <quark at fb.com>
# Date 1491525809 25200
#      Thu Apr 06 17:43:29 2017 -0700
# Node ID f05275cd80eb1afde5c36470fadf224a44733c45
# Parent  2a254e0cac392c1e0af8bbf0645ecb02b2352f8c
# Available At https://bitbucket.org/quark-zju/hg-draft
#              hg pull https://bitbucket.org/quark-zju/hg-draft -r f05275cd80eb
bundlerepo: make baserevision return raw text

"baserevision" returns the text that will be used to apply deltas. Since
deltas are against raw texts, "baserevision" should return raw text.

Now test-flagprocessor.t points us to a new error.

diff --git a/mercurial/bundlerepo.py b/mercurial/bundlerepo.py
--- a/mercurial/bundlerepo.py
+++ b/mercurial/bundlerepo.py
@@ -159,5 +159,5 @@ class bundlerevlog(revlog.revlog):
         # content retrieved from revlog. To use bundlerevlog with such class one
         # needs to override 'baserevision' and make more specific call here.
-        return revlog.revlog.revision(self, nodeorrev)
+        return revlog.revlog.revision(self, nodeorrev, raw=True)
 
     def addrevision(self, text, transaction, link, p1=None, p2=None, d=None):
@@ -187,5 +187,5 @@ class bundlechangelog(bundlerevlog, chan
         try:
             self.filteredrevs = ()
-            return changelog.changelog.revision(self, nodeorrev)
+            return changelog.changelog.revision(self, nodeorrev, raw=True)
         finally:
             self.filteredrevs = oldfilter
@@ -211,5 +211,10 @@ class bundlemanifest(bundlerevlog, manif
             result = '%s' % self.fulltextcache[node]
         else:
-            result = manifest.manifestrevlog.revision(self, nodeorrev)
+            try:
+                result = manifest.manifestrevlog.revision(self, nodeorrev,
+                                                          raw=True)
+            except TypeError:
+                # some manifestrevlog implementation does not accept "raw"
+                result = manifest.manifestrevlog.revision(self, nodeorrev)
         return result
 
@@ -229,5 +234,5 @@ class bundlefilelog(bundlerevlog, filelo
 
     def baserevision(self, nodeorrev):
-        return filelog.filelog.revision(self, nodeorrev)
+        return filelog.filelog.revision(self, nodeorrev, raw=True)
 
 class bundlepeer(localrepo.localpeer):
diff --git a/tests/test-flagprocessor.t b/tests/test-flagprocessor.t
--- a/tests/test-flagprocessor.t
+++ b/tests/test-flagprocessor.t
@@ -189,10 +189,9 @@
   $ hg --config extensions.strip= strip -r 2 --no-backup --force -q
   $ hg -R bundle.hg log --stat -T '{rev} {desc}\n' base64 2>&1 | egrep -v '^(\*\*|  )'
-  Traceback (most recent call last):
-  mercurial.mpatch.mpatchError: invalid patch
+  abort: integrity check failed on data/base64.i:2!
 
   $ hg bundle -R bundle.hg --base 1 bundle-again.hg -q 2>&1 | egrep -v '^(\*\*|  )'
   Traceback (most recent call last):
-  TypeError: Incorrect padding
+  mercurial.mpatch.mpatchError: invalid patch
   $ hg -R bundle-again.hg log --stat -T '{rev} {desc}\n' base64 2>&1 | egrep -v '^(\*\*|  )'
   abort: repository bundle-again.hg not found!


More information about the Mercurial-devel mailing list