55 lines
998 B
Go
55 lines
998 B
Go
package git
|
|
|
|
/*
|
|
#include <git2.h>
|
|
*/
|
|
import "C"
|
|
import (
|
|
"runtime"
|
|
"unsafe"
|
|
)
|
|
|
|
func (v *Repository) AddIgnoreRule(rules string) error {
|
|
crules := C.CString(rules)
|
|
defer C.free(unsafe.Pointer(crules))
|
|
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
ret := C.git_ignore_add_rule(v.ptr, crules)
|
|
runtime.KeepAlive(v)
|
|
if ret < 0 {
|
|
return MakeGitError(ret)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (v *Repository) ClearInternalIgnoreRules() error {
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
ret := C.git_ignore_clear_internal_rules(v.ptr)
|
|
runtime.KeepAlive(v)
|
|
if ret < 0 {
|
|
return MakeGitError(ret)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (v *Repository) IsPathIgnored(path string) (bool, error) {
|
|
var ignored C.int
|
|
|
|
cpath := C.CString(path)
|
|
defer C.free(unsafe.Pointer(cpath))
|
|
|
|
runtime.LockOSThread()
|
|
defer runtime.UnlockOSThread()
|
|
|
|
ret := C.git_ignore_path_is_ignored(&ignored, v.ptr, cpath)
|
|
runtime.KeepAlive(v)
|
|
if ret < 0 {
|
|
return false, MakeGitError(ret)
|
|
}
|
|
return ignored == 1, nil
|
|
}
|