From 20690b213975ad3e9b1bc851f434d818bd2d1de9 Mon Sep 17 00:00:00 2001 From: Ross Lagerwall Date: Sat, 18 Feb 2017 00:23:41 +0000 Subject: remote: ignore failure to remove missing branch..merge It is not all too unusual for a branch to use "branch..remote" without "branch..merge". You may be using the 'push.default' configuration set to 'current', for example, and do $ git checkout -b side colleague/side $ git config branch.side.remote colleague However, "git remote rm" to remove the remote used in such a manner fails with "fatal: could not unset 'branch..merge'" because it assumes that a branch that has .remote defined must also have .merge defined. Detect the "cannot unset because it is not set to begin with" case and ignore it. Signed-off-by: Ross Lagerwall Signed-off-by: Junio C Hamano --- builtin/remote.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'builtin') diff --git a/builtin/remote.c b/builtin/remote.c index e52cf3925..01055b727 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -769,7 +769,9 @@ static int rm(int argc, const char **argv) strbuf_reset(&buf); strbuf_addf(&buf, "branch.%s.%s", item->string, *k); - git_config_set(buf.buf, NULL); + result = git_config_set_gently(buf.buf, NULL); + if (result && result != CONFIG_NOTHING_SET) + die(_("could not unset '%s'"), buf.buf); } } } -- cgit v1.2.1