[PATCH v2 44/46] pathspec: make --literal-pathspecs disable pathspec magic
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:58:09
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
--literal-pathspecs and its equivalent environment variable are probably used for scripting. In that setting, pathspec magic may be unwanted. Disabling globbing in individual pathspec can be done via :(literal) magic. Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- Documentation/git.txt | 4 ++-- pathspec.c | 2 +- t/t6130-pathspec-noglob.sh | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/Documentation/git.txt b/Documentation/git.txt
index b738a40..80139ae 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt@@ -450,8 +450,8 @@ help ...`. linkgit:git-replace[1] for more information. --literal-pathspecs:: - Treat pathspecs literally, rather than as glob patterns. This is - equivalent to setting the `GIT_LITERAL_PATHSPECS` environment + Treat pathspecs literally (i.e. no globbing, no pathspec magic). + This is equivalent to setting the `GIT_LITERAL_PATHSPECS` environment variable to `1`.
diff --git a/pathspec.c b/pathspec.c
index 6a16938..b6d8e74 100644
--- a/pathspec.c
+++ b/pathspec.c@@ -103,7 +103,7 @@ static unsigned prefix_pathspec(struct pathspec_item *item, if (literal_global) global_magic |= PATHSPEC_LITERAL; - if (elt[0] != ':') { + if (elt[0] != ':' || literal_global) { ; /* nothing to do */ } else if (elt[1] == '(') { /* longhand */
diff --git a/t/t6130-pathspec-noglob.sh b/t/t6130-pathspec-noglob.sh
index 49c148e..8551b02 100755
--- a/t/t6130-pathspec-noglob.sh
+++ b/t/t6130-pathspec-noglob.sh@@ -77,6 +77,12 @@ test_expect_success 'no-glob option matches literally (bracket)' ' test_cmp expect actual ' +test_expect_success 'no-glob option disables :(literal)' ' + : >expect && + git --literal-pathspecs log --format=%s -- ":(literal)foo" >actual && + test_cmp expect actual +' + test_expect_success 'no-glob environment variable works' ' echo star >expect && GIT_LITERAL_PATHSPECS=1 git log --format=%s -- "f*" >actual &&
--
1.8.2.83.gc99314b