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

Adrian Buehlmann adrian at cadifra.com
Sat Oct 6 17:25:02 CDT 2012


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1349032934 -7200
# Node ID 84dedf0a19d850859fc773a1b56c58a82eb16e8c
# Parent  827593a8a12bda9a35524bacf052b81d0e794652
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
@@ -411,7 +411,8 @@
 class fncache(object):
     # the filename used to be partially encoded
     # hence the encodedir/decodedir dance
-    def __init__(self, opener):
+    def __init__(self, opener, version):
+        self._version = version
         self.opener = opener
         self.entries = None
         self._dirty = False
@@ -425,7 +426,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):
@@ -437,7 +441,10 @@
     def _write(self, files, atomictemp):
         fp = self.opener('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
 
@@ -497,7 +504,7 @@
         self.createmode = _calcmode(self.path)
         vfs = vfstype(self.path)
         vfs.createmode = self.createmode
-        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