43 lines
943 B
Go
43 lines
943 B
Go
package git
|
|
|
|
/*
|
|
#include <git2.h>
|
|
*/
|
|
import "C"
|
|
import "runtime"
|
|
|
|
type ResetType int
|
|
|
|
const (
|
|
ResetSoft ResetType = C.GIT_RESET_SOFT
|
|
ResetMixed ResetType = C.GIT_RESET_MIXED
|
|
ResetHard ResetType = C.GIT_RESET_HARD
|
|
)
|
|
|
|
func (r *Repository) ResetToCommit(commit *Commit, resetType ResetType, opts *CheckoutOpts) error {
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
ret := C.git_reset(r.ptr, commit.ptr, C.git_reset_t(resetType), opts.toC())
|
|
|
|
if ret < 0 {
|
|
return MakeGitError(ret)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *Repository) ResetDefaultToCommit(commit *Commit, pathspecs []string) error {
|
|
cpathspecs := C.git_strarray{}
|
|
cpathspecs.count = C.size_t(len(pathspecs))
|
|
cpathspecs.strings = makeCStringsFromStrings(pathspecs)
|
|
defer freeStrarray(&cpathspecs)
|
|
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
ret := C.git_reset_default(r.ptr, commit.ptr, &cpathspecs)
|
|
|
|
if ret < 0 {
|
|
return MakeGitError(ret)
|
|
}
|
|
return nil
|
|
}
|