clone: die on config error in cmd_clone
authorPatrick Steinhardt <ps@pks.im>
Mon, 22 Feb 2016 11:23:31 +0000 (12:23 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 22 Feb 2016 18:23:53 +0000 (10:23 -0800)
The clone command does not check for error codes returned by
`git_config_set` functions. This may cause the user to end up
with an inconsistent repository without any indication with what
went wrong.

Fix this problem by dying with an error message when we are
unable to write the configuration files to disk.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/clone.c
index a0b3cd9e5617b5a3a45dd01c8a2c7af0b2fd9668..2dabce9816cdd5a98c45c7fca968a8a98ec945e9 100644 (file)
@@ -783,12 +783,12 @@ static void write_refspec_config(const char *src_ref_prefix,
                /* Configure the remote */
                if (value.len) {
                        strbuf_addf(&key, "remote.%s.fetch", option_origin);
-                       git_config_set_multivar(key.buf, value.buf, "^$", 0);
+                       git_config_set_multivar_or_die(key.buf, value.buf, "^$", 0);
                        strbuf_reset(&key);
 
                        if (option_mirror) {
                                strbuf_addf(&key, "remote.%s.mirror", option_origin);
-                               git_config_set(key.buf, "true");
+                               git_config_set_or_die(key.buf, "true");
                                strbuf_reset(&key);
                        }
                }
@@ -946,14 +946,14 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
                        src_ref_prefix = "refs/";
                strbuf_addstr(&branch_top, src_ref_prefix);
 
-               git_config_set("core.bare", "true");
+               git_config_set_or_die("core.bare", "true");
        } else {
                strbuf_addf(&branch_top, "refs/remotes/%s/", option_origin);
        }
 
        strbuf_addf(&value, "+%s*:%s*", src_ref_prefix, branch_top.buf);
        strbuf_addf(&key, "remote.%s.url", option_origin);
-       git_config_set(key.buf, repo);
+       git_config_set_or_die(key.buf, repo);
        strbuf_reset(&key);
 
        if (option_reference.nr)