Canonicalize paths before linking in gclient-new-workdir.py
This fixes the case where a new workdir is created from a repository
which was previously created with gclient-new-workdir.py and that
repository is later deleted, rendering the symbolic links created by
gclient-new-workdir.py invalid.
It also fixes support_cow() returning 'True' in that case because 'cp
--reflink' does not fail when copying a symlink.
Bug: 721585
Change-Id: I84f4d80b8698af0da346be559d46a328ec0d0e9b
Reviewed-on: https://chromium-review.googlesource.com/842402
Reviewed-by: Aaron Gable <agable@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
diff --git a/git_common.py b/git_common.py
index 7ce0edb..31b74fc 100644
--- a/git_common.py
+++ b/git_common.py
@@ -1047,4 +1047,7 @@
link_dir = os.path.dirname(os.path.join(new_workdir, link))
if not os.path.exists(link_dir):
os.makedirs(link_dir)
- operation(os.path.join(repository, link), os.path.join(new_workdir, link))
+ src = os.path.join(repository, link)
+ if os.path.islink(src):
+ src = os.realpath(src)
+ operation(src, os.path.join(new_workdir, link))