@@ -820,7 +820,7 @@
$ hg clone --config experimental.changegroup3=True --stream -U \
> http://localhost:$HGPORT stream-clone-fncachestore
streaming all changes
- 22 files to transfer, * of data (glob)
+ 23 files to transfer, * of data (glob)
transferred * in * seconds (*) (glob)
$ hg -R stream-clone-fncachestore verify
checking changesets
@@ -860,7 +860,8 @@
bundle2-output-part: "phase-heads" 24 bytes payload
saved backup bundle to $TESTTMP/issue4736/.hg/strip-backup/6625a5168474-345bb43d-backup.hg
updating the branch cache
- invalid branchheads cache (served): tip differs
+ invalid branchheads cache (*): tip differs (glob)
+ invalid branchheads cache (*): tip differs (glob)
$ hg log -G
o changeset: 2:5c51d8d6557d
| tag: tip
@@ -60,8 +60,8 @@
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream
streaming all changes
- 8 files to transfer, 827 bytes of data
- transferred 827 bytes in * seconds (*) (glob)
+ 9 files to transfer, 971 bytes of data
+ transferred 971 bytes in * seconds (*) (glob)
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd local-stream
@@ -80,8 +80,8 @@
$ hg -R local-stream book mybook
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2
streaming all changes
- 9 files to transfer, 870 bytes of data
- transferred 870 bytes in * seconds (*) (glob)
+ 10 files to transfer, 1014 bytes of data
+ transferred 1014 bytes in * seconds (*) (glob)
updating to branch default
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cd stream2
@@ -45,6 +45,7 @@
manifestfulltextcache (reporevlogstore !)
$ ls -1 ../repo1/.hg/cache
branch2-served
+ branch2-visible
rbc-names-v1
rbc-revs-v1
tags2-visible
@@ -323,8 +323,9 @@
bundle2-input-part: total payload size 24
bundle2-input-bundle: 2 parts total
updating the branch cache
- invalid branchheads cache (served): tip differs
- invalid branchheads cache (served.hidden): tip differs
+ invalid branchheads cache (*): tip differs (glob)
+ invalid branchheads cache (*): tip differs (glob)
+ invalid branchheads cache (*): tip differs (glob)
rebase completed
Test minimization of merge conflicts
@@ -231,6 +231,7 @@
$ ls ../push-dest/.hg/cache/branch2*
../push-dest/.hg/cache/branch2-base
../push-dest/.hg/cache/branch2-served
+ ../push-dest/.hg/cache/branch2-visible
$ cat ../push-dest/.hg/cache/branch2-served
6d6770faffce199f1fddd1cf87f6f026138cf061 6 465891ffab3c47a3c23792f7dc84156e19a90722
b3325c91a4d916bcc4cdc83ea3fe4ece46a42f6e o default
@@ -141,6 +141,7 @@
$ cp .hg/bc-invalid $branchcache
$ hg --debug log -r foo
+ invalid branchheads cache (visible): tip differs
changeset: 4:adf1a74a7f7b4cd193d12992f5d0d6a004ed21d6
branch: foo
tag: tip
@@ -361,6 +361,7 @@
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg ci --debug -m merge
+ invalid branchheads cache (visible): tip differs
reusing manifest from p1 (no file change)
committing changelog
updating the branch cache
@@ -642,6 +642,7 @@
Commit and show expansion in original and copy
$ hg --debug commit -ma2c -d '1 0' -u 'User Name <user@example.com>'
+ invalid branchheads cache (visible): tip differs
committing files:
c
c: copy a:0045e12f6c5791aac80ca6cbfd97709a88307292
@@ -817,6 +818,7 @@
Commit with multi-line message and custom expansion
$ hg --debug commit -l log -d '2 0' -u 'User Name <user@example.com>'
+ invalid branchheads cache (visible): tip differs
committing files:
a
committing manifest
@@ -982,6 +984,7 @@
[255]
$ cd x
$ hg --debug commit -m xa -d '3 0' -u 'User Name <user@example.com>'
+ invalid branchheads cache (visible): tip differs
committing files:
x/a
x/a: copy a:779c764182ce5d43e2b1eb66ce06d7b47bfe342e
@@ -71,6 +71,7 @@
00600 ./.hg/00changelog.i
00770 ./.hg/cache/
00660 ./.hg/cache/branch2-served
+ 00660 ./.hg/cache/branch2-visible
00660 ./.hg/cache/rbc-names-v1
00660 ./.hg/cache/rbc-revs-v1
00660 ./.hg/dirstate
@@ -29,7 +29,7 @@
#if no-reposimplestore
$ hg clone --stream http://localhost:$HGPORT/ copy 2>&1
streaming all changes
- 9 files to transfer, 715 bytes of data
+ 10 files to transfer, 809 bytes of data
transferred * bytes in * seconds (*/sec) (glob)
updating to branch default
4 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -233,7 +233,7 @@
#if no-reposimplestore
$ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1
streaming all changes
- 10 files to transfer, 1.01 KB of data
+ 11 files to transfer, 1.10 KB of data
transferred * KB in * seconds (*/sec) (glob)
updating to branch default
5 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -16,7 +16,7 @@
$ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --stream http://localhost:$HGPORT/ b
streaming all changes
- 6 files to transfer, 412 bytes of data (reporevlogstore !)
+ 7 files to transfer, 506 bytes of data (reporevlogstore !)
4 files to transfer, 330 bytes of data (reposimplestore !)
transferred * bytes in * seconds (*/sec) (glob)
updating to branch default
@@ -92,6 +92,7 @@
Check histedit_source
$ hg log --debug --rev f518305ce889
+ invalid branchheads cache (visible): tip differs
changeset: 4:f518305ce889c07cb5bd05522176d75590ef3324
tag: tip
phase: draft
@@ -239,6 +239,7 @@
2 r4/.hg/branch
2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
+ 2 r4/.hg/cache/branch2-visible
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
2 r4/.hg/dirstate
@@ -290,6 +291,7 @@
1 r4/.hg/branch
2 r4/.hg/cache/branch2-base
2 r4/.hg/cache/branch2-served
+ 2 r4/.hg/cache/branch2-visible
2 r4/.hg/cache/rbc-names-v1
2 r4/.hg/cache/rbc-revs-v1
1 r4/.hg/dirstate
@@ -102,6 +102,7 @@
.hg/00manifest.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/branch2-visible
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
.hg/data
@@ -140,6 +141,7 @@
.hg/00changelog.i
.hg/cache
.hg/cache/branch2-served
+ .hg/cache/branch2-visible
.hg/cache/rbc-names-v1
.hg/cache/rbc-revs-v1
.hg/dirstate
@@ -467,8 +467,8 @@
no compatible clone bundles available on server; falling back to regular clone
(you may want to report this to the server operator)
streaming all changes
- 9 files to transfer, 816 bytes of data
- transferred 816 bytes in * seconds (*) (glob)
+ 10 files to transfer, 910 bytes of data
+ transferred 910 bytes in * seconds (*) (glob)
A manifest with a stream clone but no BUNDLESPEC
@@ -480,8 +480,8 @@
no compatible clone bundles available on server; falling back to regular clone
(you may want to report this to the server operator)
streaming all changes
- 9 files to transfer, 816 bytes of data
- transferred 816 bytes in * seconds (*) (glob)
+ 10 files to transfer, 910 bytes of data
+ transferred 910 bytes in * seconds (*) (glob)
A manifest with a gzip bundle and a stream clone
@@ -524,8 +524,8 @@
no compatible clone bundles available on server; falling back to regular clone
(you may want to report this to the server operator)
streaming all changes
- 9 files to transfer, 816 bytes of data
- transferred 816 bytes in * seconds (*) (glob)
+ 10 files to transfer, 910 bytes of data
+ transferred 910 bytes in * seconds (*) (glob)
Test clone bundle retrieved through bundle2
@@ -43,6 +43,7 @@
default 10:a7949464abda
$ ls .hg/cache
branch2-served
+ branch2-visible
rbc-names-v1
rbc-revs-v1
@@ -57,6 +58,7 @@
$ ls .hg/cache
branch2-served
+ branch2-visible
rbc-names-v1
rbc-revs-v1
@@ -128,6 +130,7 @@
$ ls .hg/cache
branch2-served
+ branch2-visible
rbc-names-v1
rbc-revs-v1
@@ -184,11 +184,12 @@
#if stream-bundle2
$ hg clone --stream -U http://localhost:$HGPORT clone1
streaming all changes
- 1030 files to transfer, 96.5 KB of data
- transferred 96.5 KB in * seconds (* */sec) (glob)
+ 1031 files to transfer, 96.6 KB of data
+ transferred 96.6 KB in * seconds (* */sec) (glob)
$ ls -1 clone1/.hg/cache
branch2-served
+ branch2-visible
rbc-names-v1
rbc-revs-v1
#endif
@@ -201,11 +202,11 @@
$ f --size --hex --bytes 256 body
- body: size=112262
+ body: size=112374
0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......|
0010: 7f 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......|
0020: 05 09 04 0c 44 62 79 74 65 63 6f 75 6e 74 39 38 |....Dbytecount98|
- 0030: 37 37 35 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |775filecount1030|
+ 0030: 38 36 39 66 69 6c 65 63 6f 75 6e 74 31 30 33 31 |869filecount1031|
0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote|
0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%|
0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2|
@@ -232,8 +233,8 @@
#if stream-bundle2
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed
streaming all changes
- 1030 files to transfer, 96.5 KB of data
- transferred 96.5 KB in * seconds (* */sec) (glob)
+ 1031 files to transfer, 96.6 KB of data
+ transferred 96.6 KB in * seconds (* */sec) (glob)
#endif
Clone with background file closing enabled
@@ -274,12 +275,12 @@
bundle2-input-bundle: with-transaction
bundle2-input-part: "stream2" (params: 3 mandatory) supported
applying stream bundle
- 1030 files to transfer, 96.5 KB of data
+ 1031 files to transfer, 96.6 KB of data
starting 4 threads for background file closing
starting 4 threads for background file closing
updating the branch cache
- transferred 96.5 KB in * seconds (* */sec) (glob)
- bundle2-input-part: total payload size 112094
+ transferred 96.6 KB in * seconds (* */sec) (glob)
+ bundle2-input-part: total payload size 112206
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-bundle: 1 parts total
checking for updated bookmarks
@@ -318,8 +319,8 @@
#if stream-bundle2
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed
streaming all changes
- 1030 files to transfer, 96.5 KB of data
- transferred 96.5 KB in * seconds (* */sec) (glob)
+ 1031 files to transfer, 96.6 KB of data
+ transferred 96.6 KB in * seconds (* */sec) (glob)
#endif
$ killdaemons.py
@@ -867,6 +867,7 @@
cache is rebuilt when corruption is detected
$ echo > .hg/cache/rbc-names-v1
$ hg log -r '5:&branch(.)' -T '{rev} ' --debug
+ invalid branchheads cache (visible): tip differs
referenced branch names not found - rebuilding revision branch cache from scratch
8 9 10 11 12 13 truncating cache/rbc-revs-v1 to 40
$ f --size --hexdump .hg/cache/rbc-*
@@ -181,7 +181,8 @@
starting 4 threads for background file closing (?)
changed branch on 2 changesets
updating the branch cache
- invalid branchheads cache (served): tip differs
+ invalid branchheads cache (*): tip differs (glob)
+ invalid branchheads cache (*): tip differs (glob)
$ hg glog -r '(.^)::'
@ 9:de1404b45a69 Added e
@@ -123,13 +123,15 @@
added 1 changesets with 1 changes to 1 files
new changesets d02f48003e62
(run 'hg update' to get a working copy)
- $ hg blackbox -l 6
+ $ hg blackbox -l 8
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated served branch cache in * seconds (glob)
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote served branch cache with 1 labels and 2 nodes
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated * branch cache in * seconds (glob)
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote * branch cache with 1 labels and 2 nodes (glob)
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> updated * branch cache in * seconds (glob)
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> wrote * branch cache with 1 labels and 2 nodes (glob)
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> 1 incoming changes - new heads: d02f48003e62
1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> pull exited 0 after * seconds (glob)
- 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 6
+ 1970/01/01 00:00:00 bob @6563da9dcf87b1949716e38ff3e3dfaa3198eb06 (5000)> blackbox -l 8
we must not cause a failure if we cannot write to the log
@@ -302,9 +304,9 @@
result: 0
$ hg blackbox
- 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updating the branch cache
- 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated served branch cache in * seconds (glob)
- 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote served branch cache with 1 labels and 1 nodes
+ 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote * branch cache with 1 labels and 1 nodes (glob)
+ 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> updated * branch cache in * seconds (glob)
+ 1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> wrote * branch cache with 1 labels and 1 nodes (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug commit -m commit2 -d 2000-01-02 foo exited 0 after *.?? seconds (glob)
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> --debug log -r 0
1970/01/01 00:00:00 bob @45589e459b2edfbf3dbde7e01f611d2c1e7453d7 (5000)> writing .hg/cache/tags2-visible with 0 tags
@@ -20,3 +20,9 @@
'served.hidden': 'served',
'served': 'immutable',
'immutable': 'base'}
+
+# List of "heads" from `subsettable`: filters that do not have any superset that
+# would cause them to be populated, so they must be populated explicitly. This
+# can be calculated from `subsettable` but `subsettable` is essentially
+# constant, so we just hard-code it.
+subsettableheads = frozenset({'visible-hidden', 'served.hidden'})
@@ -69,6 +69,7 @@
from .utils import (
interfaceutil,
procutil,
+ repoviewutil,
stringutil,
)
@@ -2179,7 +2180,7 @@
def updatecaches(self, tr=None, full=False):
"""warm appropriate caches
- If this function is called after a transaction closed. The transaction
+ If this function is called after a transaction closed, the transaction
will be available in the 'tr' argument. This can be used to selectively
update caches relevant to the changes in that transaction.
@@ -2192,10 +2193,15 @@
return
if tr is None or tr.changes['origrepolen'] < len(self):
- # accessing the 'ser ved' branchmap should refresh all the others,
+ # Updating all of the "heads" of the cache hierarchy should cause
+ # all others that are stale to be updated.
self.ui.debug('updating the branch cache\n')
- self.filtered('served').branchmap()
- self.filtered('served.hidden').branchmap()
+ for filt in repoviewutil.subsettableheads:
+ # Refreshing visible-hidden caused a lot of test failures, so
+ # we'll only do 'visible' for now.
+ if filt == 'visible-hidden':
+ filt = 'visible'
+ self.filtered(filt).branchmap()
if full:
unfi = self.unfiltered()