summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--remote.go12
-rw-r--r--remote_test.go20
2 files changed, 32 insertions, 0 deletions
diff --git a/remote.go b/remote.go
index d556f99..66097b8 100644
--- a/remote.go
+++ b/remote.go
@@ -132,6 +132,18 @@ func (r *Remote) Free() {
C.git_remote_free(r.ptr)
}
+func (repo *Repository) ListRemotes() ([]string, error) {
+ var r C.git_strarray
+ ecode := C.git_remote_list(&r, repo.ptr)
+ if ecode < 0 {
+ return nil, MakeGitError(ecode)
+ }
+ defer C.git_strarray_free(&r)
+
+ remotes := makeStringsFromCStrings(r.strings, int(r.count))
+ return remotes, nil
+}
+
func (repo *Repository) CreateRemote(name string, url string) (*Remote, error) {
remote := &Remote{}
diff --git a/remote_test.go b/remote_test.go
index 04b3a57..90e24ae 100644
--- a/remote_test.go
+++ b/remote_test.go
@@ -8,6 +8,7 @@ import (
func TestRefspecs(t *testing.T) {
repo := createTestRepo(t)
defer os.RemoveAll(repo.Workdir())
+ defer repo.Free()
remote, err := repo.CreateRemoteInMemory("refs/heads/*:refs/heads/*", "git://foo/bar")
checkFatal(t, err)
@@ -25,3 +26,22 @@ func TestRefspecs(t *testing.T) {
compareStringList(t, expected, actual)
}
+
+func TestListRemotes(t *testing.T) {
+ repo := createTestRepo(t)
+ defer os.RemoveAll(repo.Workdir())
+ defer repo.Free()
+
+ _, err := repo.CreateRemote("test", "git://foo/bar")
+
+ checkFatal(t, err)
+
+ expected := []string{
+ "test",
+ }
+
+ actual, err := repo.ListRemotes()
+ checkFatal(t, err)
+
+ compareStringList(t, expected, actual)
+}