changeset 419:28511fc21073

[PATCH] file seperator handling for the other 'OS' -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 [PATCH] file seperator handling for the other 'OS' From: K Thananchayan <thananck@yahoo.com> The following patch maintains repo root relative source file names in canonical form (with '/' as file seperator). Mercurial calls os.path.join, os.path.normpath, os.path.walk that use platform's file seperator. This patch does not change seperator in these circumstances (except when the result refer to source files). manifest hash: 2fbb4cb0d3d0bc4f4de5c7c8803fb738072ec6c5 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCuNuBywK+sNU5EO8RAhAZAKCV8cz11+rdof9n1tHb0uDScF34GgCeITNi 4aVikToPXqXyReN9kFP5pnY= =xcV5 -----END PGP SIGNATURE-----
author mpm@selenic.com
date Tue, 21 Jun 2005 19:31:13 -0800
parents 0446f698d38e
children dbe86d465e09
files mercurial/commands.py mercurial/hg.py mercurial/util.py
diffstat 3 files changed, 23 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Tue Jun 21 19:28:53 2005 -0800
+++ b/mercurial/commands.py	Tue Jun 21 19:31:13 2005 -0800
@@ -6,7 +6,7 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import os, re, sys, signal
-import fancyopts, ui, hg
+import fancyopts, ui, hg, util
 from demandload import *
 demandload(globals(), "mdiff time hgweb traceback random signal errno")
 
@@ -16,20 +16,20 @@
     l = [ x for x in files if x in filters ]
 
     for t in filters:
-        if t and t[-1] != os.sep: t += os.sep
+        if t and t[-1] != "/": t += "/"
         l += [ x for x in files if x.startswith(t) ]
     return l
 
 def relfilter(repo, files):
     if os.getcwd() != repo.root:
         p = os.getcwd()[len(repo.root) + 1: ]
-        return filterfiles([p], files)
+        return filterfiles([util.pconvert(p)], files)
     return files
 
 def relpath(repo, args):
     if os.getcwd() != repo.root:
         p = os.getcwd()[len(repo.root) + 1: ]
-        return [ os.path.normpath(os.path.join(p, x)) for x in args ]
+        return [ util.pconvert(os.path.normpath(os.path.join(p, x))) for x in args ]
     return args
 
 def dodiff(ui, repo, path, files = None, node1 = None, node2 = None):
--- a/mercurial/hg.py	Tue Jun 21 19:28:53 2005 -0800
+++ b/mercurial/hg.py	Tue Jun 21 19:31:13 2005 -0800
@@ -6,6 +6,7 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import sys, struct, os
+import util
 from revlog import *
 from demandload import *
 demandload(globals(), "re lock urllib urllib2 transaction time socket")
@@ -389,7 +390,7 @@
                 l = file(self.wjoin(".hgignore"))
                 for pat in l:
                     if pat != "\n":
-                        self.ignorelist.append(re.compile(pat[:-1]))
+                        self.ignorelist.append(re.compile(util.pconvert(pat[:-1])))
             except IOError: pass
         for pat in self.ignorelist:
             if pat.search(f): return True
@@ -639,7 +640,7 @@
             if ".hg" in subdirs: subdirs.remove(".hg")
             
             for f in files:
-                fn = os.path.join(d, f)
+                fn = util.pconvert(os.path.join(d, f))
                 try: s = os.stat(os.path.join(self.root, fn))
                 except: continue
                 if fn in dc:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/util.py	Tue Jun 21 19:31:13 2005 -0800
@@ -0,0 +1,16 @@
+# util.py - utility functions and platform specfic implementations
+#
+# Copyright 2005 K. Thananchayan <thananck@yahoo.com>
+#
+# This software may be used and distributed according to the terms
+# of the GNU General Public License, incorporated herein by reference.
+
+import os
+
+if os.name == 'nt':
+    def pconvert(path):
+        return path.replace("\\", "/")
+else:
+    def pconvert(path):
+        return path
+