[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-----
This commit is contained in:
mpm@selenic.com 2005-06-21 19:31:13 -08:00
parent 0ae2f84e6d
commit 1a1ca5cd0e
3 changed files with 23 additions and 6 deletions

View File

@ -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 @@ def filterfiles(filters, files):
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):

View File

@ -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 @@ class localrepository:
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 @@ class localrepository:
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:

16
mercurial/util.py Normal file
View File

@ -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