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".