##// END OF EJS Templates
tags: change format of tags cache files...
Gregory Szorc -
r24760:410f3856 default
parent child Browse files
Show More
@@ -36,32 +36,23 b' import time'
36 # repositories with very large manifests. Multiplied by dozens or even
36 # repositories with very large manifests. Multiplied by dozens or even
37 # hundreds of heads and there is a significant performance concern.
37 # hundreds of heads and there is a significant performance concern.
38 #
38 #
39 # The "tags" cache stores information about heads and the history of tags.
39 # The "tags" cache stores information about the history of tags.
40 #
41 # The cache file consists of two parts. The first part maps head nodes
42 # to .hgtags filenodes. The second part is a history of tags. The two
43 # parts are separated by an empty line.
44 #
40 #
45 # The filenodes part of "tags" has effectively been superseded by
41 # The cache file consists of a cache validation line followed by a history
46 # "hgtagsfnodes1." It is being kept around for backwards compatbility.
42 # of tags.
47 #
43 #
48 # The first part consists of lines of the form:
44 # The cache validation line has the format:
49 #
45 #
50 # <headrev> <headnode> [<hgtagsnode>]
46 # <tiprev> <tipnode> [<filteredhash>]
51 #
47 #
52 # <headrev> is an integer revision and <headnode> is a 40 character hex
48 # <tiprev> is an integer revision and <tipnode> is a 40 character hex
53 # node for that changeset. These redundantly identify a repository
49 # node for that changeset. These redundantly identify the repository
54 # head from the time the cache was written.
50 # tip from the time the cache was written. In addition, <filteredhash>,
55 #
51 # if present, is a 40 character hex hash of the contents of the filtered
56 # <tagnode> is the filenode of .hgtags on that head. Heads with no .hgtags
52 # revisions for this filter. If the set of filtered revs changes, the
57 # file will have no <hgtagsnode> (just 2 values per line).
53 # hash will change and invalidate the cache.
58 #
54 #
59 # The filenode cache is ordered from tip to oldest (which is part of why
55 # The history part of the tags cache consists of lines of the form:
60 # <headrev> is there: a quick check of the tip from when the cache was
61 # written against the current tip is all that is needed to check whether
62 # the cache is up to date).
63 #
64 # The second part of the tags cache consists of lines of the form:
65 #
56 #
66 # <node> <tag>
57 # <node> <tag>
67 #
58 #
@@ -94,7 +85,7 b' def findglobaltags(ui, repo, alltags, ta'
94 assert len(alltags) == len(tagtypes) == 0, \
85 assert len(alltags) == len(tagtypes) == 0, \
95 "findglobaltags() should be called first"
86 "findglobaltags() should be called first"
96
87
97 (heads, tagfnode, cachetags, shouldwrite) = _readtagcache(ui, repo)
88 (heads, tagfnode, valid, cachetags, shouldwrite) = _readtagcache(ui, repo)
98 if cachetags is not None:
89 if cachetags is not None:
99 assert not shouldwrite
90 assert not shouldwrite
100 # XXX is this really 100% correct? are there oddball special
91 # XXX is this really 100% correct? are there oddball special
@@ -122,7 +113,7 b' def findglobaltags(ui, repo, alltags, ta'
122
113
123 # and update the cache (if necessary)
114 # and update the cache (if necessary)
124 if shouldwrite:
115 if shouldwrite:
125 _writetagcache(ui, repo, heads, tagfnode, alltags)
116 _writetagcache(ui, repo, valid, alltags)
126
117
127 def readlocaltags(ui, repo, alltags, tagtypes):
118 def readlocaltags(ui, repo, alltags, tagtypes):
128 '''Read local tags in repo. Update alltags and tagtypes.'''
119 '''Read local tags in repo. Update alltags and tagtypes.'''
@@ -256,20 +247,22 b' def _filename(repo):'
256 def _readtagcache(ui, repo):
247 def _readtagcache(ui, repo):
257 '''Read the tag cache.
248 '''Read the tag cache.
258
249
259 Returns a tuple (heads, fnodes, cachetags, shouldwrite).
250 Returns a tuple (heads, fnodes, validinfo, cachetags, shouldwrite).
260
251
261 If the cache is completely up-to-date, "cachetags" is a dict of the
252 If the cache is completely up-to-date, "cachetags" is a dict of the
262 form returned by _readtags() and "heads" and "fnodes" are None and
253 form returned by _readtags() and "heads", "fnodes", and "validinfo" are
263 "shouldwrite" is False.
254 None and "shouldwrite" is False.
264
255
265 If the cache is not up to date, "cachetags" is None. "heads" is a list
256 If the cache is not up to date, "cachetags" is None. "heads" is a list
266 of all heads currently in the repository, ordered from tip to oldest.
257 of all heads currently in the repository, ordered from tip to oldest.
267 "fnodes" is a mapping from head to .hgtags filenode. "shouldwrite" is
258 "validinfo" is a tuple describing cache validation info. This is used
268 True.
259 when writing the tags cache. "fnodes" is a mapping from head to .hgtags
260 filenode. "shouldwrite" is True.
269
261
270 If the cache is not up to date, the caller is responsible for reading tag
262 If the cache is not up to date, the caller is responsible for reading tag
271 info from each returned head. (See findglobaltags().)
263 info from each returned head. (See findglobaltags().)
272 '''
264 '''
265 import scmutil # avoid cycle
273
266
274 try:
267 try:
275 cachefile = repo.vfs(_filename(repo), 'r')
268 cachefile = repo.vfs(_filename(repo), 'r')
@@ -278,20 +271,17 b' def _readtagcache(ui, repo):'
278 except IOError:
271 except IOError:
279 cachefile = None
272 cachefile = None
280
273
281 cachetiprev = None
274 cacherev = None
282 cachetipnode = None
275 cachenode = None
276 cachehash = None
283 if cachefile:
277 if cachefile:
284 try:
278 try:
285 for i, line in enumerate(cachelines):
279 validline = cachelines.next()
286 # Getting the first line and consuming all fnode lines.
280 validline = validline.split()
287 if line == "\n":
281 cacherev = int(validline[0])
288 break
282 cachenode = bin(validline[1])
289 if i != 0:
283 if len(validline) > 2:
290 continue
284 cachehash = bin(validline[2])
291
292 line = line.split()
293 cachetiprev = int(line[0])
294 cachetipnode = bin(line[1])
295 except Exception:
285 except Exception:
296 # corruption of the cache, just recompute it.
286 # corruption of the cache, just recompute it.
297 pass
287 pass
@@ -303,20 +293,22 b' def _readtagcache(ui, repo):'
303 # (Unchanged tip trivially means no changesets have been added.
293 # (Unchanged tip trivially means no changesets have been added.
304 # But, thanks to localrepository.destroyed(), it also means none
294 # But, thanks to localrepository.destroyed(), it also means none
305 # have been destroyed by strip or rollback.)
295 # have been destroyed by strip or rollback.)
306 if (cachetiprev is not None
296 if (cacherev == tiprev
307 and cachetiprev == tiprev
297 and cachenode == tipnode
308 and cachetipnode == tipnode):
298 and cachehash == scmutil.filteredhash(repo, tiprev)):
309 tags = _readtags(ui, repo, cachelines, cachefile.name)
299 tags = _readtags(ui, repo, cachelines, cachefile.name)
310 cachefile.close()
300 cachefile.close()
311 return (None, None, tags, False)
301 return (None, None, None, tags, False)
312 if cachefile:
302 if cachefile:
313 cachefile.close() # ignore rest of file
303 cachefile.close() # ignore rest of file
314
304
305 valid = (tiprev, tipnode, scmutil.filteredhash(repo, tiprev))
306
315 repoheads = repo.heads()
307 repoheads = repo.heads()
316 # Case 2 (uncommon): empty repo; get out quickly and don't bother
308 # Case 2 (uncommon): empty repo; get out quickly and don't bother
317 # writing an empty cache.
309 # writing an empty cache.
318 if repoheads == [nullid]:
310 if repoheads == [nullid]:
319 return ([], {}, {}, False)
311 return ([], {}, valid, {}, False)
320
312
321 # Case 3 (uncommon): cache file missing or empty.
313 # Case 3 (uncommon): cache file missing or empty.
322
314
@@ -334,7 +326,7 b' def _readtagcache(ui, repo):'
334 if not len(repo.file('.hgtags')):
326 if not len(repo.file('.hgtags')):
335 # No tags have ever been committed, so we can avoid a
327 # No tags have ever been committed, so we can avoid a
336 # potentially expensive search.
328 # potentially expensive search.
337 return (repoheads, {}, None, True)
329 return (repoheads, {}, valid, None, True)
338
330
339 starttime = time.time()
331 starttime = time.time()
340
332
@@ -359,44 +351,26 b' def _readtagcache(ui, repo):'
359
351
360 # Caller has to iterate over all heads, but can use the filenodes in
352 # Caller has to iterate over all heads, but can use the filenodes in
361 # cachefnode to get to each .hgtags revision quickly.
353 # cachefnode to get to each .hgtags revision quickly.
362 return (repoheads, cachefnode, None, True)
354 return (repoheads, cachefnode, valid, None, True)
363
355
364 def _writetagcache(ui, repo, heads, tagfnode, cachetags):
356 def _writetagcache(ui, repo, valid, cachetags):
365 try:
357 try:
366 cachefile = repo.vfs(_filename(repo), 'w', atomictemp=True)
358 cachefile = repo.vfs(_filename(repo), 'w', atomictemp=True)
367 except (OSError, IOError):
359 except (OSError, IOError):
368 return
360 return
369
361
370 ui.log('tagscache', 'writing tags cache file with %d heads and %d tags\n',
362 ui.log('tagscache', 'writing tags cache file with %d tags\n',
371 len(heads), len(cachetags))
363 len(cachetags))
372
364
373 realheads = repo.heads() # for sanity checks below
365 if valid[2]:
374 for head in heads:
366 cachefile.write('%d %s %s\n' % (valid[0], hex(valid[1]), hex(valid[2])))
375 # temporary sanity checks; these can probably be removed
367 else:
376 # once this code has been in crew for a few weeks
368 cachefile.write('%d %s\n' % (valid[0], hex(valid[1])))
377 assert head in repo.changelog.nodemap, \
378 'trying to write non-existent node %s to tag cache' % short(head)
379 assert head in realheads, \
380 'trying to write non-head %s to tag cache' % short(head)
381 assert head != nullid, \
382 'trying to write nullid to tag cache'
383
384 # This can't fail because of the first assert above. When/if we
385 # remove that assert, we might want to catch LookupError here
386 # and downgrade it to a warning.
387 rev = repo.changelog.rev(head)
388
389 fnode = tagfnode.get(head)
390 if fnode:
391 cachefile.write('%d %s %s\n' % (rev, hex(head), hex(fnode)))
392 else:
393 cachefile.write('%d %s\n' % (rev, hex(head)))
394
369
395 # Tag names in the cache are in UTF-8 -- which is the whole reason
370 # Tag names in the cache are in UTF-8 -- which is the whole reason
396 # we keep them in UTF-8 throughout this module. If we converted
371 # we keep them in UTF-8 throughout this module. If we converted
397 # them local encoding on input, we would lose info writing them to
372 # them local encoding on input, we would lose info writing them to
398 # the cache.
373 # the cache.
399 cachefile.write('\n')
400 for (name, (node, hist)) in sorted(cachetags.iteritems()):
374 for (name, (node, hist)) in sorted(cachetags.iteritems()):
401 for n in hist:
375 for n in hist:
402 cachefile.write("%s %s\n" % (hex(n), name))
376 cachefile.write("%s %s\n" % (hex(n), name))
@@ -123,7 +123,7 b' extension and python hooks - use the eol'
123 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
123 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
124 $ hg blackbox -l 5
124 $ hg blackbox -l 5
125 1970/01/01 00:00:00 bob> update
125 1970/01/01 00:00:00 bob> update
126 1970/01/01 00:00:00 bob> writing tags cache file with 2 heads and 0 tags
126 1970/01/01 00:00:00 bob> writing tags cache file with 0 tags
127 1970/01/01 00:00:00 bob> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob)
127 1970/01/01 00:00:00 bob> pythonhook-preupdate: hgext.eol.preupdate finished in * seconds (glob)
128 1970/01/01 00:00:00 bob> exthook-update: echo hooked finished in * seconds (glob)
128 1970/01/01 00:00:00 bob> exthook-update: echo hooked finished in * seconds (glob)
129 1970/01/01 00:00:00 bob> update exited 0 after * seconds (glob)
129 1970/01/01 00:00:00 bob> update exited 0 after * seconds (glob)
@@ -318,7 +318,6 b' Dump the tag cache to ensure that it has'
318
318
319 $ cat .hg/cache/tags-visible
319 $ cat .hg/cache/tags-visible
320 1 [\da-f]{40} (re)
320 1 [\da-f]{40} (re)
321
322 $ hg qpush
321 $ hg qpush
323 applying test.patch
322 applying test.patch
324 now at: test.patch
323 now at: test.patch
@@ -330,7 +329,6 b' Dump the tag cache to ensure that it has'
330
329
331 $ cat .hg/cache/tags-visible
330 $ cat .hg/cache/tags-visible
332 2 [\da-f]{40} (re)
331 2 [\da-f]{40} (re)
333
334 $ checkundo qpush
332 $ checkundo qpush
335 $ cd ..
333 $ cd ..
336
334
@@ -1,6 +1,8 b''
1 $ cat >> $HGRCPATH << EOF
1 $ cat >> $HGRCPATH << EOF
2 > [extensions]
2 > [extensions]
3 > blackbox=
3 > rebase=
4 > rebase=
5 > mock=$TESTDIR/mockblackbox.py
4 >
6 >
5 > [experimental]
7 > [experimental]
6 > evolution = createmarkers
8 > evolution = createmarkers
@@ -21,11 +23,12 b' Create a repo with some tags'
21 $ hg commit -A -m newhead
23 $ hg commit -A -m newhead
22 adding newhead
24 adding newhead
23 created new head
25 created new head
24
26 $ hg tag -m 'test head 2 tag' head2
25 Trigger tags cache population by doing something that accesses tags info
26
27
27 $ hg log -G -T '{rev}:{node|short} {tags} {desc}\n'
28 $ hg log -G -T '{rev}:{node|short} {tags} {desc}\n'
28 @ 4:042eb6bfcc49 tip newhead
29 @ 5:2942a772f72a tip test head 2 tag
30 |
31 o 4:042eb6bfcc49 head2 newhead
29 |
32 |
30 | o 3:c3cb30f2d2cd test2 tag
33 | o 3:c3cb30f2d2cd test2 tag
31 | |
34 | |
@@ -36,35 +39,55 b' Trigger tags cache population by doing s'
36 o 0:55482a6fb4b1 test1 initial
39 o 0:55482a6fb4b1 test1 initial
37
40
38
41
42 Trigger tags cache population by doing something that accesses tags info
43
44 $ hg tags
45 tip 5:2942a772f72a
46 head2 4:042eb6bfcc49
47 test2 2:d75775ffbc6b
48 test1 0:55482a6fb4b1
49
39 $ cat .hg/cache/tags-visible
50 $ cat .hg/cache/tags-visible
40 4 042eb6bfcc4909bad84a1cbf6eb1ddf0ab587d41
51 5 2942a772f72a444bef4bef13874d515f50fa27b6
41 3 c3cb30f2d2cd0aae008cc91a07876e3c5131fd22 b3bce87817fe7ac9dca2834366c1d7534c095cf1
52 042eb6bfcc4909bad84a1cbf6eb1ddf0ab587d41 head2
42
43 55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
53 55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
44 d75775ffbc6bca1794d300f5571272879bd280da test2
54 d75775ffbc6bca1794d300f5571272879bd280da test2
45
55
46 Create some hidden changesets via a rebase and trigger tags cache
56 Hiding a non-tip changeset should change filtered hash and cause tags recompute
47 repopulation
57
58 $ hg debugobsolete -d '0 0' c3cb30f2d2cd0aae008cc91a07876e3c5131fd22 -u dummyuser
48
59
49 $ hg -q rebase -s 1 -d 4
60 $ hg tags
50 $ hg log -G -T '{rev}:{node|short} {tags} {desc}\n'
61 tip 5:2942a772f72a
51 o 7:eb610439e10e tip test2 tag
62 head2 4:042eb6bfcc49
52 |
63 test1 0:55482a6fb4b1
53 o 6:7b4af00c3c83 first
54 |
55 o 5:43ac2a539b3c test tag
56 |
57 @ 4:042eb6bfcc49 newhead
58 |
59 o 0:55482a6fb4b1 test1 initial
60
61
62 .hgtags filenodes for hidden heads should be visible (issue4550)
63 (currently broken)
64
64
65 $ cat .hg/cache/tags-visible
65 $ cat .hg/cache/tags-visible
66 7 eb610439e10e0c6b296f97b59624c2e24fc59e30 b3bce87817fe7ac9dca2834366c1d7534c095cf1
66 5 2942a772f72a444bef4bef13874d515f50fa27b6 f34fbc9a9769ba9eff5aff3d008a6b49f85c08b1
67
67 042eb6bfcc4909bad84a1cbf6eb1ddf0ab587d41 head2
68 55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
68 55482a6fb4b1881fa8f746fd52cf6f096bb21c89 test1
69 d75775ffbc6bca1794d300f5571272879bd280da test2
69
70 $ hg blackbox -l 4
71 1970/01/01 00:00:00 bob> tags
72 1970/01/01 00:00:00 bob> 2/2 cache hits/lookups in * seconds (glob)
73 1970/01/01 00:00:00 bob> writing tags cache file with 2 tags
74 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
75
76 Hiding another changeset should cause the filtered hash to change
77
78 $ hg debugobsolete -d '0 0' d75775ffbc6bca1794d300f5571272879bd280da -u dummyuser
79 $ hg debugobsolete -d '0 0' 5f97d42da03fd56f3b228b03dfe48af5c0adf75b -u dummyuser
70
80
81 $ hg tags
82 tip 5:2942a772f72a
83 head2 4:042eb6bfcc49
84
85 $ cat .hg/cache/tags-visible
86 5 2942a772f72a444bef4bef13874d515f50fa27b6 2fce1eec33263d08a4d04293960fc73a555230e4
87 042eb6bfcc4909bad84a1cbf6eb1ddf0ab587d41 head2
88
89 $ hg blackbox -l 4
90 1970/01/01 00:00:00 bob> tags
91 1970/01/01 00:00:00 bob> 1/1 cache hits/lookups in * seconds (glob)
92 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
93 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
@@ -133,7 +133,7 b' Tag cache debug info written to blackbox'
133 1970/01/01 00:00:00 bob> identify
133 1970/01/01 00:00:00 bob> identify
134 1970/01/01 00:00:00 bob> writing 48 bytes to cache/hgtagsfnodes1
134 1970/01/01 00:00:00 bob> writing 48 bytes to cache/hgtagsfnodes1
135 1970/01/01 00:00:00 bob> 0/1 cache hits/lookups in * seconds (glob)
135 1970/01/01 00:00:00 bob> 0/1 cache hits/lookups in * seconds (glob)
136 1970/01/01 00:00:00 bob> writing tags cache file with 1 heads and 1 tags
136 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
137 1970/01/01 00:00:00 bob> identify exited 0 after ?.?? seconds (glob)
137 1970/01/01 00:00:00 bob> identify exited 0 after ?.?? seconds (glob)
138
138
139 Failure to acquire lock results in no write
139 Failure to acquire lock results in no write
@@ -146,7 +146,7 b' Failure to acquire lock results in no wr'
146 1970/01/01 00:00:00 bob> identify
146 1970/01/01 00:00:00 bob> identify
147 1970/01/01 00:00:00 bob> not writing .hg/cache/hgtagsfnodes1 because lock held
147 1970/01/01 00:00:00 bob> not writing .hg/cache/hgtagsfnodes1 because lock held
148 1970/01/01 00:00:00 bob> 0/1 cache hits/lookups in * seconds (glob)
148 1970/01/01 00:00:00 bob> 0/1 cache hits/lookups in * seconds (glob)
149 1970/01/01 00:00:00 bob> writing tags cache file with 1 heads and 1 tags
149 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
150 1970/01/01 00:00:00 bob> identify exited 0 after * seconds (glob)
150 1970/01/01 00:00:00 bob> identify exited 0 after * seconds (glob)
151
151
152 $ fnodescacheexists
152 $ fnodescacheexists
@@ -312,10 +312,7 b' Detailed dump of tag info:'
312 Dump cache:
312 Dump cache:
313
313
314 $ cat .hg/cache/tags-visible
314 $ cat .hg/cache/tags-visible
315 4 0c192d7d5e6b78a714de54a2e9627952a877e25a 0c04f2a8af31de17fab7422878ee5a2dadbc943d
315 4 0c192d7d5e6b78a714de54a2e9627952a877e25a
316 3 6fa450212aeb2a21ed616a54aea39a4a27894cd7 7d3b718c964ef37b89e550ebdafd5789e76ce1b0
317 2 7a94127795a33c10a370c93f731fd9fea0b79af6 0c04f2a8af31de17fab7422878ee5a2dadbc943d
318
319 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
316 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
320 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
317 bbd179dfa0a71671c253b3ae0aa1513b60d199fa bar
321 78391a272241d70354aa14c874552cad6b51bb42 bar
318 78391a272241d70354aa14c874552cad6b51bb42 bar
@@ -346,7 +343,7 b' Extra junk data at the end should get ov'
346 1970/01/01 00:00:00 bob> tags
343 1970/01/01 00:00:00 bob> tags
347 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
344 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
348 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
345 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
349 1970/01/01 00:00:00 bob> writing tags cache file with 3 heads and 1 tags
346 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
350 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
347 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
351
348
352 #if unix-permissions no-root
349 #if unix-permissions no-root
@@ -366,7 +363,7 b' Errors writing to .hgtags fnodes cache a'
366 1970/01/01 00:00:00 bob> tags
363 1970/01/01 00:00:00 bob> tags
367 1970/01/01 00:00:00 bob> couldn't write cache/hgtagsfnodes1: [Errno 13] Permission denied: '$TESTTMP/t2/.hg/cache/hgtagsfnodes1'
364 1970/01/01 00:00:00 bob> couldn't write cache/hgtagsfnodes1: [Errno 13] Permission denied: '$TESTTMP/t2/.hg/cache/hgtagsfnodes1'
368 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
365 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
369 1970/01/01 00:00:00 bob> writing tags cache file with 3 heads and 1 tags
366 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
370 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
367 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
371
368
372 $ chmod a+w .hg/cache/hgtagsfnodes1
369 $ chmod a+w .hg/cache/hgtagsfnodes1
@@ -381,7 +378,7 b' Errors writing to .hgtags fnodes cache a'
381 1970/01/01 00:00:00 bob> tags
378 1970/01/01 00:00:00 bob> tags
382 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
379 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
383 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
380 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
384 1970/01/01 00:00:00 bob> writing tags cache file with 3 heads and 1 tags
381 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
385 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
382 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
386
383
387 $ f --size .hg/cache/hgtagsfnodes1
384 $ f --size .hg/cache/hgtagsfnodes1
@@ -397,7 +394,7 b" Stripping doesn't truncate the tags cach"
397 $ hg blackbox -l 4
394 $ hg blackbox -l 4
398 1970/01/01 00:00:00 bob> tags
395 1970/01/01 00:00:00 bob> tags
399 1970/01/01 00:00:00 bob> 3/3 cache hits/lookups in * seconds (glob)
396 1970/01/01 00:00:00 bob> 3/3 cache hits/lookups in * seconds (glob)
400 1970/01/01 00:00:00 bob> writing tags cache file with 3 heads and 1 tags
397 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
401 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
398 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
402
399
403 $ f --size .hg/cache/hgtagsfnodes1
400 $ f --size .hg/cache/hgtagsfnodes1
@@ -414,7 +411,7 b" Stripping doesn't truncate the tags cach"
414 1970/01/01 00:00:00 bob> tags
411 1970/01/01 00:00:00 bob> tags
415 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
412 1970/01/01 00:00:00 bob> writing 24 bytes to cache/hgtagsfnodes1
416 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
413 1970/01/01 00:00:00 bob> 2/3 cache hits/lookups in * seconds (glob)
417 1970/01/01 00:00:00 bob> writing tags cache file with 3 heads and 1 tags
414 1970/01/01 00:00:00 bob> writing tags cache file with 1 tags
418 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
415 1970/01/01 00:00:00 bob> tags exited 0 after * seconds (glob)
419 $ f --size .hg/cache/hgtagsfnodes1
416 $ f --size .hg/cache/hgtagsfnodes1
420 .hg/cache/hgtagsfnodes1: size=144
417 .hg/cache/hgtagsfnodes1: size=144
General Comments 0
You need to be logged in to leave comments. Login now