Skip to content

Commit 28fcc0b

Browse files
pcloudsgitster
authored andcommitted
pathspec: avoid the need of "--" when wildcard is used
When "--" is lacking from the command line and a command can take both revs and paths, the idea is if an argument can be seen as both an extended SHA-1 and a path, then "--" is required or git refuses to continue. It's currently implemented as: (1) if an argument is rev, then it must not exist in worktree (2) else, it must exist in worktree (3) else, "--" is required. These rules work for literal paths, but when non-literal pathspec is involved, it almost always requires the user to add "--" because it fails (2) and (1) is really rarely met (take "*.c" for example, (1) is met if there is a ref named "*.c"). This patch modifies the rules a bit by considering any valid (*) wildcard pathspec "exist in worktree". The rules become: (1) if an arg is a rev, then it must either exist in worktree or not be a valid wildcard pathspec. (2) else, it either exists in worktree or is a wildcard pathspec (3) else, "--" is required. With the new rules, "--" is not needed most of the time when wildcard pathspec is involved. Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3d4a3ff commit 28fcc0b

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

setup.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,9 @@ int check_filename(const char *prefix, const char *arg)
140140
if (arg[2] == '\0') /* ":/" is root dir, always exists */
141141
return 1;
142142
name = arg + 2;
143-
} else if (prefix)
143+
} else if (!no_wildcard(arg))
144+
return 1;
145+
else if (prefix)
144146
name = prefix_filename(prefix, strlen(prefix), arg);
145147
else
146148
name = arg;

0 commit comments

Comments
 (0)