mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
clone: save hardlink state of util.copyfiles()
When trying to do hardlink-cloning, the os_link() call of the first file tried already fails on Windows, if the source is on a UNC path. This change avoids calling os_link() for the rest of files, leaving us with a *single* failed os_link() call per clone operation, if the source can't do hardlinks.
This commit is contained in:
parent
a5e4e78e6f
commit
008aa04539
@ -277,6 +277,7 @@ def clone(ui, source, dest=None, pull=False, rev=None, update=True,
|
|||||||
% dest)
|
% dest)
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
hardlink = None
|
||||||
for f in src_repo.store.copylist():
|
for f in src_repo.store.copylist():
|
||||||
src = os.path.join(src_repo.sharedpath, f)
|
src = os.path.join(src_repo.sharedpath, f)
|
||||||
dst = os.path.join(dest_path, f)
|
dst = os.path.join(dest_path, f)
|
||||||
@ -287,7 +288,7 @@ def clone(ui, source, dest=None, pull=False, rev=None, update=True,
|
|||||||
if dst.endswith('data'):
|
if dst.endswith('data'):
|
||||||
# lock to avoid premature writing to the target
|
# lock to avoid premature writing to the target
|
||||||
dest_lock = lock.lock(os.path.join(dstbase, "lock"))
|
dest_lock = lock.lock(os.path.join(dstbase, "lock"))
|
||||||
util.copyfiles(src, dst)
|
hardlink = util.copyfiles(src, dst, hardlink)
|
||||||
|
|
||||||
# we need to re-init the repo after manually copying the data
|
# we need to re-init the repo after manually copying the data
|
||||||
# into it
|
# into it
|
||||||
|
Loading…
Reference in New Issue
Block a user