@@ -18,10 +18,20 @@ int _go_git_opts_set_size_t(int opt, size_t val)
18
18
return git_libgit2_opts(opt, val);
19
19
}
20
20
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
+
21
26
int _go_git_opts_get_size_t(int opt, size_t *val)
22
27
{
23
28
return git_libgit2_opts(opt, val);
24
29
}
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
+ }
25
35
*/
26
36
import "C"
27
37
import (
@@ -75,6 +85,34 @@ func SetMwindowMappedLimit(size int) error {
75
85
return setSizet (C .GIT_OPT_SET_MWINDOW_MAPPED_LIMIT , size )
76
86
}
77
87
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
+
78
116
func getSizet (opt C.int ) (int , error ) {
79
117
runtime .LockOSThread ()
80
118
defer runtime .UnlockOSThread ()
@@ -88,6 +126,19 @@ func getSizet(opt C.int) (int, error) {
88
126
return int (val ), nil
89
127
}
90
128
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
+
91
142
func setSizet (opt C.int , val int ) error {
92
143
runtime .LockOSThread ()
93
144
defer runtime .UnlockOSThread ()
0 commit comments