summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2023-07-26 11:53:37 +0800
committerGitHub <noreply@github.com>2023-07-26 03:53:37 +0000
commit5dc37ef97a30628027a723ee944225a33a6511f8 (patch)
tree20df347a0ce40be57fecb5a51e55a4d2dc1822c7
parent915cdf8f87380bb6ea9cb518837726eb85c89fc7 (diff)
downloadgitea-5dc37ef97a30628027a723ee944225a33a6511f8.tar.gz
gitea-5dc37ef97a30628027a723ee944225a33a6511f8.zip
Display deprecated warning in admin panel pages as well as in the log file (#26094)
This PR includes #26007 's changes but have a UI to prompt administrator about the deprecated settings as well as the log or console warning. Then users will have enough time to notice the problem and don't have surprise like before. <img width="1293" alt="图片" src="https://github.com/go-gitea/gitea/assets/81045/c33355f0-1ea7-4fb3-ad43-cd23cd15391d"> --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--modules/setting/config_provider.go13
-rw-r--r--modules/setting/lfs.go9
-rw-r--r--modules/setting/lfs_test.go24
-rw-r--r--routers/web/admin/admin.go11
-rw-r--r--routers/web/admin/config.go2
-rw-r--r--templates/admin/layout_head.tmpl4
-rw-r--r--web_src/css/admin.css1
7 files changed, 55 insertions, 9 deletions
diff --git a/modules/setting/config_provider.go b/modules/setting/config_provider.go
index 86712792a7..d00164df9e 100644
--- a/modules/setting/config_provider.go
+++ b/modules/setting/config_provider.go
@@ -316,15 +316,14 @@ func mustMapSetting(rootCfg ConfigProvider, sectionName string, setting any) {
}
}
-func deprecatedSetting(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
- if rootCfg.Section(oldSection).HasKey(oldKey) {
- log.Error("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)
- }
-}
+// DeprecatedWarnings contains the warning message for various deprecations, including: setting option, file/folder, etc
+var DeprecatedWarnings []string
-func deprecatedSettingFatal(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
+func deprecatedSetting(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
if rootCfg.Section(oldSection).HasKey(oldKey) {
- log.Fatal("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s. Shutting down", oldSection, oldKey, newSection, newKey, version)
+ msg := fmt.Sprintf("Deprecated config option `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)
+ log.Error("%v", msg)
+ DeprecatedWarnings = append(DeprecatedWarnings, msg)
}
}
diff --git a/modules/setting/lfs.go b/modules/setting/lfs.go
index 0e0f7b74e3..21a46a8cce 100644
--- a/modules/setting/lfs.go
+++ b/modules/setting/lfs.go
@@ -34,7 +34,14 @@ func loadLFSFrom(rootCfg ConfigProvider) error {
// Specifically default PATH to LFS_CONTENT_PATH
// DEPRECATED should not be removed because users maybe upgrade from lower version to the latest version
// if these are removed, the warning will not be shown
- deprecatedSettingFatal(rootCfg, "server", "LFS_CONTENT_PATH", "lfs", "PATH", "v1.19.0")
+ deprecatedSetting(rootCfg, "server", "LFS_CONTENT_PATH", "lfs", "PATH", "v1.19.0")
+
+ if val := sec.Key("LFS_CONTENT_PATH").String(); val != "" {
+ if lfsSec == nil {
+ lfsSec = rootCfg.Section("lfs")
+ }
+ lfsSec.Key("PATH").MustString(val)
+ }
var err error
LFS.Storage, err = getStorage(rootCfg, "lfs", "", lfsSec)
diff --git a/modules/setting/lfs_test.go b/modules/setting/lfs_test.go
index 3313cae0eb..10c54fec0a 100644
--- a/modules/setting/lfs_test.go
+++ b/modules/setting/lfs_test.go
@@ -22,6 +22,30 @@ func Test_getStorageInheritNameSectionTypeForLFS(t *testing.T) {
assert.EqualValues(t, "lfs/", LFS.Storage.MinioConfig.BasePath)
iniStr = `
+[server]
+LFS_CONTENT_PATH = path_ignored
+[lfs]
+PATH = path_used
+`
+ cfg, err = NewConfigProviderFromData(iniStr)
+ assert.NoError(t, err)
+ assert.NoError(t, loadLFSFrom(cfg))
+
+ assert.EqualValues(t, "local", LFS.Storage.Type)
+ assert.Contains(t, LFS.Storage.Path, "path_used")
+
+ iniStr = `
+[server]
+LFS_CONTENT_PATH = deprecatedpath
+`
+ cfg, err = NewConfigProviderFromData(iniStr)
+ assert.NoError(t, err)
+ assert.NoError(t, loadLFSFrom(cfg))
+
+ assert.EqualValues(t, "local", LFS.Storage.Type)
+ assert.Contains(t, LFS.Storage.Path, "deprecatedpath")
+
+ iniStr = `
[storage.lfs]
STORAGE_TYPE = minio
`
diff --git a/routers/web/admin/admin.go b/routers/web/admin/admin.go
index 225a8c6705..fe3e1d2206 100644
--- a/routers/web/admin/admin.go
+++ b/routers/web/admin/admin.go
@@ -113,6 +113,16 @@ func updateSystemStatus() {
sysStatus.NumGC = m.NumGC
}
+func prepareDeprecatedWarningsAlert(ctx *context.Context) {
+ if len(setting.DeprecatedWarnings) > 0 {
+ content := setting.DeprecatedWarnings[0]
+ if len(setting.DeprecatedWarnings) > 1 {
+ content += fmt.Sprintf(" (and %d more)", len(setting.DeprecatedWarnings)-1)
+ }
+ ctx.Flash.Error(content, true)
+ }
+}
+
// Dashboard show admin panel dashboard
func Dashboard(ctx *context.Context) {
ctx.Data["Title"] = ctx.Tr("admin.dashboard")
@@ -123,6 +133,7 @@ func Dashboard(ctx *context.Context) {
updateSystemStatus()
ctx.Data["SysStatus"] = sysStatus
ctx.Data["SSH"] = setting.SSH
+ prepareDeprecatedWarningsAlert(ctx)
ctx.HTML(http.StatusOK, tplDashboard)
}
diff --git a/routers/web/admin/config.go b/routers/web/admin/config.go
index b7d9976815..ba0d862645 100644
--- a/routers/web/admin/config.go
+++ b/routers/web/admin/config.go
@@ -171,6 +171,8 @@ func Config(ctx *context.Context) {
ctx.Data["Loggers"] = log.GetManager().DumpLoggers()
+ prepareDeprecatedWarningsAlert(ctx)
+
ctx.HTML(http.StatusOK, tplConfig)
}
diff --git a/templates/admin/layout_head.tmpl b/templates/admin/layout_head.tmpl
index 71410ea36b..0974c5fbed 100644
--- a/templates/admin/layout_head.tmpl
+++ b/templates/admin/layout_head.tmpl
@@ -1,9 +1,11 @@
{{template "base/head" .ctxData}}
<div role="main" aria-label="{{.ctxData.Title}}" class="page-content {{.pageClass}}">
+ <div class="ui container">
+ {{template "base/alert" .ctxData}}
+ </div>
<div class="ui container admin-container">
{{template "admin/navbar" .ctxData}}
<div class="admin-main">
- {{template "base/alert" .ctxData}}
{{/* block: admin-setting-content */}}
{{if false}}{{/* to make html structure "likely" complete to prevent IDE warnings */}}
diff --git a/web_src/css/admin.css b/web_src/css/admin.css
index ec3cfbf22a..f590a04180 100644
--- a/web_src/css/admin.css
+++ b/web_src/css/admin.css
@@ -1,4 +1,5 @@
.admin-container {
+ margin-top: 15px;
display: flex !important;
gap: 16px;
}