diff options
author | Stephen Boyd <bebarino@gmail.com> | 2009-06-18 02:17:54 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-06-18 12:20:36 -0700 |
commit | ed342fdea0b7fd466ed3257c5e68aa81c391b782 (patch) | |
tree | 52da9af7703434bc8cb40c74e7e52e3afa4ef38c | |
parent | 90dce51584e908232ff279a6c2949ea9855dddf3 (diff) | |
download | git-ed342fdea0b7fd466ed3257c5e68aa81c391b782.tar.gz git-ed342fdea0b7fd466ed3257c5e68aa81c391b782.tar.xz |
add: allow configurations to be overriden by command line
Don't call git_config after parsing the command line options, otherwise
the config settings will override any settings made by the command line.
This can be seen by setting add.ignore_errors and then specifying
--no-ignore-errors when using git-add.
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin-add.c | 4 | ||||
-rwxr-xr-x | t/t3700-add.sh | 13 |
2 files changed, 15 insertions, 2 deletions
diff --git a/builtin-add.c b/builtin-add.c index fc3f96eae..13db4a645 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -247,6 +247,8 @@ int cmd_add(int argc, const char **argv, const char *prefix) int add_new_files; int require_pathspec; + git_config(add_config, NULL); + argc = parse_options(argc, argv, builtin_add_options, builtin_add_usage, 0); if (patch_interactive) @@ -254,8 +256,6 @@ int cmd_add(int argc, const char **argv, const char *prefix) if (add_interactive) exit(interactive_add(argc, argv, prefix)); - git_config(add_config, NULL); - if (addremove && take_worktree_changes) die("-A and -u are mutually incompatible"); if (addremove && !argc) { diff --git a/t/t3700-add.sh b/t/t3700-add.sh index 2ac93a346..060a6ecab 100755 --- a/t/t3700-add.sh +++ b/t/t3700-add.sh @@ -221,6 +221,19 @@ test_expect_success 'git add (add.ignore-errors = false)' ' test_must_fail git add --verbose . && ! ( git ls-files foo1 | grep foo1 ) ' +rm -f foo2 + +test_expect_success '--no-ignore-errors overrides config' ' + git config add.ignore-errors 1 && + git reset --hard && + date >foo1 && + date >foo2 && + chmod 0 foo2 && + test_must_fail git add --verbose --no-ignore-errors . && + ! ( git ls-files foo1 | grep foo1 ) && + git config add.ignore-errors 0 +' +rm -f foo2 test_expect_success 'git add '\''fo\[ou\]bar'\'' ignores foobar' ' git reset --hard && |