Skip to content

Commit 20690b2

Browse files
rosslagerwallgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3b9e3c2 commit 20690b2

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

builtin/remote.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -769,7 +769,9 @@ static int rm(int argc, const char **argv)
769769
strbuf_reset(&buf);
770770
strbuf_addf(&buf, "branch.%s.%s",
771771
item->string, *k);
772-
git_config_set(buf.buf, NULL);
772+
result = git_config_set_gently(buf.buf, NULL);
773+
if (result && result != CONFIG_NOTHING_SET)
774+
die(_("could not unset '%s'"), buf.buf);
773775
}
774776
}
775777
}

t/t5505-remote.sh

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,25 @@ test_expect_success 'remove errors out early when deleting non-existent branch'
153153
)
154154
'
155155

156+
test_expect_success 'remove remote with a branch without configured merge' '
157+
test_when_finished "(
158+
git -C test checkout master;
159+
git -C test branch -D two;
160+
git -C test config --remove-section remote.two;
161+
git -C test config --remove-section branch.second;
162+
true
163+
)" &&
164+
(
165+
cd test &&
166+
git remote add two ../two &&
167+
git fetch two &&
168+
git checkout -b second two/master^0 &&
169+
git config branch.second.remote two &&
170+
git checkout master &&
171+
git remote rm two
172+
)
173+
'
174+
156175
test_expect_success 'rename errors out early when deleting non-existent branch' '
157176
(
158177
cd test &&

0 commit comments

Comments
 (0)