diff options
author | Jens Lindström <jl@opera.com> | 2014-05-23 12:28:43 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-05-23 11:56:15 -0700 |
commit | b07bdd3472886cbdd412ee3e7489273522c43133 (patch) | |
tree | 4b32588dae82bbe263fa3901b3a731aee503711f | |
parent | Update draft release notes to 2.0 (diff) | |
download | tgif-b07bdd3472886cbdd412ee3e7489273522c43133.tar.xz |
remote rm: delete remote configuration as the last
When removing a remote, delete the remote-tracking branches before
deleting the remote configuration. This way, if the operation fails or
is aborted while deleting the remote-tracking branches, the command can
be rerun to complete the operation.
Signed-off-by: Jens Lindström <jl@opera.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/remote.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/builtin/remote.c b/builtin/remote.c index b3ab4cf8f6..84802cd0a1 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -789,10 +789,6 @@ static int rm(int argc, const char **argv) known_remotes.to_delete = remote; for_each_remote(add_known_remote, &known_remotes); - strbuf_addf(&buf, "remote.%s", remote->name); - if (git_config_rename_section(buf.buf, NULL) < 1) - return error(_("Could not remove config section '%s'"), buf.buf); - read_branches(); for (i = 0; i < branch_list.nr; i++) { struct string_list_item *item = branch_list.items + i; @@ -837,6 +833,12 @@ static int rm(int argc, const char **argv) } string_list_clear(&skipped, 0); + if (!result) { + strbuf_addf(&buf, "remote.%s", remote->name); + if (git_config_rename_section(buf.buf, NULL) < 1) + return error(_("Could not remove config section '%s'"), buf.buf); + } + return result; } |