Add Remote#Ls. #127

Merged
calavera merged 5 commits from ls_remote into master 2014-10-27 11:42:28 -05:00
2 changed files with 38 additions and 5 deletions
Showing only changes of commit d1b87efd96 - Show all commits

View File

@ -41,8 +41,8 @@ const (
RemoteCompletionDownload RemoteCompletion = C.GIT_REMOTE_COMPLETION_DOWNLOAD RemoteCompletionDownload RemoteCompletion = C.GIT_REMOTE_COMPLETION_DOWNLOAD
RemoteCompletionIndexing = C.GIT_REMOTE_COMPLETION_INDEXING RemoteCompletionIndexing = C.GIT_REMOTE_COMPLETION_INDEXING
RemoteCompletionError = C.GIT_REMOTE_COMPLETION_ERROR RemoteCompletionError = C.GIT_REMOTE_COMPLETION_ERROR
RemoteDirectionFetch = C.GIT_DIRECTION_FETCH
RemoteFetchDirection = C.GIT_DIRECTION_FETCH RemoteDirectionPush = C.GIT_DIRECTION_PUSH
) )
type TransportMessageCallback func(str string) int type TransportMessageCallback func(str string) int
@ -564,11 +564,26 @@ func (o *Remote) Fetch(refspecs []string, sig *Signature, msg string) error {
return nil return nil
} }
func (o *Remote) Ls(filterRefs ...string) ([]RemoteHead, error) { func (o *Remote) ConnectFetch() error {
if ret := C.git_remote_connect(o.ptr, RemoteFetchDirection); ret != 0 { return o.Connect(RemoteDirectionFetch)
return nil, MakeGitError(ret)
} }
func (o *Remote) ConnectPush() error {
return o.Connect(RemoteDirectionPush)
}
func (o *Remote) Connect(direction C.git_direction) error {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
if ret := C.git_remote_connect(o.ptr, direction); ret != 0 {
return MakeGitError(ret)
}
return nil
}
func (o *Remote) Ls(filterRefs ...string) ([]RemoteHead, error) {
var refs **C.git_remote_head var refs **C.git_remote_head
var length C.size_t var length C.size_t

View File

@ -75,6 +75,18 @@ func TestCertificateCheck(t *testing.T) {
checkFatal(t, err) checkFatal(t, err)
} }
func TestRemoteConnect(t *testing.T) {
repo := createTestRepo(t)
defer os.RemoveAll(repo.Workdir())
defer repo.Free()
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
checkFatal(t, err)
err = remote.ConnectFetch()
checkFatal(t, err)
}
func TestRemoteLs(t *testing.T) { func TestRemoteLs(t *testing.T) {
repo := createTestRepo(t) repo := createTestRepo(t)
defer os.RemoveAll(repo.Workdir()) defer os.RemoveAll(repo.Workdir())
@ -83,6 +95,9 @@ func TestRemoteLs(t *testing.T) {
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository") remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
checkFatal(t, err) checkFatal(t, err)
err = remote.ConnectFetch()
checkFatal(t, err)
heads, err := remote.Ls() heads, err := remote.Ls()
checkFatal(t, err) checkFatal(t, err)
@ -99,6 +114,9 @@ func TestRemoteLsFiltering(t *testing.T) {
remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository") remote, err := repo.CreateRemote("origin", "https://github.com/libgit2/TestGitRepository")
checkFatal(t, err) checkFatal(t, err)
err = remote.ConnectFetch()
checkFatal(t, err)
heads, err := remote.Ls("master") heads, err := remote.Ls("master")
checkFatal(t, err) checkFatal(t, err)