Skip to content

Commit 3e5c639

Browse files
committed
Merge branch 'rl/remote-allow-missing-branch-name-merge'
"git remote rm X", when a branch has remote X configured as the value of its branch.*.remote, tried to remove branch.*.remote and branch.*.merge and failed if either is unset. * rl/remote-allow-missing-branch-name-merge: remote: ignore failure to remove missing branch.<name>.merge
2 parents c13c783 + 20690b2 commit 3e5c639

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)