From d693954cf53bf544359bc2eaf8634d7dc5540739 Mon Sep 17 00:00:00 2001 From: Jesse Hathaway Date: Mon, 28 Sep 2020 20:59:18 +0000 Subject: [PATCH] Add a ReInit function libgit2 stores the lookup paths for gitconfig files in its global state. This means that after a program changes its effective uid libgit2 will still look for gitconfig files in the home directory of the original uid. Expose a way to call C.git_libgit2_init so a user can reinitialize the libgit2 global state. --- git.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/git.go b/git.go index bd01b6d..ebece03 100644 --- a/git.go +++ b/git.go @@ -149,6 +149,17 @@ func Shutdown() { C.git_libgit2_shutdown() } +// ReInit reinitializes the global state, this is useful if the effective user +// id has changed and you want to update the stored search paths for gitconfig +// files. This function frees any references to objects, so it should be called +// before any other functions are called. +func ReInit() { + pointerHandles.Clear() + C.git_libgit2_shutdown() + pointerHandles = NewHandleList() + C.git_libgit2_init() +} + // Oid represents the id for a Git object. type Oid [20]byte