Add a config option to ignore errors for git-add
authorAlex Riesen <raa.lkml@gmail.com>
Mon, 12 May 2008 17:59:23 +0000 (19:59 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 13 May 2008 04:40:15 +0000 (21:40 -0700)
Signed-off-by: Alex Riesen <raa.lkml@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-add.c
t/t3700-add.sh

index 522519ec865c7fb00caf98b7935338d036175894..73235ed08a9d60f8134235d9b68632303f359ca9 100644 (file)
@@ -206,6 +206,15 @@ static struct option builtin_add_options[] = {
        OPT_END(),
 };
 
+static int add_config(const char *var, const char *value)
+{
+       if (!strcasecmp(var, "add.ignore-errors")) {
+               ignore_add_errors = git_config_bool(var, value);
+               return 0;
+       }
+       return git_default_config(var, value);
+}
+
 int cmd_add(int argc, const char **argv, const char *prefix)
 {
        int exit_status = 0;
@@ -220,7 +229,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        if (add_interactive)
                exit(interactive_add(argc, argv, prefix));
 
-       git_config(git_default_config);
+       git_config(add_config);
 
        newfd = hold_locked_index(&lock_file, 1);
 
index 01e4d62513788882447816b46836d03b9067f490..5b46ba356089436cd075e99b1f979afcb1fa4172 100755 (executable)
@@ -201,4 +201,25 @@ test_expect_success 'git add --ignore-errors' '
 
 rm -f foo2
 
+test_expect_success 'git add (add.ignore-errors)' '
+       git config add.ignore-errors 1 &&
+       git reset --hard &&
+       date >foo1 &&
+       date >foo2 &&
+       chmod 0 foo2 &&
+       test_must_fail git add --verbose . &&
+       git ls-files foo1 | grep foo1
+'
+rm -f foo2
+
+test_expect_success 'git add (add.ignore-errors = false)' '
+       git config add.ignore-errors 0 &&
+       git reset --hard &&
+       date >foo1 &&
+       date >foo2 &&
+       chmod 0 foo2 &&
+       test_must_fail git add --verbose . &&
+       ! ( git ls-files foo1 | grep foo1 )
+'
+
 test_done