summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-09-30 16:07:30 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2014-09-30 16:09:55 +0200
commit262eec23fe7377a9eecf9e724fa1aba945b3162a (patch)
tree93487fe48d9a51c2ceb993cb7dc6821ca0407a70 /src
parenta2a23322193eeca5d2912c0b74c5374f8ec21737 (diff)
downloadlibgit2-262eec23fe7377a9eecf9e724fa1aba945b3162a.tar.gz
remote: accept a repository and remote name for deletioncmn/remote-delete-name
We don't need the remote loaded, and the function extracted both of these from the git_remote in order to do its work, so let's remote a step and not ask for the loaded remote at all. This fixes #2390.
Diffstat (limited to 'src')
-rw-r--r--src/remote.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/src/remote.c b/src/remote.c
index dfad946d5..159524c2e 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -1902,29 +1902,15 @@ static int remove_remote_tracking(git_repository *repo, const char *remote_name)
return error;
}
-int git_remote_delete(git_remote *remote)
+int git_remote_delete(git_repository *repo, const char *name)
{
int error;
- git_repository *repo;
-
- assert(remote);
- if (!remote->name) {
- giterr_set(GITERR_INVALID, "Can't delete an anonymous remote.");
- return -1;
- }
-
- repo = git_remote_owner(remote);
-
- if ((error = remove_branch_config_related_entries(repo,
- git_remote_name(remote))) < 0)
- return error;
-
- if ((error = remove_remote_tracking(repo, git_remote_name(remote))) < 0)
- return error;
+ assert(repo && name);
- if ((error = rename_remote_config_section(
- repo, git_remote_name(remote), NULL)) < 0)
+ if ((error = remove_branch_config_related_entries(repo, name)) < 0 ||
+ (error = remove_remote_tracking(repo, name)) < 0 ||
+ (error = rename_remote_config_section(repo, name, NULL)) < 0)
return error;
return 0;