diff options
| author | Calin Seciu <[email protected]> | 2016-02-20 14:52:57 +0200 |
|---|---|---|
| committer | Calin Seciu <[email protected]> | 2016-02-20 14:52:57 +0200 |
| commit | c6f394e407a8f119eea191e1321f61828921f164 (patch) | |
| tree | 6b4ab4bbd263388f0384b029b2a770189782b9d0 /repository.go | |
| parent | dc4409793db0205ce7c0783a10363d7d67aee674 (diff) | |
| parent | 251d89e1d41037185df0ea89e9aab208efc40d4e (diff) | |
Merge branch 'next' into stash-support
Diffstat (limited to 'repository.go')
| -rw-r--r-- | repository.go | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/repository.go b/repository.go index 4bf8531..2e6b81d 100644 --- a/repository.go +++ b/repository.go @@ -66,15 +66,29 @@ func OpenRepository(path string) (*Repository, error) { return newRepositoryFromC(ptr), nil } -func OpenRepositoryExtended(path string) (*Repository, error) { +type RepositoryOpenFlag int + +const ( + RepositoryOpenNoSearch RepositoryOpenFlag = C.GIT_REPOSITORY_OPEN_NO_SEARCH + RepositoryOpenCrossFs RepositoryOpenFlag = C.GIT_REPOSITORY_OPEN_CROSS_FS + RepositoryOpenBare RepositoryOpenFlag = C.GIT_REPOSITORY_OPEN_BARE +) + +func OpenRepositoryExtended(path string, flags RepositoryOpenFlag, ceiling string) (*Repository, error) { cpath := C.CString(path) defer C.free(unsafe.Pointer(cpath)) + var cceiling *C.char = nil + if len(ceiling) > 0 { + cceiling = C.CString(ceiling) + defer C.free(unsafe.Pointer(cceiling)) + } + runtime.LockOSThread() defer runtime.UnlockOSThread() var ptr *C.git_repository - ret := C.git_repository_open_ext(&ptr, cpath, 0, nil) + ret := C.git_repository_open_ext(&ptr, cpath, C.uint(flags), cceiling) if ret < 0 { return nil, MakeGitError(ret) } @@ -437,3 +451,24 @@ func (r *Repository) StateCleanup() error { } return nil } +func (r *Repository) AddGitIgnoreRules(rules string) error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + crules := C.CString(rules) + defer C.free(unsafe.Pointer(crules)) + if ret := C.git_ignore_add_rule(r.ptr, crules); ret < 0 { + return MakeGitError(ret) + } + return nil +} + +func (r *Repository) ClearGitIgnoreRules() error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + if ret := C.git_ignore_clear_internal_rules(r.ptr); ret < 0 { + return MakeGitError(ret) + } + return nil +} |
