diff --git a/builtin-add.c b/builtin-add.c index fc3f96eaef..13db4a6455 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 2ac93a346d..060a6ecabe 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 &&