aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Boyd <bebarino@gmail.com>2009-06-18 02:17:54 -0700
committerJunio C Hamano <gitster@pobox.com>2009-06-18 12:20:36 -0700
commited342fdea0b7fd466ed3257c5e68aa81c391b782 (patch)
tree52da9af7703434bc8cb40c74e7e52e3afa4ef38c
parent90dce51584e908232ff279a6c2949ea9855dddf3 (diff)
downloadgit-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.c4
-rwxr-xr-xt/t3700-add.sh13
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 &&