[PATCH 1/6] Recognize magic pathspec as filenames
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
.. so that "git log :/" works, not so sure this is correct though
setup.c | 16 +++++++---------
1 files changed, 7 insertions(+), 9 deletions(-)
diff --git a/setup.c b/setup.c
index 27c1d47..08f605b 100644
--- a/setup.c
+++ b/setup.c
@@ -58,15 +58,8 @@ static void NORETURN die_verify_filename(const char *prefix, const char *arg)
unsigned char sha1[20];
unsigned mode;
- /*
- * Saying "'(icase)foo' does not exist in the index" when the
- * user gave us ":(icase)foo" is just stupid. A magic pathspec
- * begins with a colon and is followed by a non-alnum; do not
- * let get_sha1_with_mode_1(only_to_die=1) to even trigger.
- */
- if (!(arg[0] == ':' && !isalnum(arg[1])))
- /* try a detailed diagnostic ... */
- get_sha1_with_mode_1(arg, sha1, &mode, 1, prefix);
+ /* try a detailed diagnostic ... */
+ get_sha1_with_mode_1(arg, sha1, &mode, 1, prefix);
/* ... or fall back the most general message. */
die("ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -85,6 +78,11 @@ void verify_filename(const char *prefix, const char *arg)
{
if (*arg == '-')
die("bad flag '%s' used after filename", arg);
+
+ /* If it's magic pathspec, just assume it's file name */
+ if (arg[0] == ':' && is_pathspec_magic(arg[1]))
+ return;
+
if (check_filename(prefix, arg))
return;
die_verify_filename(prefix, arg);
--
1.7.3.1.256.g2539c.dirty