From d15093706802575ccc0cf9479bef944b7b4d93ba Mon Sep 17 00:00:00 2001
From: Nico von Geyso <Nico.Geyso@FU-Berlin.de>
Date: Sat, 16 Feb 2013 18:36:38 +0100
Subject: [PATCH] added functionality to set remote urls

---
 src/remote.c        | 22 +++++++++++++++++++++-
 test/test_remote.py | 11 +++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/src/remote.c b/src/remote.c
index bcd66c2..f8edbc7 100644
--- a/src/remote.c
+++ b/src/remote.c
@@ -100,9 +100,29 @@ Remote_url__get__(Remote *self)
 }
 
 
+int
+Remote_url__set__(Remote *self, PyObject* py_url)
+{
+    int err;
+    char* url;
+
+    url = py_str_to_c_str(py_url, NULL);
+    if (url != NULL) {
+        err = git_remote_set_url(self->remote, url);
+
+        if (err == GIT_OK)
+          return 0;
+
+        Error_set(err);
+    }
+
+    return -1;
+}
+
+
 PyGetSetDef Remote_getseters[] = {
     GETSET(Remote, name),
-    GETTER(Remote, url),
+    GETSET(Remote, url),
     {NULL}
 };
 
diff --git a/test/test_remote.py b/test/test_remote.py
index 36f4eb5..2ca347f 100644
--- a/test/test_remote.py
+++ b/test/test_remote.py
@@ -58,6 +58,17 @@ class RepositoryTest(utils.RepoTestCase):
         self.assertRaisesAssign(ValueError, remote, 'name', '')
 
 
+    def test_remote_set_url(self):
+        remote = self.repo.remotes[0]
+
+        self.assertEqual(REMOTE_URL, remote.url)
+        new_url = 'git://github.com/cholin/pygit2.git'
+        remote.url = new_url
+        self.assertEqual(new_url, remote.url)
+
+        self.assertRaisesAssign(ValueError, remote, 'url', '')
+
+
     def test_remote_list(self):
         self.assertEqual(1, len(self.repo.remotes))
         remote = self.repo.remotes[0]