path: root/builtin/remote.c
diff options
authorRoss Lagerwall <>2017-02-18 00:23:41 (GMT)
committerJunio C Hamano <>2017-02-21 21:57:41 (GMT)
commit20690b213975ad3e9b1bc851f434d818bd2d1de9 (patch)
tree7b4a8cbab33be1b7cbc41ed235fbc124d254f4bd /builtin/remote.c
parent3b9e3c2cede15057af3ff8076c45ad5f33829436 (diff)
remote: ignore failure to remove missing branch.<name>.merge
It is not all too unusual for a branch to use "branch.<name>.remote" without "branch.<name>.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.<name>.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 <>
Diffstat (limited to 'builtin/remote.c')
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/remote.c b/builtin/remote.c
index e52cf39..01055b7 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -769,7 +769,9 @@ static int rm(int argc, const char **argv)
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);