@@ -318,10 +318,10 @@
bundle2-input-part: total payload size 1686
bundle2-input-part: "cache:rev-branch-cache" (advisory) supported
bundle2-input-part: total payload size 74
- truncating cache/rbc-revs-v1 to 56
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 3 parts total
+ truncating cache/rbc-revs-v1 to 72
added 2 changesets with 2 changes to 1 files
updating the branch cache
invalid branch cache (served): tip differs
@@ -134,6 +134,8 @@
00660 ../push/.hg/00changelog.i
00770 ../push/.hg/cache/
00660 ../push/.hg/cache/branch2-base
+ 00660 ../push/.hg/cache/rbc-names-v1
+ 00660 ../push/.hg/cache/rbc-revs-v1
00660 ../push/.hg/dirstate
00660 ../push/.hg/requires
00770 ../push/.hg/store/
@@ -204,6 +204,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -283,6 +284,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -806,6 +808,7 @@
acl: acl.deny.bookmarks not enabled
acl: bookmark access granted: "ef1ea85a6374b77d6da9dcda9541f498f2d17df7" on bookmark "moving-bookmark"
bundle2-input-bundle: 7 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
invalid branch cache (served.hidden): tip differs
added 1 changesets with 1 changes to 1 files
@@ -982,6 +985,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -1318,6 +1322,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -1408,6 +1413,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -1577,6 +1583,7 @@
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-bundle: 5 parts total
+ truncating cache/rbc-revs-v1 to 8
updating the branch cache
added 3 changesets with 3 changes to 3 files
bundle2-output-bundle: "HG20", 1 parts total
@@ -42,6 +42,9 @@
* The `branchmap` cache is updated more intelligently and can be
significantly faster for repositories with many branches and changesets.
+ * The `rev-branch-cache` is now updated incrementally whenever changesets
+ are added.
+
== New Experimental Features ==
@@ -1990,7 +1990,7 @@
return self._revbranchcache
def register_changeset(self, node, changelogrevision):
- pass
+ self.revbranchcache().setdata(node, changelogrevision)
def branchtip(self, branch, ignoremissing=False):
"""return the tip node for a given branch
@@ -2478,35 +2478,10 @@
@parthandler(b'cache:rev-branch-cache')
def handlerbc(op, inpart):
- """receive a rev-branch-cache payload and update the local cache
-
- The payload is a series of data related to each branch
-
- 1) branch name length
- 2) number of open heads
- 3) number of closed heads
- 4) open heads nodes
- 5) closed heads nodes
- """
- total = 0
- rawheader = inpart.read(rbcstruct.size)
- cache = op.repo.revbranchcache()
- cl = op.repo.unfiltered().changelog
- while rawheader:
- header = rbcstruct.unpack(rawheader)
- total += header[1] + header[2]
- utf8branch = inpart.read(header[0])
- branch = encoding.tolocal(utf8branch)
- for x in pycompat.xrange(header[1]):
- node = inpart.read(20)
- rev = cl.rev(node)
- cache.setdata(branch, rev, node, False)
- for x in pycompat.xrange(header[2]):
- node = inpart.read(20)
- rev = cl.rev(node)
- cache.setdata(branch, rev, node, True)
- rawheader = inpart.read(rbcstruct.size)
- cache.write()
+ """Legacy part, ignored for compatibility with bundles from or
+ for Mercurial before 5.7. Newer Mercurial computes the cache
+ efficiently enough during unbundling that the additional transfer
+ is unnecessary."""
@parthandler(b'pushvars')
@@ -706,8 +706,10 @@
self._setcachedata(rev, reponode, branchidx)
return b, close
- def setdata(self, branch, rev, node, close):
+ def setdata(self, node, changelogrevision):
"""add new data information to the cache"""
+ branch, close = changelogrevision.branchinfo
+
if branch in self._namesreverse:
branchidx = self._namesreverse[branch]
else:
@@ -716,7 +718,7 @@
self._namesreverse[branch] = branchidx
if close:
branchidx |= _rbccloseflag
- self._setcachedata(rev, node, branchidx)
+ self._setcachedata(self._repo.changelog.rev(node), node, branchidx)
# If no cache data were readable (non exists, bad permission, etc)
# the cache was bypassing itself by setting:
#