summaryrefslogtreecommitdiff
path: root/settings.go
diff options
context:
space:
mode:
authorVladimir Buzuev <[email protected]>2020-04-03 11:51:20 -0700
committerVladimir Buzuev <[email protected]>2020-04-03 11:51:20 -0700
commit512f37b369cc8fd6c9594fc06546ad7a4ab423d6 (patch)
tree67a3c2ee6feed2ef11478da1e3ac57ade8b17d44 /settings.go
parent0843b826d219b16d55d3bb7fffbb5fb3fbbf82f8 (diff)
expose options related to caching
Diffstat (limited to 'settings.go')
-rw-r--r--settings.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/settings.go b/settings.go
index b9bc216..8bbdda0 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() (int, int, 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,20 @@ 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 C.size_t
+ var 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()