[PATCH] unionrepo: take delta base in account with building unified revlog

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Sep 10 23:18:44 UTC 2015


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1441926879 25200
#      Thu Sep 10 16:14:39 2015 -0700
# Node ID f8147a4bf085ebde75cd4bd2fb2e07cd6ae02a84
# Parent  ea489d94e1dc1fc3dc1dcbef1c86c18c49605ed1
unionrepo: take delta base in account with building unified revlog

When general delta is enabled, the base is actually meaningful and should be
used. With general delta is enabled, test-unionrepo.t crash without this fix.

diff --git a/mercurial/unionrepo.py b/mercurial/unionrepo.py
--- a/mercurial/unionrepo.py
+++ b/mercurial/unionrepo.py
@@ -47,27 +47,30 @@ class unionrevlog(revlog.revlog):
         self.repotiprev = n - 1
         self.bundlerevs = set() # used by 'bundle()' revset expression
         for rev2 in self.revlog2:
             rev = self.revlog2.index[rev2]
             # rev numbers - in revlog2, very different from self.rev
-            _start, _csize, _rsize, _base, linkrev, p1rev, p2rev, node = rev
+            _start, _csize, _rsize, base, linkrev, p1rev, p2rev, node = rev
 
             if linkmapper is None: # link is to same revlog
                 assert linkrev == rev2 # we never link back
                 link = n
             else: # rev must be mapped from repo2 cl to unified cl by linkmapper
                 link = linkmapper(linkrev)
 
+            if linkmapper is not None: # link is to same revlog
+                base = linkmapper(base)
+
             if node in self.nodemap:
                 # this happens for the common revlog revisions
                 self.bundlerevs.add(self.nodemap[node])
                 continue
 
             p1node = self.revlog2.node(p1rev)
             p2node = self.revlog2.node(p2rev)
 
-            e = (None, None, None, None,
+            e = (None, None, None, base,
                  link, self.rev(p1node), self.rev(p2node), node)
             self.index.insert(-1, e)
             self.nodemap[node] = n
             self.bundlerevs.add(n)
             n += 1


More information about the Mercurial-devel mailing list