Code

Merge branch 'sb/maint-1.6.0-add-config-fix'
authorJunio C Hamano <gitster@pobox.com>
Sun, 21 Jun 2009 04:46:38 +0000 (21:46 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 21 Jun 2009 04:46:38 +0000 (21:46 -0700)
* sb/maint-1.6.0-add-config-fix:
  add: allow configurations to be overriden by command line
  use xstrdup, not strdup in ll-merge.c

Conflicts:
builtin-add.c

builtin-add.c
ll-merge.c
t/t3700-add.sh

index c1b229a9d8a026ec88cdbf0492856021cacc8097..56e522127c3e73fad59d8dc96bdffdb87a3b7a44 100644 (file)
@@ -298,6 +298,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, prefix, builtin_add_options,
                          builtin_add_usage, PARSE_OPT_KEEP_ARGV0);
        if (patch_interactive)
@@ -305,8 +307,6 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        if (add_interactive)
                exit(interactive_add(argc - 1, argv + 1, prefix));
 
-       git_config(add_config, NULL);
-
        if (edit_interactive)
                return(edit_patch(argc, argv, prefix));
        argc--;
index 31d6f0a2ee63e8c3cad1053f9281a0ce9917fb32..9168958e863e50f0d1bd1446b3314cb3dd2e772f 100644 (file)
@@ -231,7 +231,7 @@ static int read_merge_config(const char *var, const char *value, void *cb)
 
        if (!strcmp(var, "merge.default")) {
                if (value)
-                       default_ll_merge = strdup(value);
+                       default_ll_merge = xstrdup(value);
                return 0;
        }
 
@@ -265,7 +265,7 @@ static int read_merge_config(const char *var, const char *value, void *cb)
        if (!strcmp("name", ep)) {
                if (!value)
                        return error("%s: lacks value", var);
-               fn->description = strdup(value);
+               fn->description = xstrdup(value);
                return 0;
        }
 
@@ -288,14 +288,14 @@ static int read_merge_config(const char *var, const char *value, void *cb)
                 * file named by %A, and signal that it has done with zero exit
                 * status.
                 */
-               fn->cmdline = strdup(value);
+               fn->cmdline = xstrdup(value);
                return 0;
        }
 
        if (!strcmp("recursive", ep)) {
                if (!value)
                        return error("%s: lacks value", var);
-               fn->recursive = strdup(value);
+               fn->recursive = xstrdup(value);
                return 0;
        }
 
index 6ce8256a17bb7c775eed301b3af8a88497a12c09..6ae5a2cd9511b83ad1d263c0ec0a374fc4bfc981 100755 (executable)
@@ -221,6 +221,19 @@ test_expect_success POSIXPERM '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 BSLASHPSPEC "git add 'fo\\[ou\\]bar' ignores foobar" '
        git reset --hard &&