diff options
| author | Carlos Martín Nieto <[email protected]> | 2015-10-21 16:33:05 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2015-10-21 16:33:05 +0200 |
| commit | c4868aef6c3e22a5c339dea4dd5406bfc0bd095b (patch) | |
| tree | a224985ab4e36f26ede08f4a930b062db0e8f02f /ignore.go | |
| parent | 698ed4a42d86ae88682379c4ad6f209735d0bf33 (diff) | |
| parent | 56cc9e1b0eafb1275be42ca60cfaf78297df8d60 (diff) | |
Merge pull request #262 from clearr/ignore-support
Add support for ignore
Diffstat (limited to 'ignore.go')
| -rw-r--r-- | ignore.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/ignore.go b/ignore.go new file mode 100644 index 0000000..6b12348 --- /dev/null +++ b/ignore.go @@ -0,0 +1,51 @@ +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) + 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) + 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) + if ret < 0 { + return false, MakeGitError(ret) + } + return ignored == 1, nil +} |
