// Remove removes the note for an object func (c *NoteCollection) Remove(ref string, author, committer *Signature, id *Oid) error { var cref *C.char if ref == "" { cref = nil } else { cref = C.CString(ref) defer C.free(unsafe.Pointer(cref)) } authorSig, err := author.toC() if err != nil { return err } defer C.git_signature_free(authorSig) committerSig, err := committer.toC() if err != nil { return err } defer C.git_signature_free(committerSig) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_note_remove(c.repo.ptr, cref, authorSig, committerSig, id.toC()) if ret < 0 { return MakeGitError(ret) } return nil }
func (v *Repository) CreateCommit( refname string, author, committer *Signature, message string, tree *Tree, parents ...*Commit) (*Oid, error) { oid := new(Oid) var cref *C.char if refname == "" { cref = nil } else { cref = C.CString(refname) defer C.free(unsafe.Pointer(cref)) } cmsg := C.CString(message) defer C.free(unsafe.Pointer(cmsg)) var cparents []*C.git_commit = nil var parentsarg **C.git_commit = nil nparents := len(parents) if nparents > 0 { cparents = make([]*C.git_commit, nparents) for i, v := range parents { cparents[i] = v.cast_ptr } parentsarg = &cparents[0] } authorSig, err := author.toC() if err != nil { return nil, err } defer C.git_signature_free(authorSig) committerSig, err := committer.toC() if err != nil { return nil, err } defer C.git_signature_free(committerSig) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_commit_create( oid.toC(), v.ptr, cref, authorSig, committerSig, nil, cmsg, tree.cast_ptr, C.size_t(nparents), parentsarg) if ret < 0 { return nil, MakeGitError(ret) } return oid, nil }
// Fetch performs a fetch operation. refspecs specifies which refspecs // to use for this fetch, use an empty list to use the refspecs from // the configuration; sig and msg specify what to use for the reflog // entries. Leave nil and "" to use defaults. func (o *Remote) Fetch(refspecs []string, sig *Signature, msg string) error { var csig *C.git_signature = nil if sig != nil { csig, err := sig.toC() if err != nil { return err } defer C.git_signature_free(csig) } var cmsg *C.char = nil if msg != "" { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } crefspecs := C.git_strarray{} crefspecs.count = C.size_t(len(refspecs)) crefspecs.strings = makeCStringsFromStrings(refspecs) defer freeStrarray(&crefspecs) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_remote_fetch(o.ptr, &crefspecs, csig, cmsg) if ret < 0 { return MakeGitError(ret) } return nil }
func (repo *Repository) CreateBranch(branchName string, target *Commit, force bool, signature *Signature, msg string) (*Branch, error) { ref := new(Reference) cBranchName := C.CString(branchName) cForce := cbool(force) cSignature, err := signature.toC() if err != nil { return nil, err } defer C.git_signature_free(cSignature) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_branch_create(&ref.ptr, repo.ptr, cBranchName, target.cast_ptr, cForce, cSignature, cmsg) if ret < 0 { return nil, MakeGitError(ret) } return ref.Branch(), nil }
func (v *Repository) SetHead(refname string, sig *Signature, msg string) error { cname := C.CString(refname) defer C.free(unsafe.Pointer(cname)) csig, err := sig.toC() if err != nil { return err } defer C.git_signature_free(csig) var cmsg *C.char if msg != "" { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } runtime.LockOSThread() defer runtime.UnlockOSThread() ecode := C.git_repository_set_head(v.ptr, cname, csig, cmsg) if ecode != 0 { return MakeGitError(ecode) } return nil }
func (v *Reference) SetTarget(target *Oid, sig *Signature, msg string) (*Reference, error) { var ptr *C.git_reference runtime.LockOSThread() defer runtime.UnlockOSThread() csig, err := sig.toC() if err != nil { return nil, err } defer C.git_signature_free(csig) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } ret := C.git_reference_set_target(&ptr, v.ptr, target.toC(), csig, cmsg) if ret < 0 { return nil, MakeGitError(ret) } return newReferenceFromC(ptr, v.repo), nil }
func (b *Branch) Move(newBranchName string, force bool, signature *Signature, msg string) (*Branch, error) { var ptr *C.git_reference cNewBranchName := C.CString(newBranchName) cForce := cbool(force) cSignature, err := signature.toC() if err != nil { return nil, err } defer C.git_signature_free(cSignature) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_branch_move(&ptr, b.Reference.ptr, cNewBranchName, cForce, cSignature, cmsg) if ret < 0 { return nil, MakeGitError(ret) } return newReferenceFromC(ptr, b.repo).Branch(), nil }
func (b *Branch) Move(newBranchName string, force bool, signature *Signature, msg string) (*Branch, error) { newBranch := new(Branch) cNewBranchName := C.CString(newBranchName) cForce := cbool(force) cSignature := signature.toC() defer C.git_signature_free(cSignature) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_branch_move(&newBranch.ptr, b.ptr, cNewBranchName, cForce, cSignature, cmsg) if ret < 0 { return nil, MakeGitError(ret) } return newBranch, nil }
func (v *Reference) Rename(name string, force bool, sig *Signature, msg string) (*Reference, error) { var ptr *C.git_reference cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) csig, err := sig.toC() if err != nil { return nil, err } defer C.git_signature_free(csig) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_reference_rename(&ptr, v.ptr, cname, cbool(force), csig, cmsg) if ret < 0 { return nil, MakeGitError(ret) } return newReferenceFromC(ptr, v.repo), nil }
func (c *TagsCollection) Create( name string, commit *Commit, tagger *Signature, message string) (*Oid, error) { oid := new(Oid) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) cmessage := C.CString(message) defer C.free(unsafe.Pointer(cmessage)) taggerSig, err := tagger.toC() if err != nil { return nil, err } defer C.git_signature_free(taggerSig) ctarget := commit.ptr runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_tag_create(oid.toC(), c.repo.ptr, cname, ctarget, taggerSig, cmessage, 0) if ret < 0 { return nil, MakeGitError(ret) } return oid, nil }
func (v *Repository) CreateSymbolicReference(name, target string, force bool, sig *Signature, msg string) (*Reference, error) { cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) ctarget := C.CString(target) defer C.free(unsafe.Pointer(ctarget)) csig, err := sig.toC() if err != nil { return nil, err } defer C.git_signature_free(csig) var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } var ptr *C.git_reference runtime.LockOSThread() defer runtime.UnlockOSThread() ecode := C.git_reference_symbolic_create(&ptr, v.ptr, cname, ctarget, cbool(force), csig, cmsg) if ecode < 0 { return nil, MakeGitError(ecode) } return newReferenceFromC(ptr, v), nil }
func (v *Repository) CreateCommit( refname string, author, committer *Signature, message string, tree *Tree, parents ...*Commit) (*Oid, error) { oid := new(Oid) cref := C.CString(refname) defer C.free(unsafe.Pointer(cref)) cmsg := C.CString(message) defer C.free(unsafe.Pointer(cmsg)) var cparents []*C.git_commit = nil var parentsarg **C.git_commit = nil nparents := len(parents) if nparents > 0 { cparents = make([]*C.git_commit, nparents) for i, v := range parents { cparents[i] = v.ptr } parentsarg = &cparents[0] } authorSig := author.toC() defer C.git_signature_free(authorSig) committerSig := committer.toC() defer C.git_signature_free(committerSig) ret := C.git_commit_create( oid.toC(), v.ptr, cref, authorSig, committerSig, nil, cmsg, tree.ptr, C.int(nparents), parentsarg) if ret < 0 { return nil, LastError() } return oid, nil }
// Create adds a note for an object func (c *NoteCollection) Create( ref string, author, committer *Signature, id *Oid, note string, force bool) (*Oid, error) { oid := new(Oid) var cref *C.char if ref == "" { cref = nil } else { cref = C.CString(ref) defer C.free(unsafe.Pointer(cref)) } authorSig, err := author.toC() if err != nil { return nil, err } defer C.git_signature_free(authorSig) committerSig, err := committer.toC() if err != nil { return nil, err } defer C.git_signature_free(committerSig) cnote := C.CString(note) defer C.free(unsafe.Pointer(cnote)) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_note_create( oid.toC(), c.repo.ptr, cref, authorSig, committerSig, id.toC(), cnote, cbool(force)) if ret < 0 { return nil, MakeGitError(ret) } return oid, nil }
func (c *Commit) Amend(refname string, author, committer *Signature, message string, tree *Tree) (*Oid, error) { var cref *C.char if refname == "" { cref = nil } else { cref = C.CString(refname) defer C.free(unsafe.Pointer(cref)) } cmsg := C.CString(message) defer C.free(unsafe.Pointer(cmsg)) runtime.LockOSThread() defer runtime.UnlockOSThread() authorSig, err := author.toC() if err != nil { return nil, err } defer C.git_signature_free(authorSig) committerSig, err := committer.toC() if err != nil { return nil, err } defer C.git_signature_free(committerSig) oid := new(Oid) cerr := C.git_commit_amend(oid.toC(), c.cast_ptr, cref, authorSig, committerSig, nil, cmsg, tree.cast_ptr) if cerr < 0 { return nil, MakeGitError(cerr) } return oid, nil }
func (repo *Repository) DefaultSignature() (*Signature, error) { var out *C.git_signature runtime.LockOSThread() defer runtime.UnlockOSThread() cErr := C.git_signature_default(&out, repo.ptr) if cErr < 0 { return nil, MakeGitError(cErr) } defer C.git_signature_free(out) return newSignatureFromC(out), nil }
func (o *Remote) Push(refspecs []string, opts *PushOptions, sig *Signature, msg string) error { var csig *C.git_signature = nil if sig != nil { csig, err := sig.toC() if err != nil { return err } defer C.git_signature_free(csig) } var cmsg *C.char if msg == "" { cmsg = nil } else { cmsg = C.CString(msg) defer C.free(unsafe.Pointer(cmsg)) } var copts C.git_push_options C.git_push_init_options(&copts, C.GIT_PUSH_OPTIONS_VERSION) if opts != nil { copts.pb_parallelism = C.uint(opts.PbParallelism) } crefspecs := C.git_strarray{} crefspecs.count = C.size_t(len(refspecs)) crefspecs.strings = makeCStringsFromStrings(refspecs) defer freeStrarray(&crefspecs) runtime.LockOSThread() defer runtime.UnlockOSThread() ret := C.git_remote_push(o.ptr, &crefspecs, &copts, csig, cmsg) if ret < 0 { return MakeGitError(ret) } return nil }
func (v *Repository) CreateTag( name string, commit *Commit, tagger *Signature, message string) (*Oid, error) { oid := new(Oid) cname := C.CString(name) defer C.free(unsafe.Pointer(cname)) cmessage := C.CString(message) defer C.free(unsafe.Pointer(cmessage)) taggerSig := tagger.toC() defer C.git_signature_free(taggerSig) ctarget := commit.gitObject.ptr ret := C.git_tag_create(oid.toC(), v.ptr, cname, ctarget, taggerSig, cmessage, 0) if ret < 0 { return nil, MakeGitError(ret) } return oid, nil }
func (r *GitRepository) Commit(name, email string) error { var ret C.int var index *C.git_index ret = C.git_repository_index(&index, r.ptr) if ret < 0 { return GitErrorLast() } defer C.git_index_free(index) treeOid := new(C.git_oid) ret = C.git_index_write_tree(treeOid, index) if ret < 0 { return GitErrorLast() } tree := new(C.git_tree) ret = C.git_tree_lookup(&tree, r.ptr, treeOid) if ret < 0 { return GitErrorLast() } defer C.git_tree_free(tree) signature := new(C.git_signature) cName := C.CString(name) defer C.free(unsafe.Pointer(cName)) cEmail := C.CString(email) defer C.free(unsafe.Pointer(cEmail)) ret = C.git_signature_now(&signature, cName, cEmail) if ret < 0 { return GitErrorLast() } defer C.git_signature_free(signature) headOid := new(C.git_oid) cHead := C.CString("HEAD") defer C.free(unsafe.Pointer(cHead)) ret = C.git_reference_name_to_id(headOid, r.ptr, cHead) commitOid := new(C.git_oid) cMessage := C.CString("") defer C.free(unsafe.Pointer(cMessage)) if ret == 0 { head := new(C.git_commit) ret = C.git_commit_lookup(&head, r.ptr, headOid) if ret < 0 { return GitErrorLast() } defer C.git_commit_free(head) parents := make([]*C.git_commit, 1) parents[0] = head ret = C.git_commit_create( commitOid, r.ptr, cHead, signature, signature, nil, cMessage, tree, 1, &parents[0], ) } else { ret = C.git_commit_create( commitOid, r.ptr, cHead, signature, signature, nil, cMessage, tree, 0, nil, ) } if ret < 0 { return GitErrorLast() } ret = C.git_index_write(index) if ret < 0 { return GitErrorLast() } return nil }
func (sig *Signature) Free() { C.git_signature_free(sig.git_signature) }
func (s Signature) Free() { C.git_signature_free(s.git_signature) }