diff options
| author | lhchavez <[email protected]> | 2020-05-04 17:44:13 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-05-04 17:44:13 -0700 |
| commit | 8b51d0db8e40e97283b771a5a51b13bea4651f81 (patch) | |
| tree | 2770e052e312c470a45de6954eed946a807e8b80 /settings.go | |
| parent | 91d08450b68efc8ef5bd5bfee29e813ca5829229 (diff) | |
| parent | 862cde393cca25fdf04b883aa331a88a3fec67a7 (diff) | |
expose options related to caching
Diffstat (limited to 'settings.go')
| -rw-r--r-- | settings.go | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/settings.go b/settings.go index b9bc216..c6dfe1c 100644 --- a/settings.go +++ b/settings.go @@ -18,10 +18,20 @@ int _go_git_opts_set_size_t(int opt, size_t val) return git_libgit2_opts(opt, val); } +int _go_git_opts_set_cache_object_limit(git_object_t type, size_t size) +{ + return git_libgit2_opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, type, size); +} + int _go_git_opts_get_size_t(int opt, size_t *val) { return git_libgit2_opts(opt, val); } + +int _go_git_opts_get_size_t_size_t(int opt, size_t *val1, size_t *val2) +{ + return git_libgit2_opts(opt, val1, val2); +} */ import "C" import ( @@ -75,6 +85,34 @@ func SetMwindowMappedLimit(size int) error { return setSizet(C.GIT_OPT_SET_MWINDOW_MAPPED_LIMIT, size) } +func EnableCaching(enabled bool) error { + if enabled { + return setSizet(C.GIT_OPT_ENABLE_CACHING, 1) + } else { + return setSizet(C.GIT_OPT_ENABLE_CACHING, 0) + } +} + +func GetCachedMemory() (current int, allowed int, err error) { + return getSizetSizet(C.GIT_OPT_GET_CACHED_MEMORY) +} + +func SetCacheMaxSize(maxSize int) error { + return setSizet(C.GIT_OPT_SET_CACHE_MAX_SIZE, maxSize) +} + +func SetCacheObjectLimit(objectType ObjectType, size int) error { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + err := C._go_git_opts_set_cache_object_limit(C.git_object_t(objectType), C.size_t(size)) + if err < 0 { + return MakeGitError(err) + } + + return nil +} + func getSizet(opt C.int) (int, error) { runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -88,6 +126,19 @@ func getSizet(opt C.int) (int, error) { return int(val), nil } +func getSizetSizet(opt C.int) (int, int, error) { + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + var val1, val2 C.size_t + err := C._go_git_opts_get_size_t_size_t(opt, &val1, &val2) + if err < 0 { + return 0, 0, MakeGitError(err) + } + + return int(val1), int(val2), nil +} + func setSizet(opt C.int, val int) error { runtime.LockOSThread() defer runtime.UnlockOSThread() |
