summaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-06-21 10:31:40 +0800
committerGitHub <noreply@github.com>2023-06-21 10:31:40 +0800
commitdf5cf5ddbd9099a121d5074a0b2a710fd71309fd (patch)
tree61844c68b8c38a2d24a90fc62c75aa0ef8522005 /cmd
parent831db53c214f81e5eaf055716a42865007cb8123 (diff)
downloadgitea-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.go12
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