git-commit-vandalism/builtin
Matthieu Moy 0fa2eb530f add: warn when -u or -A is used without pathspec
Most Git commands that can be used with or without pathspec operate
tree-wide by default, the pathspec being used to restrict their
scope.  A few exceptions are: 'git grep', 'git clean', 'git add -u'
and 'git add -A'.  When run in a subdirectory without pathspec, they
operate only on paths in the current directory.

The inconsistency of 'git add -u' and 'git add -A' is particularly
problematic since other 'git add' subcommands (namely 'git add -p'
and 'git add -e') are tree-wide by default.  It also means that "git
add -u && git commit" will record a state that is different from
what is recorded with "git commit -a".

Flipping the default now is unacceptable, so let's start training
users to type 'git add -u|-A :/' or 'git add -u|-A .' explicitly, to
prepare for the next steps:

* forbid 'git add -u|-A' without pathspec (like 'git add' without
  option)

* much later, maybe, re-allow 'git add -u|-A' without pathspec, that
  will add all tracked and modified files, or all files, tree-wide.

A nice side effect of this patch is that it makes the :/ magic
pathspec easier to discover for users.

When the command is called from the root of the tree, there is no
ambiguity and no need to change the behavior, hence no need to warn.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2013-01-28 10:31:35 -08:00
..
add.c add: warn when -u or -A is used without pathspec 2013-01-28 10:31:35 -08:00
annotate.c
apply.c Merge branch 'jc/apply-trailing-blank-removal' into maint 2013-01-14 07:33:08 -08:00
archive.c Reduce translations by using same terminologies 2012-08-22 12:02:28 -07:00
bisect--helper.c i18n: bisect--helper: mark parseopt strings for translation 2012-08-20 12:23:15 -07:00
blame.c pretty: remove reencode_commit_message() 2012-10-17 22:42:40 -07:00
branch.c branch: show targets of deleted symrefs, not sha1s 2012-10-18 14:36:17 -07:00
bundle.c
cat-file.c Merge branch 'maint-1.7.11' into maint 2012-09-10 15:31:06 -07:00
check-attr.c Merge branch 'maint' 2012-09-17 15:59:34 -07:00
check-ref-format.c
checkout-index.c Use imperative form in help usage to describe an action 2012-08-22 12:02:28 -07:00
checkout.c checkout: print a message when switching unborn branches 2012-11-15 17:36:26 -08:00
clean.c i18n: clean: mark parseopt strings for translation 2012-08-20 12:23:16 -07:00
clone.c Merge branch 'jl/interrupt-clone-remove-separate-git-dir' into maint 2013-01-14 07:33:49 -08:00
column.c i18n: column: mark parseopt strings for translation 2012-08-20 12:23:16 -07:00
commit-tree.c Merge branch 'kk/maint-commit-tree' 2012-07-23 20:55:54 -07:00
commit.c ident: keep separate "explicit" flags for author and committer 2012-11-15 17:47:24 -08:00
config.c Merge branch 'cn/config-missing-path' into maint 2012-11-25 18:35:46 -08:00
count-objects.c i18n: count-objects: mark parseopt strings for translation 2012-08-20 12:23:16 -07:00
credential.c
describe.c Merge branch 'jk/peel-ref' 2012-10-25 06:42:27 -04:00
diff-files.c
diff-index.c update-index/diff-index: use core.preloadindex to improve performance 2012-11-02 11:38:29 -04:00
diff-tree.c
diff.c Merge branch 'kb/preload-index-more' 2012-11-20 10:32:10 -08:00
fast-export.c i18n: fast-export: mark parseopt strings for translation 2012-08-20 12:23:16 -07:00
fetch-pack.c fetch-pack: move core code to libgit.a 2012-10-29 03:40:29 -04:00
fetch.c Merge branch 'dj/fetch-all-tags' into maint 2012-09-24 12:39:21 -07:00
fmt-merge-msg.c Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit' into maint 2013-01-14 07:33:30 -08:00
for-each-ref.c Merge branch 'nd/i18n-parseopt-help' 2012-09-07 11:09:09 -07:00
fsck.c i18n: fsck: mark parseopt strings for translation 2012-08-20 12:23:17 -07:00
gc.c silence git gc --auto --quiet output 2012-09-27 17:57:26 -07:00
grep.c Merge branch 'nd/grep-true-path' into maint 2012-11-18 19:32:30 -08:00
hash-object.c i18n: hash-object: mark parseopt strings for translation 2012-08-20 12:23:17 -07:00
help.c i18n: help: mark parseopt strings for translation 2012-08-20 12:23:17 -07:00
index-pack.c i18n: mark more index-pack strings for translation 2012-08-31 13:05:05 -07:00
init-db.c i18n: init-db: mark parseopt strings for translation 2012-08-20 12:23:17 -07:00
log.c log: honor grep.* configuration 2012-10-09 23:21:30 -07:00
ls-files.c i18n: ls-files: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
ls-remote.c ls-remote: document the '--get-url' option 2012-09-07 10:58:35 -07:00
ls-tree.c i18n: ls-tree: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
mailinfo.c Merge branch 'jc/same-encoding' into maint 2012-12-07 14:10:56 -08:00
mailsplit.c
merge-base.c Merge branch 'jc/merge-bases' 2012-09-11 11:36:05 -07:00
merge-file.c i18n: merge-file: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c
merge.c Merge branch 'jc/maint-fmt-merge-msg-no-edit-lose-credit' into maint 2013-01-14 07:33:30 -08:00
mktag.c
mktree.c i18n: mktree: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
mv.c i18n: mv: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
name-rev.c i18n: name-rev: mark parseopt strings for translation 2012-08-20 12:23:18 -07:00
notes.c builtin/notes.c: mark file-scope private symbols as static 2012-09-15 22:58:20 -07:00
pack-objects.c Merge branch 'jk/peel-ref' 2012-10-25 06:42:27 -04:00
pack-redundant.c Fix sizeof usage in get_permutations 2012-12-13 11:13:44 -08:00
pack-refs.c i18n: pack-refs: mark parseopt strings for translation 2012-08-20 12:23:19 -07:00
patch-id.c
prune-packed.c i18n: prune-packed: mark parseopt strings for translation 2012-08-20 12:23:19 -07:00
prune.c Merge branch 'rj/path-cleanup' 2012-09-14 11:53:53 -07:00
push.c Merge branch 'nd/i18n-parseopt-help' 2012-09-07 11:09:09 -07:00
read-tree.c i18n: read-tree: mark parseopt strings for translation 2012-08-20 12:23:19 -07:00
receive-pack.c Merge branch 'jk/receive-pack-unpack-error-to-pusher' 2012-10-01 12:58:34 -07:00
reflog.c
remote-ext.c
remote-fd.c
remote.c Fix typo in remote set-head usage 2012-11-26 13:27:45 -08:00
replace.c replace: parse revision argument for -d 2012-11-13 08:34:14 -05:00
rerere.c i18n: rerere: mark parseopt strings for translation 2012-08-20 12:23:19 -07:00
reset.c i18n: reset: mark parseopt strings for translation 2012-08-20 12:23:19 -07:00
rev-list.c Move print_commit_list to libgit.a 2012-10-29 03:08:30 -04:00
rev-parse.c Merge branch 'maint-1.7.11' into maint 2012-09-12 14:08:05 -07:00
revert.c Merge branch 'mz/cherry-pick-cmdline-order' 2012-09-10 15:42:55 -07:00
rm.c Merge branch 'jl/submodule-rm' 2012-11-29 12:52:30 -08:00
send-pack.c send-pack: move core code to libgit.a 2012-10-29 03:08:30 -04:00
shortlog.c Merge branch 'sp/shortlog-missing-lf' into maint 2013-01-10 14:04:23 -08:00
show-branch.c i18n: show-branch: mark parseopt strings for translation 2012-08-22 10:58:28 -07:00
show-ref.c Merge branch 'jk/peel-ref' 2012-10-25 06:42:27 -04:00
stripspace.c Update documentation for stripspace 2011-12-12 16:48:54 -08:00
symbolic-ref.c git symbolic-ref --delete $symref 2012-10-21 12:17:38 -07:00
tag.c Reduce translations by using same terminologies 2012-08-22 12:02:28 -07:00
tar-tree.c
unpack-file.c
unpack-objects.c
update-index.c Merge branch 'kb/preload-index-more' 2012-11-20 10:32:10 -08:00
update-ref.c Use imperative form in help usage to describe an action 2012-08-22 12:02:28 -07:00
update-server-info.c i18n: update-server-info: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00
upload-archive.c
var.c
verify-pack.c i18n: verify-pack: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00
verify-tag.c i18n: verify-tag: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00
write-tree.c i18n: write-tree: mark parseopt strings for translation 2012-08-22 10:58:29 -07:00