Add Remote#Ls. #127
25
remote.go
25
remote.go
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue