mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
context: use "vfs.lstat()" to examine target path instead of "os.path.*"
This patch gets stat object of target path by "vfs.lstat()", and examines stat object to know the type of it. This follows the way in "workingctx.add()". This should be cheaper than original implementation invoking "lexists()", "isfile()" and "islink()".
This commit is contained in:
parent
269961e114
commit
52c2363e13
@ -1173,10 +1173,14 @@ class workingctx(committablectx):
|
||||
wlock.release()
|
||||
|
||||
def copy(self, source, dest):
|
||||
p = self._repo.wjoin(dest)
|
||||
if not os.path.lexists(p):
|
||||
try:
|
||||
st = self._repo.wvfs.lstat(dest)
|
||||
except OSError, err:
|
||||
if err.errno != errno.ENOENT:
|
||||
raise
|
||||
self._repo.ui.warn(_("%s does not exist!\n") % dest)
|
||||
elif not (os.path.isfile(p) or os.path.islink(p)):
|
||||
return
|
||||
if not (stat.S_ISREG(st.st_mode) or stat.S_ISLNK(st.st_mode)):
|
||||
self._repo.ui.warn(_("copy failed: %s is not a file or a "
|
||||
"symbolic link\n") % dest)
|
||||
else:
|
||||
|
Loading…
Reference in New Issue
Block a user