diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-10-26 13:14:56 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-10-26 13:14:56 -0700 |
commit | 3b1e135b879c401c8e6c0b9acbaefc81054c3d37 (patch) | |
tree | a14f598d29c72dcab446b46b2843c7522dc5263d /pathspec.c | |
parent | 4abeeb62a04365d7595cd1ef83ce56764c4a8553 (diff) | |
parent | d426430e6ec2a05bf0a4ee88c319dd6072908504 (diff) | |
download | git-3b1e135b879c401c8e6c0b9acbaefc81054c3d37.tar.gz git-3b1e135b879c401c8e6c0b9acbaefc81054c3d37.tar.xz |
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.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/pathspec.c b/pathspec.c index 86f2b449b..22ca74a12 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); |