From 199995ee769d68d629a845c4ff8d7ae2bf705c5f Mon Sep 17 00:00:00 2001 From: calin Date: Wed, 20 Apr 2022 21:16:12 -0600 Subject: [PATCH] Allow retrieving/setting repository owner validation Uses the `GIT_OPT_GET_OWNER_VALIDATION` and `GIT_OPT_SET_OWNER_VALIDATION` options introduced in https://github.com/libgit2/libgit2/commit/4161ebdd50dc29205dcc94cba5320c6d0d2537a7 --- settings.go | 16 ++++++++++++++++ settings_test.go | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/settings.go b/settings.go index 7f9b5b12..4feebf21 100644 --- a/settings.go +++ b/settings.go @@ -134,6 +134,22 @@ func SetCacheObjectLimit(objectType ObjectType, size int) error { return nil } +func OwnerValidation() (enabled bool, err error) { + val, err := getSizet(C.GIT_OPT_GET_OWNER_VALIDATION) + if val == 1 { + return true, err + } + return false, err +} + +func SetOwnerValidation(enabled bool) error { + if enabled { + return setSizet(C.GIT_OPT_SET_OWNER_VALIDATION, 1) + } else { + return setSizet(C.GIT_OPT_SET_OWNER_VALIDATION, 0) + } +} + func getSizet(opt C.int) (int, error) { runtime.LockOSThread() defer runtime.UnlockOSThread() diff --git a/settings_test.go b/settings_test.go index e3761d45..3fd04034 100644 --- a/settings_test.go +++ b/settings_test.go @@ -97,3 +97,27 @@ func TestSetCacheMaxSize(t *testing.T) { err = SetCacheMaxSize(256 * 1024 * 1024) checkFatal(t, err) } + +func TestOwnerValidation(t *testing.T) { + enabled, err := OwnerValidation() + checkFatal(t, err) + + err = SetOwnerValidation(!enabled) + checkFatal(t, err) + + var enabled2 bool + enabled2, err = OwnerValidation() + checkFatal(t, err) + + if enabled == enabled2 { + t.Fatal("set owner validation failed") + } +} + +func TestSetOwnerValidation(t *testing.T) { + err := SetOwnerValidation(false) + checkFatal(t, err) + + err = SetOwnerValidation(true) + checkFatal(t, err) +}