aboutsummaryrefslogtreecommitdiffstats
path: root/services/repository/hooks.go
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2021-12-12 23:48:20 +0800
committerGitHub <noreply@github.com>2021-12-12 23:48:20 +0800
commit572324049008ac803d3d7c17a7b3a81ef00386fc (patch)
treea9c3709643a23165d27aa67e76f10f26a89936d5 /services/repository/hooks.go
parent0a7e8327a017c5dd43e552bbcd0d0f056bc1671b (diff)
downloadgitea-572324049008ac803d3d7c17a7b3a81ef00386fc.tar.gz
gitea-572324049008ac803d3d7c17a7b3a81ef00386fc.zip
Some repository refactors (#17950)
* some repository refactors * remove unnecessary code * Fix test * Remove unnecessary banner
Diffstat (limited to 'services/repository/hooks.go')
-rw-r--r--services/repository/hooks.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/services/repository/hooks.go b/services/repository/hooks.go
index 714cd6b2eb..f567702e9d 100644
--- a/services/repository/hooks.go
+++ b/services/repository/hooks.go
@@ -10,6 +10,7 @@ import (
"code.gitea.io/gitea/models/db"
repo_model "code.gitea.io/gitea/models/repo"
+ "code.gitea.io/gitea/modules/git"
"code.gitea.io/gitea/modules/log"
repo_module "code.gitea.io/gitea/modules/repository"
@@ -50,3 +51,36 @@ func SyncRepositoryHooks(ctx context.Context) error {
log.Trace("Finished: SyncRepositoryHooks")
return nil
}
+
+// GenerateGitHooks generates git hooks from a template repository
+func GenerateGitHooks(ctx context.Context, templateRepo, generateRepo *repo_model.Repository) error {
+ generateGitRepo, err := git.OpenRepository(generateRepo.RepoPath())
+ if err != nil {
+ return err
+ }
+ defer generateGitRepo.Close()
+
+ templateGitRepo, err := git.OpenRepository(templateRepo.RepoPath())
+ if err != nil {
+ return err
+ }
+ defer templateGitRepo.Close()
+
+ templateHooks, err := templateGitRepo.Hooks()
+ if err != nil {
+ return err
+ }
+
+ for _, templateHook := range templateHooks {
+ generateHook, err := generateGitRepo.GetHook(templateHook.Name())
+ if err != nil {
+ return err
+ }
+
+ generateHook.Content = templateHook.Content
+ if err := generateHook.Update(); err != nil {
+ return err
+ }
+ }
+ return nil
+}