[PATCH 1 of 3] Add a new function, filesystem_case

Adrian Buehlmann adrian at cadifra.com
Sun Apr 27 14:42:48 CDT 2008


On 27.04.2008 21:19, Adrian Buehlmann wrote:
> On 27.04.2008 19:29, Patrick Mézard wrote:
>> Paul Moore a écrit :
>>> 2008/4/27 Adrian Buehlmann <adrian at cadifra.com>:
>>>> On 26.04.2008 17:57, Matt Mackall wrote:
>>>>  > I think we should only need to use checkfolding once per hg invocation, on the
>>>>  > repository's .hg directory.
>>>>
>>>>  Suggestion: add new member function foldspaths on class
>>>>  mercurial.localrepo.localrepository:
>>> Hmm, I think this should be a dirstate member - only the filesystem
>>> has case folding behaviour, and the dirstate reflects the working
>>> directory, ie the filesystem.
>> Yes. It would also make easier to separate the working directory from the store, as it was discussed a month ago on the general list.
> 
> Fair enough. In case a method of localrepository needs to know whether the fs folds
> paths or not, it can use self.dirstate.foldspaths() anyway.
> 
> It seems dirstate doesn't know its repository, so it would probably
> need to store that _foldspaths too -- a duplication that can be avoided.
> 
> So here is the update:

Or:

diff -r 626cb86a6523 mercurial/dirstate.py
--- a/mercurial/dirstate.py     Thu Apr 24 17:16:02 2008 +0200
+++ b/mercurial/dirstate.py     Sun Apr 27 21:38:53 2008 +0200
@@ -66,11 +66,18 @@
         elif name == '_checkexec':
             self._checkexec = util.checkexec(self._root)
             return self._checkexec
+        elif name == '_foldspaths':
+            self._foldspaths = not util.checkfolding(self._join('.hg'))
         else:
             raise AttributeError, name

     def _join(self, f):
         return os.path.join(self._root, f)
+
+    def foldspaths(self):
+        '''True, if the working dir is on a file system that folds paths.
+        Assumed to be invariant and steady over the whole working dir.'''
+        return self._foldspaths

     def getcwd(self):
         cwd = os.getcwd()


More information about the Mercurial-devel mailing list