diff mercurial/tags.py @ 13272:5ccdca7df211

move tags.cache and branchheads.cache to a collected cache folder .hg/cache/ The generation of cache files like tags.cache and branchheads.cache is not an actual reflection of things changing in the whole of the .hg directory (like eg a commit or a rebase or something) but instead these cache files are just part of bookkeeping. As such its convienant to allow various clients to ignore file events to do with these cache files which would otherwise cause a double refresh. Eg one refresh might occur after a commit, but the act of refreshing after the commit would cause Mercurial to generate a new branchheads.cache which would then cause a second refresh, for clients. However if these cache files are moved into a directory like eg .hg/cache/ then GUI clients on OSX (and possibly other platforms) can happily ignore file events in this cache directory.
author jfh <jason@jasonfharris.com>
date Tue, 04 Jan 2011 06:29:08 +0100
parents d1245ce817a8
children 4e33ef68b1f8
line wrap: on
line diff
--- a/mercurial/tags.py	Sun Jan 16 17:26:34 2011 +0100
+++ b/mercurial/tags.py	Tue Jan 04 06:29:08 2011 +0100
@@ -12,6 +12,7 @@
 
 from node import nullid, bin, hex, short
 from i18n import _
+import os.path
 import encoding
 import error
 
@@ -151,7 +152,7 @@
     set, caller is responsible for reading tag info from each head.'''
 
     try:
-        cachefile = repo.opener('tags.cache', 'r')
+        cachefile = repo.opener(os.path.join('cache', 'tags'), 'r')
         # force reading the file for static-http
         cachelines = iter(cachefile)
     except IOError:
@@ -185,8 +186,8 @@
                     fnode = bin(line[2])
                     cachefnode[headnode] = fnode
         except (ValueError, TypeError):
-            # corruption of tags.cache, just recompute it
-            ui.warn(_('.hg/tags.cache is corrupt, rebuilding it\n'))
+            # corruption of the tags cache, just recompute it
+            ui.warn(_('.hg/cache/tags is corrupt, rebuilding it\n'))
             cacheheads = []
             cacherevs = []
             cachefnode = {}
@@ -248,7 +249,8 @@
 def _writetagcache(ui, repo, heads, tagfnode, cachetags):
 
     try:
-        cachefile = repo.opener('tags.cache', 'w', atomictemp=True)
+        cachefile = repo.opener(os.path.join('cache', 'tags'), 'w',
+                                atomictemp=True)
     except (OSError, IOError):
         return