Re: [PATCH v4 10/15] clone: die on config error in cmd_clone
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 2, 2016, 20:55 UTC
- Message-ID
- <xmqqwpqmrfvo.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <1454413916-31984-11-git-send-email-ps@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 7 quoted lines
> 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.
Show 41 quoted lines
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> 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)