Fix rel path logic when transferring symlinks

This commit is contained in:
Kovid Goyal 2021-11-05 21:39:07 +05:30
parent d9f4fadf2d
commit 8e8a0d2df6
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 4 additions and 18 deletions

View File

@ -201,17 +201,9 @@ class Manager:
target = rid_map.get(f.remote_target)
if target is None:
return f'Symbolic link with remote id: {f.remote_target} not found'
if f.remote_symlink_value.startswith(b'/'):
lt = target.expanded_local_path
else:
lt = target.expanded_local_path
try:
cp = os.path.commonpath((f.expanded_local_path, lt))
except ValueError:
pass
else:
if cp:
lt = os.path.relpath(lt, cp)
lt = target.expanded_local_path
if not f.remote_symlink_value.startswith(b'/'):
lt = os.path.relpath(lt, os.path.dirname(f.expanded_local_path))
else:
lt = f.remote_symlink_value.decode('utf-8')
os.symlink(lt, f.expanded_local_path)

View File

@ -429,13 +429,7 @@ class DestFile:
if lt.startswith('fid:'):
lt = all_files[lt[4:]].name
if self.ftype is FileType.symlink:
try:
cp = os.path.commonpath((self.name, lt))
except ValueError:
pass
else:
if cp:
lt = os.path.relpath(lt, cp)
lt = os.path.relpath(lt, os.path.dirname(self.name))
elif lt.startswith('fid_abs:'):
lt = all_files[lt[8:]].name
elif lt.startswith('path:'):