sync: Delete symlinks relative to client topdir
If repo sync is invoked outside the repo root, and the latest manifest
removes symlinks, repo incorrectly tries to remove symlink - it starts
from `cwd` instead of the repo root.
Bug: b/113935847
Bug: 40010423
Change-Id: Ia50ea70a376e38c94389880f020c80da3c3f453c
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/445901
Tested-by: Josip Sokcevic <sokcevic@chromium.org>
Reviewed-by: Gavin Mak <gavinmak@google.com>
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 17c8b9b..7c4c468 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -1442,7 +1442,10 @@
for need_remove_file in need_remove_files:
# Try to remove the updated copyfile or linkfile.
# So, if the file is not exist, nothing need to do.
- platform_utils.remove(need_remove_file, missing_ok=True)
+ platform_utils.remove(
+ os.path.join(self.client.topdir, need_remove_file),
+ missing_ok=True,
+ )
# Create copy-link-files.json, save dest path of "copyfile" and
# "linkfile".