From: Patrick Steinhardt <ps@pks.im>
To: git@vger.kernel.org
Cc: Jeff King <peff@peff.net>, Junio C Hamano <gitster@pobox.com>,
ps@pks.im, Eric Sunshine <sunshine@sunshineco.com>,
Stefan Beller <sbeller@google.com>
Subject: [PATCH v5 08/15] remote: die on config error when setting/adding branches
Date: Tue, 16 Feb 2016 13:56:35 +0100 [thread overview]
Message-ID: <1455627402-752-9-git-send-email-ps@pks.im> (raw)
In-Reply-To: <1455627402-752-1-git-send-email-ps@pks.im>
When we add or set new branches (e.g. by `git remote add -f` or
`git remote set-branches`) we do not check for error codes when
writing the branches to the configuration file. When persisting
the configuration failed we are left with a remote that has none
or not all of the branches that should have been set without
notifying the user.
Fix this issue by dying early on configuration error.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
builtin/remote.c | 26 +++++++++-----------------
1 file changed, 9 insertions(+), 17 deletions(-)
diff --git a/builtin/remote.c b/builtin/remote.c
index 8b78c3d..eeb6d2e 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -108,8 +108,8 @@ enum {
#define MIRROR_PUSH 2
#define MIRROR_BOTH (MIRROR_FETCH|MIRROR_PUSH)
-static int add_branch(const char *key, const char *branchname,
- const char *remotename, int mirror, struct strbuf *tmp)
+static void add_branch(const char *key, const char *branchname,
+ const char *remotename, int mirror, struct strbuf *tmp)
{
strbuf_reset(tmp);
strbuf_addch(tmp, '+');
@@ -119,7 +119,7 @@ static int add_branch(const char *key, const char *branchname,
else
strbuf_addf(tmp, "refs/heads/%s:refs/remotes/%s/%s",
branchname, remotename, branchname);
- return git_config_set_multivar(key, tmp->buf, "^$", 0);
+ git_config_set_multivar_or_die(key, tmp->buf, "^$", 0);
}
static const char mirror_advice[] =
@@ -206,9 +206,8 @@ static int add(int argc, const char **argv)
if (track.nr == 0)
string_list_append(&track, "*");
for (i = 0; i < track.nr; i++) {
- if (add_branch(buf.buf, track.items[i].string,
- name, mirror, &buf2))
- return 1;
+ add_branch(buf.buf, track.items[i].string,
+ name, mirror, &buf2);
}
}
@@ -1416,21 +1415,17 @@ static int remove_all_fetch_refspecs(const char *remote, const char *key)
return git_config_set_multivar(key, NULL, NULL, 1);
}
-static int add_branches(struct remote *remote, const char **branches,
- const char *key)
+static void add_branches(struct remote *remote, const char **branches,
+ const char *key)
{
const char *remotename = remote->name;
int mirror = remote->mirror;
struct strbuf refspec = STRBUF_INIT;
for (; *branches; branches++)
- if (add_branch(key, *branches, remotename, mirror, &refspec)) {
- strbuf_release(&refspec);
- return 1;
- }
+ add_branch(key, *branches, remotename, mirror, &refspec);
strbuf_release(&refspec);
- return 0;
}
static int set_remote_branches(const char *remotename, const char **branches,
@@ -1449,10 +1444,7 @@ static int set_remote_branches(const char *remotename, const char **branches,
strbuf_release(&key);
return 1;
}
- if (add_branches(remote, branches, key.buf)) {
- strbuf_release(&key);
- return 1;
- }
+ add_branches(remote, branches, key.buf);
strbuf_release(&key);
return 0;
--
2.7.1
next prev parent reply other threads:[~2016-02-16 12:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-16 12:56 [PATCH v5 00/15] config: make git_config_set die on failure Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 01/15] config: introduce set_or_die wrappers Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 02/15] branch: report errors in tracking branch setup Patrick Steinhardt
2016-02-16 23:07 ` Junio C Hamano
2016-02-17 10:34 ` Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 03/15] branch: die on config error when unsetting upstream Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 04/15] branch: die on config error when editing branch description Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 05/15] submodule: die on config error when linking modules Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 06/15] submodule--helper: die on config error when cloning module Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 07/15] remote: die on config error when setting URL Patrick Steinhardt
2016-02-16 12:56 ` Patrick Steinhardt [this message]
2016-02-16 12:56 ` [PATCH v5 09/15] remote: die on config error when manipulating remotes Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 10/15] clone: die on config error in cmd_clone Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 11/15] init-db: die on config errors when initializing empty repo Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 12/15] sequencer: die on config error when saving replay opts Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 13/15] compat: die when unable to set core.precomposeunicode Patrick Steinhardt
2016-02-17 9:14 ` Lars Schneider
2016-02-17 10:34 ` Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 14/15] config: rename git_config_set to git_config_set_gently Patrick Steinhardt
2016-02-16 12:56 ` [PATCH v5 15/15] config: rename git_config_set_or_die to git_config_set Patrick Steinhardt
2016-02-17 20:57 ` Michael Blume
2016-02-17 21:02 ` Michael Blume
2016-02-17 21:09 ` Junio C Hamano
2016-02-16 17:15 ` [PATCH v5 00/15] config: make git_config_set die on failure Eric Sunshine
2016-02-17 10:35 ` Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1455627402-752-9-git-send-email-ps@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
--cc=sbeller@google.com \
--cc=sunshine@sunshineco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).