Skip to content

Commit

Permalink
Merge branch 'ex/deprecate-empty-pathspec-as-match-all'
Browse files Browse the repository at this point in the history
The final step to make an empty string as a pathspec element
illegal.  We started this by first deprecating and warning a
pathspec that has such an element in 2.11 (Nov 2016).

Hopefully we can merge this down to the 'master' by the end of the
year?  A deprecation warning period that is about 1 year does not
sound too bad.

* ex/deprecate-empty-pathspec-as-match-all:
  pathspec: die on empty strings as pathspec
  t0027: do not use an empty string as a pathspec element
  • Loading branch information
gitster committed Nov 6, 2017
2 parents e4db47e + 9e4e8a6 commit 728c573
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 14 deletions.
11 changes: 4 additions & 7 deletions pathspec.c
Expand Up @@ -532,7 +532,7 @@ void parse_pathspec(struct pathspec *pathspec,
{
struct pathspec_item *item;
const char *entry = argv ? *argv : NULL;
int i, n, prefixlen, warn_empty_string, nr_exclude = 0;
int i, n, prefixlen, nr_exclude = 0;

memset(pathspec, 0, sizeof(*pathspec));

Expand Down Expand Up @@ -565,13 +565,10 @@ void parse_pathspec(struct pathspec *pathspec,
}

n = 0;
warn_empty_string = 1;
while (argv[n]) {
if (*argv[n] == '\0' && warn_empty_string) {
warning(_("empty strings as pathspecs will be made invalid in upcoming releases. "
"please use . instead if you meant to match all paths"));
warn_empty_string = 0;
}
if (*argv[n] == '\0')
die("empty string is not a valid pathspec. "
"please use . instead if you meant to match all paths");
n++;
}

Expand Down
2 changes: 1 addition & 1 deletion t/t0027-auto-crlf.sh
Expand Up @@ -315,7 +315,7 @@ test_expect_success 'setup master' '
echo >.gitattributes &&
git checkout -b master &&
git add .gitattributes &&
git commit -m "add .gitattributes" "" &&
git commit -m "add .gitattributes" . &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\nLINETWO\nLINETHREE" >LF &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONE\r\nLINETWO\r\nLINETHREE" >CRLF &&
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\r\nLINETWO\nLINETHREE" >CRLF_mix_LF &&
Expand Down
5 changes: 2 additions & 3 deletions t/t3600-rm.sh
Expand Up @@ -858,9 +858,8 @@ test_expect_success 'rm files with two different errors' '
test_i18ncmp expect actual
'

test_expect_success 'rm empty string should invoke warning' '
git rm -rf "" 2>output &&
test_i18ngrep "warning: empty strings" output
test_expect_success 'rm empty string should fail' '
test_must_fail git rm -rf ""
'

test_done
5 changes: 2 additions & 3 deletions t/t3700-add.sh
Expand Up @@ -331,9 +331,8 @@ test_expect_success 'git add --dry-run --ignore-missing of non-existing file out
test_i18ncmp expect.err actual.err
'

test_expect_success 'git add empty string should invoke warning' '
git add "" 2>output &&
test_i18ngrep "warning: empty strings" output
test_expect_success 'git add empty string should fail' '
test_must_fail git add ""
'

test_expect_success 'git add --chmod=[+-]x stages correctly' '
Expand Down

0 comments on commit 728c573

Please sign in to comment.