diff --git a/pygit2/decl.h b/pygit2/decl.h index 825ece7..510975b 100644 --- a/pygit2/decl.h +++ b/pygit2/decl.h @@ -129,6 +129,7 @@ int git_remote_create( git_repository *repo, const char *name, const char *url); +int git_remote_delete(git_remote *remote); int git_repository_state_cleanup(git_repository *repo); const char * git_remote_name(const git_remote *remote); diff --git a/pygit2/remote.py b/pygit2/remote.py index 3e08d3a..f9a74fe 100644 --- a/pygit2/remote.py +++ b/pygit2/remote.py @@ -177,6 +177,14 @@ class Remote(object): err = C.git_remote_set_pushurl(self._remote, to_bytes(value)) check_error(err) + def delete(self): + """Remove this remote + + All remote-tracking branches and configuration settings for the remote will be removed. + """ + err = C.git_remote_delete(self._remote) + check_error(err) + def save(self): """save() diff --git a/test/test_remote.py b/test/test_remote.py index d98527b..e0b9fae 100644 --- a/test/test_remote.py +++ b/test/test_remote.py @@ -62,6 +62,17 @@ class RepositoryTest(utils.RepoTestCase): self.assertRaises(ValueError, self.repo.create_remote, *(name, url)) + def test_remote_delete(self): + name = 'upstream' + url = 'git://github.com/libgit2/pygit2.git' + + self.repo.create_remote(name, url) + self.assertEqual(2, len(self.repo.remotes)) + remote = self.repo.remotes[1] + + self.assertEqual(name, remote.name) + remote.delete() + self.assertEqual(1, len(self.repo.remotes)) def test_remote_rename(self): remote = self.repo.remotes[0]