Merge branch 'ex/deprecate-empty-pathspec-as-match-all'
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
This commit is contained in:
11
pathspec.c
11
pathspec.c
@ -532,7 +532,7 @@ void parse_pathspec(struct pathspec *pathspec,
|
|||||||
{
|
{
|
||||||
struct pathspec_item *item;
|
struct pathspec_item *item;
|
||||||
const char *entry = argv ? *argv : NULL;
|
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));
|
memset(pathspec, 0, sizeof(*pathspec));
|
||||||
|
|
||||||
@ -565,13 +565,10 @@ void parse_pathspec(struct pathspec *pathspec,
|
|||||||
}
|
}
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
warn_empty_string = 1;
|
|
||||||
while (argv[n]) {
|
while (argv[n]) {
|
||||||
if (*argv[n] == '\0' && warn_empty_string) {
|
if (*argv[n] == '\0')
|
||||||
warning(_("empty strings as pathspecs will be made invalid in upcoming releases. "
|
die("empty string is not a valid pathspec. "
|
||||||
"please use . instead if you meant to match all paths"));
|
"please use . instead if you meant to match all paths");
|
||||||
warn_empty_string = 0;
|
|
||||||
}
|
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -315,7 +315,7 @@ test_expect_success 'setup master' '
|
|||||||
echo >.gitattributes &&
|
echo >.gitattributes &&
|
||||||
git checkout -b master &&
|
git checkout -b master &&
|
||||||
git add .gitattributes &&
|
git add .gitattributes &&
|
||||||
git commit -m "add .gitattributes" "" &&
|
git commit -m "add .gitattributes" . &&
|
||||||
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\nLINETWO\nLINETHREE" >LF &&
|
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\nLINETWO\nLINETHREE" >LF &&
|
||||||
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONE\r\nLINETWO\r\nLINETHREE" >CRLF &&
|
printf "\$Id: 0000000000000000000000000000000000000000 \$\r\nLINEONE\r\nLINETWO\r\nLINETHREE" >CRLF &&
|
||||||
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\r\nLINETWO\nLINETHREE" >CRLF_mix_LF &&
|
printf "\$Id: 0000000000000000000000000000000000000000 \$\nLINEONE\r\nLINETWO\nLINETHREE" >CRLF_mix_LF &&
|
||||||
|
@ -858,9 +858,8 @@ test_expect_success 'rm files with two different errors' '
|
|||||||
test_i18ncmp expect actual
|
test_i18ncmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'rm empty string should invoke warning' '
|
test_expect_success 'rm empty string should fail' '
|
||||||
git rm -rf "" 2>output &&
|
test_must_fail git rm -rf ""
|
||||||
test_i18ngrep "warning: empty strings" output
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
@ -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_i18ncmp expect.err actual.err
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git add empty string should invoke warning' '
|
test_expect_success 'git add empty string should fail' '
|
||||||
git add "" 2>output &&
|
test_must_fail git add ""
|
||||||
test_i18ngrep "warning: empty strings" output
|
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'git add --chmod=[+-]x stages correctly' '
|
test_expect_success 'git add --chmod=[+-]x stages correctly' '
|
||||||
|
Reference in New Issue
Block a user