From 73356f1d5ccbebf5a33e5e9aa1ba06c5f5437fed Mon Sep 17 00:00:00 2001 From: Josip Sokcevic Date: Wed, 20 Mar 2024 21:48:34 +0000 Subject: [PATCH] project: Check if dotgit exists w/out symlink check os.path.exists returns false on a broken symlink. This is not what repo needs when checking if a project is setup properly. For example, if src/foo/.git can't be resolved, repo tries to create symlink and that results in FileExistsError. Use lexists which returns True even if symlink is broken. That will force path where repo checks where symlink is pointing to and will fix it to the correct location. Bug: b/281746795 Change-Id: Id3f7dc3a3cb6499d02ce7335eca992ddc7deb645 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/415197 Tested-by: Josip Sokcevic Commit-Queue: Josip Sokcevic Reviewed-by: George Engelbrecht Reviewed-by: Greg Edelston --- project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project.py b/project.py index 7d6b6cea..1f5e4c35 100644 --- a/project.py +++ b/project.py @@ -3341,7 +3341,7 @@ class Project: if not platform_utils.islink(dotgit) and platform_utils.isdir(dotgit): self._MigrateOldWorkTreeGitDir(dotgit, project=self.name) - init_dotgit = not os.path.exists(dotgit) + init_dotgit = not os.path.lexists(dotgit) if self.use_git_worktrees: if init_dotgit: self._InitGitWorktree()