changeset 23582:7559dc8c4238

vfs: add a 'split' method This method has the same behavior as the 'os.path.split' function, but having it in vfs will allow handling of tricky encoding situations in the future. In the same patch, we replace the use of 'os.path.split' in the transaction code.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Mon, 15 Dec 2014 13:32:34 -0800
parents aed981c7bebf
children a8edcb9c1199
files mercurial/scmutil.py mercurial/transaction.py
diffstat 2 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmutil.py	Mon Dec 15 13:27:46 2014 -0800
+++ b/mercurial/scmutil.py	Mon Dec 15 13:32:34 2014 -0800
@@ -268,6 +268,12 @@
         to allow handling of strange encoding if needed."""
         return os.path.join(*paths)
 
+    def split(self, path):
+        """split top-most element of a path (as os.path.split would do)
+
+        This exists to allow handling of strange encoding if needed."""
+        return os.path.split(path)
+
     def lexists(self, path=None):
         return os.path.lexists(self.join(path))
 
--- a/mercurial/transaction.py	Mon Dec 15 13:27:46 2014 -0800
+++ b/mercurial/transaction.py	Mon Dec 15 13:32:34 2014 -0800
@@ -12,7 +12,6 @@
 # GNU General Public License version 2 or any later version.
 
 from i18n import _
-import os
 import errno
 import error, util
 
@@ -198,9 +197,9 @@
 
         if file in self.map or file in self._backupmap:
             return
-        dirname, filename = os.path.split(file)
+        vfs = self._vfsmap[location]
+        dirname, filename = vfs.split(file)
         backupfilename = "%s.backup.%s" % (self.journal, filename)
-        vfs = self._vfsmap[location]
         backupfile = vfs.reljoin(dirname, backupfilename)
         if vfs.exists(file):
             filepath = vfs.join(file)