mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-01 05:36:19 +01:00
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>
This commit is contained in:
parent
100448a007
commit
60dc48dc00
2 changed files with 15 additions and 4 deletions
|
@ -6,7 +6,8 @@ package system
|
||||||
|
|
||||||
// RuntimeState contains app state for runtime, and we can save remote version for update checker here in future
|
// RuntimeState contains app state for runtime, and we can save remote version for update checker here in future
|
||||||
type RuntimeState struct {
|
type RuntimeState struct {
|
||||||
LastAppPath string `json:"last_app_path"`
|
LastAppPath string `json:"last_app_path"`
|
||||||
|
LastCustomConf string `json:"last_custom_conf"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Name returns the item name
|
// Name returns the item name
|
||||||
|
|
|
@ -76,21 +76,31 @@ func InitGitServices() {
|
||||||
mustInit(repo_service.Init)
|
mustInit(repo_service.Init)
|
||||||
}
|
}
|
||||||
|
|
||||||
func syncAppPathForGit(ctx context.Context) error {
|
func syncAppConfForGit(ctx context.Context) error {
|
||||||
runtimeState := new(system.RuntimeState)
|
runtimeState := new(system.RuntimeState)
|
||||||
if err := system.AppState.Get(runtimeState); err != nil {
|
if err := system.AppState.Get(runtimeState); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
updated := false
|
||||||
if runtimeState.LastAppPath != setting.AppPath {
|
if runtimeState.LastAppPath != setting.AppPath {
|
||||||
log.Info("AppPath changed from '%s' to '%s'", 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 ...")
|
log.Info("re-sync repository hooks ...")
|
||||||
mustInitCtx(ctx, repo_service.SyncRepositoryHooks)
|
mustInitCtx(ctx, repo_service.SyncRepositoryHooks)
|
||||||
|
|
||||||
log.Info("re-write ssh public keys ...")
|
log.Info("re-write ssh public keys ...")
|
||||||
mustInit(asymkey_model.RewriteAllPublicKeys)
|
mustInit(asymkey_model.RewriteAllPublicKeys)
|
||||||
|
|
||||||
runtimeState.LastAppPath = setting.AppPath
|
|
||||||
return system.AppState.Set(runtimeState)
|
return system.AppState.Set(runtimeState)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -153,7 +163,7 @@ func GlobalInitInstalled(ctx context.Context) {
|
||||||
mustInit(repo_migrations.Init)
|
mustInit(repo_migrations.Init)
|
||||||
eventsource.GetManager().Init()
|
eventsource.GetManager().Init()
|
||||||
|
|
||||||
mustInitCtx(ctx, syncAppPathForGit)
|
mustInitCtx(ctx, syncAppConfForGit)
|
||||||
|
|
||||||
mustInit(ssh.Init)
|
mustInit(ssh.Init)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue