summaryrefslogtreecommitdiff
path: root/pathspec.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-10-26 20:14:56 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-10-26 20:14:56 (GMT)
commit3b1e135b879c401c8e6c0b9acbaefc81054c3d37 (patch)
treea14f598d29c72dcab446b46b2843c7522dc5263d /pathspec.c
parent4abeeb62a04365d7595cd1ef83ce56764c4a8553 (diff)
parentd426430e6ec2a05bf0a4ee88c319dd6072908504 (diff)
downloadgit-3b1e135b879c401c8e6c0b9acbaefc81054c3d37.zip
git-3b1e135b879c401c8e6c0b9acbaefc81054c3d37.tar.gz
git-3b1e135b879c401c8e6c0b9acbaefc81054c3d37.tar.bz2
Merge branch 'ex/deprecate-empty-pathspec-as-match-all'
An empty string used as a pathspec element has always meant 'everything matches', but it is too easy to write a script that finds a path to remove in $path and run 'git rm "$paht"', which ends up removing everything. Start warning about this use of an empty string used for 'everything matches' and ask users to use a more explicit '.' for that instead. The hope is that existing users will not mind this change, and eventually the warning can be turned into a hard error, upgrading the deprecation into removal of this (mis)feature. * ex/deprecate-empty-pathspec-as-match-all: pathspec: warn on empty strings as pathspec
Diffstat (limited to 'pathspec.c')
-rw-r--r--pathspec.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/pathspec.c b/pathspec.c
index 86f2b44..22ca74a 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -364,7 +364,7 @@ void parse_pathspec(struct pathspec *pathspec,
{
struct pathspec_item *item;
const char *entry = argv ? *argv : NULL;
- int i, n, prefixlen, nr_exclude = 0;
+ int i, n, prefixlen, warn_empty_string, nr_exclude = 0;
memset(pathspec, 0, sizeof(*pathspec));
@@ -402,8 +402,15 @@ void parse_pathspec(struct pathspec *pathspec,
}
n = 0;
- while (argv[n])
+ 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;
+ }
n++;
+ }
pathspec->nr = n;
ALLOC_ARRAY(pathspec->items, n);