summaryrefslogtreecommitdiff
path: root/repository.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-03-11 17:05:16 +0100
committerCarlos Martín Nieto <[email protected]>2015-03-11 17:05:16 +0100
commitd300110b8582cd44511efc26a7a0ce04d409f8ce (patch)
tree58652052be2848d110ff3c894517452577f44a95 /repository.go
parent755721e68453c5d6de0681789dbe3307744fc9c4 (diff)
parent9eae50f29a69fa47cecf3cf4dfb032414cf27a50 (diff)
Merge pull request #178 from schani/master
Fixes and improvements
Diffstat (limited to 'repository.go')
-rw-r--r--repository.go88
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
+}