summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-02-08 05:05:28 (GMT)
committerJunio C Hamano <gitster@pobox.com>2017-02-10 21:19:10 (GMT)
commit42ebeb9d07de3c6d3a263f8ebce0508e489e5cc9 (patch)
tree234f4e3d7bfc1e7464da0447fd2ba95b41aef93f
parent6e3a7b3398559305c7a239a42e447c21a8f39ff8 (diff)
downloadgit-42ebeb9d07de3c6d3a263f8ebce0508e489e5cc9.zip
git-42ebeb9d07de3c6d3a263f8ebce0508e489e5cc9.tar.gz
git-42ebeb9d07de3c6d3a263f8ebce0508e489e5cc9.tar.bz2
pathspec magic: add '^' as alias for '!'
The choice of '!' for a negative pathspec ends up not only not matching what we do for revisions, it's also a horrible character for shell expansion since it needs quoting. So add '^' as an alternative alias for an excluding pathspec entry. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/glossary-content.txt4
-rw-r--r--pathspec.c6
2 files changed, 8 insertions, 2 deletions
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index 8ad29e6..822ca83 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -386,8 +386,8 @@ Glob magic is incompatible with literal magic.
exclude;;
After a path matches any non-exclude pathspec, it will be run
- through all exclude pathspec (magic signature: `!`). If it
- matches, the path is ignored.
+ through all exclude pathspec (magic signature: `!` or its
+ synonym `^`). If it matches, the path is ignored.
--
[[def_parent]]parent::
diff --git a/pathspec.c b/pathspec.c
index 7ababb3..ecad034 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -224,6 +224,12 @@ static const char *parse_short_magic(unsigned *magic, const char *elem)
char ch = *pos;
int i;
+ /* Special case alias for '!' */
+ if (ch == '^') {
+ *magic |= PATHSPEC_EXCLUDE;
+ continue;
+ }
+
if (!is_pathspec_magic(ch))
break;