mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
scmutil: change canonpath to use util.samefile (issue2167)
Fixes (on Windows in cmd.exe): $ hg -R v:\x\a status V:\x\a\bar abort: V:\x\a\bar not under root where v:\x\a is a valid repository with a checked-out file "bar" (Note the difference in casing: "v:\" versus "V:\")
This commit is contained in:
parent
aea748445b
commit
9a9882a6d8
@ -324,18 +324,16 @@ def canonpath(root, cwd, myname, auditor=None):
|
||||
else:
|
||||
# Determine whether `name' is in the hierarchy at or beneath `root',
|
||||
# by iterating name=dirname(name) until that causes no change (can't
|
||||
# check name == '/', because that doesn't work on windows). For each
|
||||
# `name', compare dev/inode numbers. If they match, the list `rel'
|
||||
# holds the reversed list of components making up the relative file
|
||||
# name we want.
|
||||
root_st = os.stat(root)
|
||||
# check name == '/', because that doesn't work on windows). The list
|
||||
# `rel' holds the reversed list of components making up the relative
|
||||
# file name we want.
|
||||
rel = []
|
||||
while True:
|
||||
try:
|
||||
name_st = os.stat(name)
|
||||
s = util.samefile(name, root)
|
||||
except OSError:
|
||||
name_st = None
|
||||
if name_st and util.samestat(name_st, root_st):
|
||||
s = False
|
||||
if s:
|
||||
if not rel:
|
||||
# name was actually the same as root (maybe a symlink)
|
||||
return ''
|
||||
|
Loading…
Reference in New Issue
Block a user