@@ -244,10 +244,17 @@ def _updatetags(filetags, tagtype, allta
else:
tagtypes[name] = tagtype
ahist.extend([n for n in bhist if n not in ahist])
alltags[name] = anode, ahist
+def _filename(repo):
+ """name of a tagcache file for a given repo or repoview"""
+ filename = 'cache/tags'
+ if repo.filtername:
+ filename = '%s-%s' % (filename, repo.filtername)
+ return filename
+
def _readtagcache(ui, repo):
'''Read the tag cache.
Returns a tuple (heads, fnodes, cachetags, shouldwrite).
@@ -263,11 +270,11 @@ def _readtagcache(ui, repo):
If the cache is not up to date, the caller is responsible for reading tag
info from each returned head. (See findglobaltags().)
'''
try:
- cachefile = repo.vfs('cache/tags', 'r')
+ cachefile = repo.vfs(_filename(repo), 'r')
# force reading the file for static-http
cachelines = iter(cachefile)
except IOError:
cachefile = None
@@ -358,11 +365,11 @@ def _readtagcache(ui, repo):
# cachefnode to get to each .hgtags revision quickly.
return (repoheads, cachefnode, None, True)
def _writetagcache(ui, repo, heads, tagfnode, cachetags):
try:
- cachefile = repo.vfs('cache/tags', 'w', atomictemp=True)
+ cachefile = repo.vfs(_filename(repo), 'w', atomictemp=True)
except (OSError, IOError):
return
ui.log('tagscache', 'writing tags cache file with %d heads and %d tags\n',
len(heads), len(cachetags))
@@ -309,28 +309,28 @@ qpop
qpush with dump of tag cache
Dump the tag cache to ensure that it has exactly one head after qpush.
- $ rm -f .hg/cache/tags
+ $ rm -f .hg/cache/tags-visible
$ hg tags > /dev/null
-.hg/cache/tags (pre qpush):
+.hg/cache/tags-visible (pre qpush):
- $ cat .hg/cache/tags
+ $ cat .hg/cache/tags-visible
1 [\da-f]{40} (re)
$ hg qpush
applying test.patch
now at: test.patch
$ hg phase -r qbase
2: draft
$ hg tags > /dev/null
-.hg/cache/tags (post qpush):
+.hg/cache/tags-visible (post qpush):
- $ cat .hg/cache/tags
+ $ cat .hg/cache/tags-visible
2 [\da-f]{40} (re)
$ checkundo qpush
$ cd ..
@@ -34,11 +34,11 @@ Trigger tags cache population by doing s
| o 1:5f97d42da03f test tag
|/
o 0:55482a6fb4b1 test1 initial
- $ cat .hg/cache/tags
+ $ cat .hg/cache/tags-visible
4 042eb6bfcc4909bad84a1cbf6eb1ddf0ab587d41
3 c3cb30f2d2cd0aae008cc91a07876e3c5131fd22 b3bce87817fe7ac9dca2834366c1d7534c095cf1
55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
d75775ffbc6bca1794d300f5571272879bd280da test2
@@ -60,11 +60,11 @@ repopulation
.hgtags filenodes for hidden heads should be visible (issue4550)
(currently broken)
- $ cat .hg/cache/tags
+ $ cat .hg/cache/tags-visible
7 eb610439e10e0c6b296f97b59624c2e24fc59e30 b3bce87817fe7ac9dca2834366c1d7534c095cf1
55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
d75775ffbc6bca1794d300f5571272879bd280da test2
@@ -7,11 +7,11 @@ setup
> EOF
Helper functions:
$ cacheexists() {
- > [ -f .hg/cache/tags ] && echo "tag cache exists" || echo "no tag cache"
+ > [ -f .hg/cache/tags-visible ] && echo "tag cache exists" || echo "no tag cache"
> }
$ fnodescacheexists() {
> [ -f .hg/cache/hgtagsfnodes1 ] && echo "fnodes cache exists" || echo "no fnodes cache"
> }
@@ -54,11 +54,11 @@ No fnodes cache because .hgtags file doe
$ fnodescacheexists
no fnodes cache
Try corrupting the cache
- $ printf 'a b' > .hg/cache/tags
+ $ printf 'a b' > .hg/cache/tags-visible
$ hg identify
acb14030fe0a tip
$ cacheexists
tag cache exists
$ fnodescacheexists
@@ -100,11 +100,11 @@ The cache should have an empty entry for
0010: ff ff ff ff ff ff ff ff b9 15 46 36 26 b7 b4 a7 |..........F6&...|
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
Repeat with cold tag cache:
- $ rm -f .hg/cache/tags .hg/cache/hgtagsfnodes1
+ $ rm -f .hg/cache/tags-visible .hg/cache/hgtagsfnodes1
$ hg identify
b9154636be93 tip
$ fnodescacheexists
fnodes cache exists
@@ -115,20 +115,20 @@ Repeat with cold tag cache:
0020: 73 e0 9e e3 c5 2f 51 0e 19 e0 5e 1f f9 66 d8 59 |s..../Q...^..f.Y|
And again, but now unable to write tag cache:
#if unix-permissions
- $ rm -f .hg/cache/tags .hg/cache/hgtagsfnodes1
+ $ rm -f .hg/cache/tags-visible .hg/cache/hgtagsfnodes1
$ chmod 555 .hg/cache
$ hg identify
b9154636be93 tip
$ chmod 755 .hg/cache
#endif
Tag cache debug info written to blackbox log
- $ rm -f .hg/cache/tags .hg/cache/hgtagsfnodes1
+ $ rm -f .hg/cache/tags-visible .hg/cache/hgtagsfnodes1
$ hg identify
b9154636be93 tip
$ hg blackbox -l 5
1970/01/01 00:00:00 bob> identify
1970/01/01 00:00:00 bob> writing 48 bytes to cache/hgtagsfnodes1
@@ -136,11 +136,11 @@ Tag cache debug info written to blackbox
1970/01/01 00:00:00 bob> writing tags cache file with 1 heads and 1 tags
1970/01/01 00:00:00 bob> identify exited 0 after ?.?? seconds (glob)
Failure to acquire lock results in no write
- $ rm -f .hg/cache/tags .hg/cache/hgtagsfnodes1
+ $ rm -f .hg/cache/tags-visible .hg/cache/hgtagsfnodes1
$ echo 'foo:1' > .hg/wlock
$ hg identify
b9154636be93 tip
$ hg blackbox -l 5
1970/01/01 00:00:00 bob> identify
@@ -152,11 +152,11 @@ Failure to acquire lock results in no wr
$ fnodescacheexists
no fnodes cache
$ rm .hg/wlock
- $ rm -f .hg/cache/tags .hg/cache/hgtagsfnodes1
+ $ rm -f .hg/cache/tags-visible .hg/cache/hgtagsfnodes1
$ hg identify
b9154636be93 tip
Create a branch:
@@ -309,11 +309,11 @@ Detailed dump of tag info:
rev 4: .hgtags:
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
Dump cache:
- $ cat .hg/cache/tags
+ $ cat .hg/cache/tags-visible
4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
3 6fa450212aeb2a21ed616a54aea39a4a27894cd7 7d3b718c964ef37b89e550ebdafd5789e76ce1b0
2 7a94127795a33c10a370c93f731fd9fea0b79af6 0c04f2a8af31de17fab7422878ee5a2dadbc943d
bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
@@ -354,11 +354,11 @@ Errors writing to .hgtags fnodes cache a
$ echo dummy2 > foo
$ hg commit -m throwaway2
$ chmod a-w .hg/cache/hgtagsfnodes1
- $ rm -f .hg/cache/tags
+ $ rm -f .hg/cache/tags-visible
$ hg tags
tip 6:b968051b5cf3
bar 1:78391a272241
@@ -370,11 +370,11 @@ Errors writing to .hgtags fnodes cache a
1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
$ chmod a+w .hg/cache/hgtagsfnodes1
#endif
- $ rm -f .hg/cache/tags
+ $ rm -f .hg/cache/tags-visible
$ hg tags
tip 6:b968051b5cf3
bar 1:78391a272241
$ hg blackbox -l 5
@@ -522,11 +522,11 @@ Strip 2: destroy whole branch, no old he
$ hg --config extensions.mq= strip 4
saved backup bundle to $TESTTMP/t3/.hg/strip-backup/*-backup.hg (glob)
$ hg tags # partly stale
tip 4:735c3ca72986
bar 0:bbd179dfa0a7
- $ rm -f .hg/cache/tags
+ $ rm -f .hg/cache/tags-visible
$ hg tags # cold cache
tip 4:735c3ca72986
bar 0:bbd179dfa0a7
Test tag rank with 3 heads: