@@ -18,10 +18,20 @@ int _go_git_opts_set_size_t(int opt, size_t val)
1818 return git_libgit2_opts(opt, val);
1919}
2020
21+ int _go_git_opts_set_cache_object_limit(git_object_t type, size_t size)
22+ {
23+ return git_libgit2_opts(GIT_OPT_SET_CACHE_OBJECT_LIMIT, type, size);
24+ }
25+
2126int _go_git_opts_get_size_t(int opt, size_t *val)
2227{
2328 return git_libgit2_opts(opt, val);
2429}
30+
31+ int _go_git_opts_get_size_t_size_t(int opt, size_t *val1, size_t *val2)
32+ {
33+ return git_libgit2_opts(opt, val1, val2);
34+ }
2535*/
2636import "C"
2737import (
@@ -75,6 +85,34 @@ func SetMwindowMappedLimit(size int) error {
7585 return setSizet (C .GIT_OPT_SET_MWINDOW_MAPPED_LIMIT , size )
7686}
7787
88+ func EnableCaching (enabled bool ) error {
89+ if enabled {
90+ return setSizet (C .GIT_OPT_ENABLE_CACHING , 1 )
91+ } else {
92+ return setSizet (C .GIT_OPT_ENABLE_CACHING , 0 )
93+ }
94+ }
95+
96+ func GetCachedMemory () (current int , allowed int , err error ) {
97+ return getSizetSizet (C .GIT_OPT_GET_CACHED_MEMORY )
98+ }
99+
100+ func SetCacheMaxSize (maxSize int ) error {
101+ return setSizet (C .GIT_OPT_SET_CACHE_MAX_SIZE , maxSize )
102+ }
103+
104+ func SetCacheObjectLimit (objectType ObjectType , size int ) error {
105+ runtime .LockOSThread ()
106+ defer runtime .UnlockOSThread ()
107+
108+ err := C ._go_git_opts_set_cache_object_limit (C .git_object_t (objectType ), C .size_t (size ))
109+ if err < 0 {
110+ return MakeGitError (err )
111+ }
112+
113+ return nil
114+ }
115+
78116func getSizet (opt C.int ) (int , error ) {
79117 runtime .LockOSThread ()
80118 defer runtime .UnlockOSThread ()
@@ -88,6 +126,19 @@ func getSizet(opt C.int) (int, error) {
88126 return int (val ), nil
89127}
90128
129+ func getSizetSizet (opt C.int ) (int , int , error ) {
130+ runtime .LockOSThread ()
131+ defer runtime .UnlockOSThread ()
132+
133+ var val1 , val2 C.size_t
134+ err := C ._go_git_opts_get_size_t_size_t (opt , & val1 , & val2 )
135+ if err < 0 {
136+ return 0 , 0 , MakeGitError (err )
137+ }
138+
139+ return int (val1 ), int (val2 ), nil
140+ }
141+
91142func setSizet (opt C.int , val int ) error {
92143 runtime .LockOSThread ()
93144 defer runtime .UnlockOSThread ()
0 commit comments