[PATCH 5 of 7 V3 of F2 series] store: add version parameter to class fncache

Adrian Buehlmann adrian at cadifra.com
Mon Oct 8 16:49:50 CDT 2012


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1349732281 -7200
# Node ID 47772d313e39d804d421a17579316325541f0e7b
# Parent  b994283cdc11f50ce8ce756596c0a1265d9373f5
store: add version parameter to class fncache

version 2 doesn't encodedir the files in the fncache file

diff --git a/mercurial/store.py b/mercurial/store.py
--- a/mercurial/store.py
+++ b/mercurial/store.py
@@ -413,7 +413,8 @@
 class fncache(object):
     # the filename used to be partially encoded
     # hence the encodedir/decodedir dance
-    def __init__(self, vfs):
+    def __init__(self, vfs, version):
+        self._version = version
         self.vfs = vfs
         self.entries = None
         self._dirty = False
@@ -427,7 +428,10 @@
             # skip nonexistent file
             self.entries = set()
             return
-        self.entries = set(decodedir(fp.read()).splitlines())
+        if self._version == 2:
+            self.entries = set(fp.read().splitlines())
+        else:
+            self.entries = set(decodedir(fp.read()).splitlines())
         if '' in self.entries:
             fp.seek(0)
             for n, line in enumerate(fp):
@@ -439,7 +443,10 @@
     def _write(self, files, atomictemp):
         fp = self.vfs('fncache', mode='wb', atomictemp=atomictemp)
         if files:
-            fp.write(encodedir('\n'.join(files) + '\n'))
+            if self._version == 2:
+                fp.write('\n'.join(files) + '\n')
+            else:
+                fp.write(encodedir('\n'.join(files) + '\n'))
         fp.close()
         self._dirty = False
 
@@ -506,7 +513,7 @@
         self.createmode = _calcmode(vfs)
         vfs.createmode = self.createmode
         self.rawvfs = vfs
-        fnc = fncache(vfs)
+        fnc = fncache(vfs, version)
         self.fncache = fnc
         self.vfs = _fncachevfs(vfs, fnc, encode)
         self.opener = self.vfs


More information about the Mercurial-devel mailing list