diff --git a/src/remote.c b/src/remote.c index df238a3..63f588f 100644 --- a/src/remote.c +++ b/src/remote.c @@ -215,8 +215,28 @@ Remote_fetch(Remote *self, PyObject *args) } +PyDoc_STRVAR(Remote_save__doc__, + "save()\n\n" + "Save a remote to its repository configuration."); + +PyObject * +Remote_save(Remote *self, PyObject *args) +{ + int err; + + err = git_remote_save(self->remote); + if (err == GIT_OK) { + Py_RETURN_NONE; + } + else { + return Error_set(err); + } +} + + PyMethodDef Remote_methods[] = { METHOD(Remote, fetch, METH_NOARGS), + METHOD(Remote, save, METH_NOARGS), {NULL} }; diff --git a/test/test_remote.py b/test/test_remote.py index d0ddebc..7ff5ef0 100644 --- a/test/test_remote.py +++ b/test/test_remote.py @@ -98,6 +98,18 @@ class RepositoryTest(utils.RepoTestCase): remote = self.repo.create_remote(name, url) self.assertTrue(remote.name in [x.name for x in self.repo.remotes]) + def test_remote_save(self): + remote = self.repo.remotes[0] + + remote.name = 'new-name' + remote.url = 'http://example.com/test.git' + + remote.save() + + self.assertEqual('new-name', self.repo.remotes[0].name) + self.assertEqual('http://example.com/test.git', + self.repo.remotes[0].url) + class EmptyRepositoryTest(utils.EmptyRepoTestCase): def test_fetch(self):