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 <rosslagerwall@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
3b9e3c2ced
commit
20690b2139
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -153,6 +153,25 @@ test_expect_success 'remove errors out early when deleting non-existent branch'
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'remove remote with a branch without configured merge' '
|
||||
test_when_finished "(
|
||||
git -C test checkout master;
|
||||
git -C test branch -D two;
|
||||
git -C test config --remove-section remote.two;
|
||||
git -C test config --remove-section branch.second;
|
||||
true
|
||||
)" &&
|
||||
(
|
||||
cd test &&
|
||||
git remote add two ../two &&
|
||||
git fetch two &&
|
||||
git checkout -b second two/master^0 &&
|
||||
git config branch.second.remote two &&
|
||||
git checkout master &&
|
||||
git remote rm two
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'rename errors out early when deleting non-existent branch' '
|
||||
(
|
||||
cd test &&
|
||||
|
Loading…
Reference in New Issue
Block a user