From 894cf6f88a640c2bc796caa3c61e5b7ed787683b Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Mon, 17 Feb 2025 11:03:53 +0800 Subject: [PATCH] git_init.go: git_bare_init_with_default_hooks --- config.go | 7 ++++--- forge.scfg | 5 +++-- git_init.go | 28 ++++++++++++++++++++++++++++ diff --git a/config.go b/config.go index 45550d7b73da09cd678c7d6dd19508fc61c7fa8f..13ae7e979c995162f57cdbeb671c88c60527a470 100644 --- a/config.go +++ b/config.go @@ -21,9 +21,10 @@ Addr string `scfg:"addr"` CookieExpiry int `scfg:"cookie_expiry"` Root string `scfg:"root"` } `scfg:"http"` - Git struct { - HooksSocket string `scfg:"hooks_socket"` - } `scfg:"git"` + Hooks struct { + Socket string `scfg:"socket"` + Execs string `scfg:"execs"` + } `scfg:"hooks"` SSH struct { Net string `scfg:"net"` Addr string `scfg:"addr"` diff --git a/forge.scfg b/forge.scfg index 492b9ac496b5644ed1f124b69b2b083bf388d806..5b3f2d7613363b86238fc6c9df0b102788c3a7d7 100644 --- a/forge.scfg +++ b/forge.scfg @@ -21,6 +21,7 @@ type postgres conn postgresql:///lindenii-forge?host=/var/run/postgresql } -git { - hooks_socket /var/run/lindenii/forge/hooks.sock +hooks { + socket /var/run/lindenii/forge/hooks.sock + execs /usr/libexec/lindenii/forge/hooks } diff --git a/git_init.go b/git_init.go new file mode 100644 index 0000000000000000000000000000000000000000..466628f05f64b51093e57621a6f1757c515fdea1 --- /dev/null +++ b/git_init.go @@ -0,0 +1,28 @@ +package main + + +import ( + "github.com/go-git/go-git/v5" + git_format_config "github.com/go-git/go-git/v5/plumbing/format/config" +) + +func git_bare_init_with_default_hooks(repo_path string) (err error) { + repo, err := git.PlainInit(repo_path, true) + if err != nil { + return err + } + + git_config, err := repo.Config() + if err != nil { + return err + } + + git_config.Raw.SetOption("core", git_format_config.NoSubsection, "hooksPath", config.Hooks.Execs) + + err = repo.SetConfig(git_config) + if err != nil { + return err + } + + return nil +} -- 2.48.1