Patrick Steinhardt <[email protected]> writes:

> 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.

When this happens, the junk_mode is still JUNK_LEAVE_NONE, so upon
hitting such an error, we'd remove everything and die.  And we
haven't wasted the effort for large object transfer yet.

Which all sounds sensible.

> Signed-off-by: Patrick Steinhardt <[email protected]>
> ---
>  builtin/clone.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/builtin/clone.c b/builtin/clone.c
> index 81e238f..f2a2f9a 100644
> --- a/builtin/clone.c
> +++ b/builtin/clone.c
> @@ -786,12 +786,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);
>                       }
>               }
> @@ -949,14 +949,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)
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to