diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-06-21 10:31:40 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-21 10:31:40 +0800 |
commit | df5cf5ddbd9099a121d5074a0b2a710fd71309fd (patch) | |
tree | 61844c68b8c38a2d24a90fc62c75aa0ef8522005 /cmd | |
parent | 831db53c214f81e5eaf055716a42865007cb8123 (diff) | |
download | gitea-df5cf5ddbd9099a121d5074a0b2a710fd71309fd.tar.gz gitea-df5cf5ddbd9099a121d5074a0b2a710fd71309fd.zip |
Avoid polluting config file when "save" (#25395)
That's a longstanding INI package problem: the "MustXxx" calls change
the option values, and the following "Save" will save a lot of garbage
options into the user's config file.
Ideally we should refactor the INI package to a clear solution, but it's
a huge work.
A clear workaround is what this PR does: when "Save", load a clear INI
instance and save it.
Partially fix #25377, the "install" page needs more fine tunes.
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/web.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/cmd/web.go b/cmd/web.go index 3a46b90911..115024e8b4 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -217,9 +217,15 @@ func setPort(port string) error { defaultLocalURL += ":" + setting.HTTPPort + "/" // Save LOCAL_ROOT_URL if port changed - setting.CfgProvider.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL) - if err := setting.CfgProvider.Save(); err != nil { - return fmt.Errorf("Failed to save config file: %v", err) + rootCfg := setting.CfgProvider + saveCfg, err := rootCfg.PrepareSaving() + if err != nil { + return fmt.Errorf("failed to save config file: %v", err) + } + rootCfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL) + saveCfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL) + if err = saveCfg.Save(); err != nil { + return fmt.Errorf("failed to save config file: %v", err) } } return nil |