diff --git a/mercurial/patch.py b/mercurial/patch.py --- a/mercurial/patch.py +++ b/mercurial/patch.py @@ -417,12 +417,12 @@ class fsbackend(abstractbackend): return os.path.join(self.opener.base, f) def getfile(self, fname): - path = self._join(fname) - if os.path.islink(path): - return (os.readlink(path), (True, False)) + if self.opener.islink(fname): + return (self.opener.readlink(fname), (True, False)) + isexec = False try: - isexec = os.lstat(path).st_mode & 0100 != 0 + isexec = self.opener.lstat(fname).st_mode & 0100 != 0 except OSError, e: if e.errno != errno.ENOENT: raise @@ -431,17 +431,17 @@ class fsbackend(abstractbackend): def setfile(self, fname, data, mode, copysource): islink, isexec = mode if data is None: - util.setflags(self._join(fname), islink, isexec) + self.opener.setflags(fname, islink, isexec) return if islink: self.opener.symlink(data, fname) else: self.opener.write(fname, data) if isexec: - util.setflags(self._join(fname), False, True) + self.opener.setflags(fname, False, True) def unlink(self, fname): - util.unlinkpath(self._join(fname), ignoremissing=True) + self.opener.unlinkpath(fname, ignoremissing=True) def writerej(self, fname, failed, total, lines): fname = fname + ".rej" @@ -453,7 +453,7 @@ class fsbackend(abstractbackend): fp.close() def exists(self, fname): - return os.path.lexists(self._join(fname)) + return self.opener.lexists(fname) class workingbackend(fsbackend): def __init__(self, ui, repo, similarity):