project.py: Fix check for wild cards
The intention of the check is to verify whether the target
file name contains a wild card. The code, however, assumes
that if the file is non-existent - it contains a wild card.
This has the side effect that a target file that does not
exist at the moment of the check is considered to contain a
wild card, this leads itself to softlink not being created.
Change-Id: I4e4cd7b5e1b8ce2e4b2edc9abf5a1147cd86242f
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/265736
Reviewed-by: Mike Frysinger <vapier@google.com>
Tested-by: Angel Petkov <apetkov86@gmail.com>
diff --git a/project.py b/project.py
index 2687e37..63696e5 100644
--- a/project.py
+++ b/project.py
@@ -405,8 +405,8 @@
else:
src = _SafeExpandPath(self.git_worktree, self.src)
- if os.path.exists(src):
- # Entity exists so just a simple one to one link operation.
+ if not glob.has_magic(src):
+ # Entity does not contain a wild card so just a simple one to one link operation.
dest = _SafeExpandPath(self.topdir, self.dest, skipfinal=True)
# dest & src are absolute paths at this point. Make sure the target of
# the symlink is relative in the context of the repo client checkout.
@@ -414,7 +414,7 @@
self.__linkIt(relpath, dest)
else:
dest = _SafeExpandPath(self.topdir, self.dest)
- # Entity doesn't exist assume there is a wild card
+ # Entity contains a wild card.
if os.path.exists(dest) and not platform_utils.isdir(dest):
_error('Link error: src with wildcard, %s must be a directory', dest)
else: