diff options
Diffstat (limited to 'repository.go')
| -rw-r--r-- | repository.go | 88 |
1 files changed, 77 insertions, 11 deletions
diff --git a/repository.go b/repository.go index 7760c3a..7fac277 100644 --- a/repository.go +++ b/repository.go @@ -210,7 +210,10 @@ func (v *Repository) SetHead(refname string, sig *Signature, msg string) error { cname := C.CString(refname) defer C.free(unsafe.Pointer(cname)) - csig := sig.toC() + csig, err := sig.toC() + if err != nil { + return err + } defer C.free(unsafe.Pointer(csig)) var cmsg *C.char @@ -230,7 +233,10 @@ func (v *Repository) SetHead(refname string, sig *Signature, msg string) error { } func (v *Repository) SetHeadDetached(id *Oid, sig *Signature, msg string) error { - csig := sig.toC() + csig, err := sig.toC() + if err != nil { + return err + } defer C.free(unsafe.Pointer(csig)) var cmsg *C.char @@ -253,7 +259,10 @@ func (v *Repository) CreateReference(name string, id *Oid, force bool, sig *Sign cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) - csig := sig.toC() + csig, err := sig.toC() + if err != nil { + return nil, err + } defer C.free(unsafe.Pointer(csig)) var cmsg *C.char @@ -284,7 +293,10 @@ func (v *Repository) CreateSymbolicReference(name, target string, force bool, si ctarget := C.CString(target) defer C.free(unsafe.Pointer(ctarget)) - csig := sig.toC() + csig, err := sig.toC() + if err != nil { + return nil, err + } defer C.free(unsafe.Pointer(csig)) var cmsg *C.char @@ -352,10 +364,16 @@ func (v *Repository) CreateCommit( parentsarg = &cparents[0] } - authorSig := author.toC() + authorSig, err := author.toC() + if err != nil { + return nil, err + } defer C.git_signature_free(authorSig) - committerSig := committer.toC() + committerSig, err := committer.toC() + if err != nil { + return nil, err + } defer C.git_signature_free(committerSig) runtime.LockOSThread() @@ -384,7 +402,10 @@ func (v *Repository) CreateTag( cmessage := C.CString(message) defer C.free(unsafe.Pointer(cmessage)) - taggerSig := tagger.toC() + taggerSig, err := tagger.toC() + if err != nil { + return nil, err + } defer C.git_signature_free(taggerSig) ctarget := commit.gitObject.ptr @@ -546,10 +567,16 @@ func (v *Repository) CreateNote( defer C.free(unsafe.Pointer(cref)) } - authorSig := author.toC() + authorSig, err := author.toC() + if err != nil { + return nil, err + } defer C.git_signature_free(authorSig) - committerSig := committer.toC() + committerSig, err := committer.toC() + if err != nil { + return nil, err + } defer C.git_signature_free(committerSig) cnote := C.CString(note) @@ -601,10 +628,16 @@ func (v *Repository) RemoveNote(ref string, author, committer *Signature, id *Oi defer C.free(unsafe.Pointer(cref)) } - authorSig := author.toC() + authorSig, err := author.toC() + if err != nil { + return err + } defer C.git_signature_free(authorSig) - committerSig := committer.toC() + committerSig, err := committer.toC() + if err != nil { + return err + } defer C.git_signature_free(committerSig) runtime.LockOSThread() @@ -630,3 +663,36 @@ func (v *Repository) DefaultNoteRef() (string, error) { return C.GoString(ptr), nil } + +type RepositoryState int + +const ( + RepositoryStateNone RepositoryState = C.GIT_REPOSITORY_STATE_NONE + RepositoryStateMerge RepositoryState = C.GIT_REPOSITORY_STATE_MERGE + RepositoryStateRevert RepositoryState = C.GIT_REPOSITORY_STATE_REVERT + RepositoryStateCherrypick RepositoryState = C.GIT_REPOSITORY_STATE_CHERRYPICK + RepositoryStateBisect RepositoryState = C.GIT_REPOSITORY_STATE_BISECT + RepositoryStateRebase RepositoryState = C.GIT_REPOSITORY_STATE_REBASE + RepositoryStateRebaseInteractive RepositoryState = C.GIT_REPOSITORY_STATE_REBASE_INTERACTIVE + RepositoryStateRebaseMerge RepositoryState = C.GIT_REPOSITORY_STATE_REBASE_MERGE + RepositoryStateApplyMailbox RepositoryState = C.GIT_REPOSITORY_STATE_APPLY_MAILBOX + RepositoryStateApplyMailboxOrRebase RepositoryState = C.GIT_REPOSITORY_STATE_APPLY_MAILBOX_OR_REBASE +) + +func (r *Repository) State() RepositoryState { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + return RepositoryState(C.git_repository_state(r.ptr)) +} + +func (r *Repository) StateCleanup() error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + cErr := C.git_repository_state_cleanup(r.ptr) + if cErr < 0 { + return MakeGitError(cErr) + } + return nil +} |
