diff options
author | Jason Song <i@wolfogre.com> | 2022-10-29 00:53:08 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-28 19:53:08 +0300 |
commit | 60dc48dc0012ac06a07ca7abc9c8de97c2c5a867 (patch) | |
tree | 0fee5edc0af6db8443a765802f5300affde2879b /routers/init.go | |
parent | 100448a007707c049a769cb71cd170fcb5b64a25 (diff) | |
download | gitea-60dc48dc0012ac06a07ca7abc9c8de97c2c5a867.tar.gz gitea-60dc48dc0012ac06a07ca7abc9c8de97c2c5a867.zip |
Sync git hooks when config file path changed (#21619)
A patch to #17335.
Just like AppPath, Gitea writes its own CustomConf into git hook scripts
too. If Gitea's CustomConf changes, then the git push may fail.
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'routers/init.go')
-rw-r--r-- | routers/init.go | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/routers/init.go b/routers/init.go index 9045437f87..53b33f468f 100644 --- a/routers/init.go +++ b/routers/init.go @@ -76,21 +76,31 @@ func InitGitServices() { mustInit(repo_service.Init) } -func syncAppPathForGit(ctx context.Context) error { +func syncAppConfForGit(ctx context.Context) error { runtimeState := new(system.RuntimeState) if err := system.AppState.Get(runtimeState); err != nil { return err } + + updated := false if runtimeState.LastAppPath != setting.AppPath { log.Info("AppPath changed from '%s' to '%s'", runtimeState.LastAppPath, setting.AppPath) + runtimeState.LastAppPath = setting.AppPath + updated = true + } + if runtimeState.LastCustomConf != setting.CustomConf { + log.Info("CustomConf changed from '%s' to '%s'", runtimeState.LastCustomConf, setting.CustomConf) + runtimeState.LastCustomConf = setting.CustomConf + updated = true + } + if updated { log.Info("re-sync repository hooks ...") mustInitCtx(ctx, repo_service.SyncRepositoryHooks) log.Info("re-write ssh public keys ...") mustInit(asymkey_model.RewriteAllPublicKeys) - runtimeState.LastAppPath = setting.AppPath return system.AppState.Set(runtimeState) } return nil @@ -153,7 +163,7 @@ func GlobalInitInstalled(ctx context.Context) { mustInit(repo_migrations.Init) eventsource.GetManager().Init() - mustInitCtx(ctx, syncAppPathForGit) + mustInitCtx(ctx, syncAppConfForGit) mustInit(ssh.Init) |