Merge branch 'js/config-set-in-non-repository' into maint
authorJunio C Hamano <gitster@pobox.com>
Thu, 10 Mar 2016 19:13:45 +0000 (11:13 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 10 Mar 2016 19:13:45 +0000 (11:13 -0800)
"git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.

* js/config-set-in-non-repository:
git config: report when trying to modify a non-existing repo config

1  2 
builtin/config.c
diff --combined builtin/config.c
index c26d6e7fdd5d2896850ac909cb9ce04960520b0d,78aab956ad2a4c2192a79381b346a62e160c328e..746233e4bbaffc6d7f2d4d1849bd89cd13286d02
@@@ -352,6 -352,9 +352,9 @@@ static int get_colorbool(const char *va
  
  static void check_write(void)
  {
+       if (!given_config_source.file && !startup_info->have_repository)
+               die("not in a git directory");
        if (given_config_source.use_stdin)
                die("writing to stdin is not supported");
  
@@@ -582,7 -585,7 +585,7 @@@ int cmd_config(int argc, const char **a
                check_write();
                check_argc(argc, 2, 2);
                value = normalize_value(argv[0], argv[1]);
 -              ret = git_config_set_in_file(given_config_source.file, argv[0], value);
 +              ret = git_config_set_in_file_gently(given_config_source.file, argv[0], value);
                if (ret == CONFIG_NOTHING_SET)
                        error("cannot overwrite multiple values with a single value\n"
                        "       Use a regexp, --add or --replace-all to change %s.", argv[0]);
                check_write();
                check_argc(argc, 2, 3);
                value = normalize_value(argv[0], argv[1]);
 -              return git_config_set_multivar_in_file(given_config_source.file,
 -                                                     argv[0], value, argv[2], 0);
 +              return git_config_set_multivar_in_file_gently(given_config_source.file,
 +                                                            argv[0], value, argv[2], 0);
        }
        else if (actions == ACTION_ADD) {
                check_write();
                check_argc(argc, 2, 2);
                value = normalize_value(argv[0], argv[1]);
 -              return git_config_set_multivar_in_file(given_config_source.file,
 -                                                     argv[0], value,
 -                                                     CONFIG_REGEX_NONE, 0);
 +              return git_config_set_multivar_in_file_gently(given_config_source.file,
 +                                                            argv[0], value,
 +                                                            CONFIG_REGEX_NONE, 0);
        }
        else if (actions == ACTION_REPLACE_ALL) {
                check_write();
                check_argc(argc, 2, 3);
                value = normalize_value(argv[0], argv[1]);
 -              return git_config_set_multivar_in_file(given_config_source.file,
 -                                                     argv[0], value, argv[2], 1);
 +              return git_config_set_multivar_in_file_gently(given_config_source.file,
 +                                                            argv[0], value, argv[2], 1);
        }
        else if (actions == ACTION_GET) {
                check_argc(argc, 1, 2);
                check_write();
                check_argc(argc, 1, 2);
                if (argc == 2)
 -                      return git_config_set_multivar_in_file(given_config_source.file,
 -                                                             argv[0], NULL, argv[1], 0);
 +                      return git_config_set_multivar_in_file_gently(given_config_source.file,
 +                                                                    argv[0], NULL, argv[1], 0);
                else
 -                      return git_config_set_in_file(given_config_source.file,
 -                                                    argv[0], NULL);
 +                      return git_config_set_in_file_gently(given_config_source.file,
 +                                                           argv[0], NULL);
        }
        else if (actions == ACTION_UNSET_ALL) {
                check_write();
                check_argc(argc, 1, 2);
 -              return git_config_set_multivar_in_file(given_config_source.file,
 -                                                     argv[0], NULL, argv[1], 1);
 +              return git_config_set_multivar_in_file_gently(given_config_source.file,
 +                                                            argv[0], NULL, argv[1], 1);
        }
        else if (actions == ACTION_RENAME_SECTION) {
                int ret;