Skip to content

Commit f152eb2

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: Revert unrelated changes for SMTP auth (go-gitea#21767) Init git module before database migration (go-gitea#21764) Extract updateSession function to reduce repetition (go-gitea#21735) Fix dashboard ignored system setting cache (go-gitea#21621) Add .dockerignore (go-gitea#21753)
2 parents 9dd01d2 + fb704f6 commit f152eb2

24 files changed

+386
-297
lines changed

.dockerignore

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Compiled Object files, Static and Dynamic libs (Shared Objects)
2+
*.o
3+
*.a
4+
*.so
5+
6+
# Folders
7+
_obj
8+
_test
9+
10+
# IntelliJ
11+
.idea
12+
# Goland's output filename can not be set manually
13+
/go_build_*
14+
15+
# MS VSCode
16+
.vscode
17+
__debug_bin
18+
19+
# Architecture specific extensions/prefixes
20+
*.[568vq]
21+
[568vq].out
22+
23+
*.cgo1.go
24+
*.cgo2.c
25+
_cgo_defun.c
26+
_cgo_gotypes.go
27+
_cgo_export.*
28+
29+
_testmain.go
30+
31+
*.exe
32+
*.test
33+
*.prof
34+
35+
*coverage.out
36+
coverage.all
37+
cpu.out
38+
39+
/modules/migration/bindata.go
40+
/modules/migration/bindata.go.hash
41+
/modules/options/bindata.go
42+
/modules/options/bindata.go.hash
43+
/modules/public/bindata.go
44+
/modules/public/bindata.go.hash
45+
/modules/templates/bindata.go
46+
/modules/templates/bindata.go.hash
47+
48+
*.db
49+
*.log
50+
51+
/gitea
52+
/gitea-vet
53+
/debug
54+
/integrations.test
55+
56+
/bin
57+
/dist
58+
/custom/*
59+
!/custom/conf
60+
/custom/conf/*
61+
!/custom/conf/app.example.ini
62+
/data
63+
/indexers
64+
/log
65+
/public/img/avatar
66+
/tests/integration/gitea-integration-*
67+
/tests/integration/indexers-*
68+
/tests/e2e/gitea-e2e-*
69+
/tests/e2e/indexers-*
70+
/tests/e2e/reports
71+
/tests/e2e/test-artifacts
72+
/tests/e2e/test-snapshots
73+
/tests/*.ini
74+
/node_modules
75+
/yarn.lock
76+
/yarn-error.log
77+
/npm-debug.log*
78+
/public/js
79+
/public/serviceworker.js
80+
/public/css
81+
/public/fonts
82+
/public/img/webpack
83+
/vendor
84+
/web_src/fomantic/node_modules
85+
/web_src/fomantic/build/*
86+
!/web_src/fomantic/build/semantic.js
87+
!/web_src/fomantic/build/semantic.css
88+
!/web_src/fomantic/build/themes
89+
/web_src/fomantic/build/themes/*
90+
!/web_src/fomantic/build/themes/default
91+
/web_src/fomantic/build/themes/default/assets/*
92+
!/web_src/fomantic/build/themes/default/assets/fonts
93+
/web_src/fomantic/build/themes/default/assets/fonts/*
94+
!/web_src/fomantic/build/themes/default/assets/fonts/icons.woff2
95+
!/web_src/fomantic/build/themes/default/assets/fonts/outline-icons.woff2
96+
/VERSION
97+
/.air
98+
/.go-licenses
99+
100+
# Snapcraft
101+
snap/.snapcraft/
102+
parts/
103+
stage/
104+
prime/
105+
*.snap
106+
*.snap-build
107+
*_source.tar.bz2
108+
.DS_Store
109+
110+
# Make evidence files
111+
/.make_evidence
112+
113+
# Manpage
114+
/man

cmd/admin.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -413,9 +413,9 @@ var (
413413
Usage: "SMTP Authentication Type (PLAIN/LOGIN/CRAM-MD5) default PLAIN",
414414
},
415415
cli.StringFlag{
416-
Name: "addr",
416+
Name: "host",
417417
Value: "",
418-
Usage: "SMTP Addr",
418+
Usage: "SMTP Host",
419419
},
420420
cli.IntFlag{
421421
Name: "port",
@@ -955,8 +955,8 @@ func parseSMTPConfig(c *cli.Context, conf *smtp.Source) error {
955955
}
956956
conf.Auth = c.String("auth-type")
957957
}
958-
if c.IsSet("addr") {
959-
conf.Addr = c.String("addr")
958+
if c.IsSet("host") {
959+
conf.Host = c.String("host")
960960
}
961961
if c.IsSet("port") {
962962
conf.Port = c.Int("port")

models/avatars/avatar.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,11 @@ func generateEmailAvatarLink(email string, size int, final bool) string {
150150
return DefaultAvatarLink()
151151
}
152152

153-
enableFederatedAvatar, _ := system_model.GetSetting(system_model.KeyPictureEnableFederatedAvatar)
153+
enableFederatedAvatarSetting, _ := system_model.GetSetting(system_model.KeyPictureEnableFederatedAvatar)
154+
enableFederatedAvatar := enableFederatedAvatarSetting.GetValueBool()
154155

155156
var err error
156-
if enableFederatedAvatar != nil && enableFederatedAvatar.GetValueBool() && system_model.LibravatarService != nil {
157+
if enableFederatedAvatar && system_model.LibravatarService != nil {
157158
emailHash := saveEmailHash(email)
158159
if final {
159160
// for final link, we can spend more time on slow external query
@@ -171,8 +172,10 @@ func generateEmailAvatarLink(email string, size int, final bool) string {
171172
return urlStr
172173
}
173174

174-
disableGravatar, _ := system_model.GetSetting(system_model.KeyPictureDisableGravatar)
175-
if disableGravatar != nil && !disableGravatar.GetValueBool() {
175+
disableGravatarSetting, _ := system_model.GetSetting(system_model.KeyPictureDisableGravatar)
176+
177+
disableGravatar := disableGravatarSetting.GetValueBool()
178+
if !disableGravatar {
176179
// copy GravatarSourceURL, because we will modify its Path.
177180
avatarURLCopy := *system_model.GravatarSourceURL
178181
avatarURLCopy.Path = path.Join(avatarURLCopy.Path, HashEmail(email))

models/migrations/migrations.go

+9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package migrations
77

88
import (
9+
"context"
910
"fmt"
1011
"os"
1112

@@ -23,6 +24,7 @@ import (
2324
"code.gitea.io/gitea/models/migrations/v1_7"
2425
"code.gitea.io/gitea/models/migrations/v1_8"
2526
"code.gitea.io/gitea/models/migrations/v1_9"
27+
"code.gitea.io/gitea/modules/git"
2628
"code.gitea.io/gitea/modules/log"
2729
"code.gitea.io/gitea/modules/setting"
2830

@@ -527,6 +529,13 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
527529
return nil
528530
}
529531

532+
// Some migration tasks depend on the git command
533+
if git.DefaultContext == nil {
534+
if err = git.InitSimple(context.Background()); err != nil {
535+
return err
536+
}
537+
}
538+
530539
// Migrate
531540
for i, m := range migrations[v-minDBVersion:] {
532541
log.Info("Migration[%d]: %s", v+int64(i), m.Description())

models/system/setting.go

+34-6
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"strings"
1313

1414
"code.gitea.io/gitea/models/db"
15+
"code.gitea.io/gitea/modules/cache"
1516
"code.gitea.io/gitea/modules/setting"
1617
"code.gitea.io/gitea/modules/timeutil"
1718

@@ -35,6 +36,10 @@ func (s *Setting) TableName() string {
3536
}
3637

3738
func (s *Setting) GetValueBool() bool {
39+
if s == nil {
40+
return false
41+
}
42+
3843
b, _ := strconv.ParseBool(s.SettingValue)
3944
return b
4045
}
@@ -75,8 +80,8 @@ func IsErrDataExpired(err error) bool {
7580
return ok
7681
}
7782

78-
// GetSetting returns specific setting
79-
func GetSetting(key string) (*Setting, error) {
83+
// GetSettingNoCache returns specific setting without using the cache
84+
func GetSettingNoCache(key string) (*Setting, error) {
8085
v, err := GetSettings([]string{key})
8186
if err != nil {
8287
return nil, err
@@ -87,6 +92,24 @@ func GetSetting(key string) (*Setting, error) {
8792
return v[key], nil
8893
}
8994

95+
// GetSetting returns the setting value via the key
96+
func GetSetting(key string) (*Setting, error) {
97+
return cache.Get(genSettingCacheKey(key), func() (*Setting, error) {
98+
res, err := GetSettingNoCache(key)
99+
if err != nil {
100+
return nil, err
101+
}
102+
return res, nil
103+
})
104+
}
105+
106+
// GetSettingBool return bool value of setting,
107+
// none existing keys and errors are ignored and result in false
108+
func GetSettingBool(key string) bool {
109+
s, _ := GetSetting(key)
110+
return s.GetValueBool()
111+
}
112+
90113
// GetSettings returns specific settings
91114
func GetSettings(keys []string) (map[string]*Setting, error) {
92115
for i := 0; i < len(keys); i++ {
@@ -139,12 +162,13 @@ func GetAllSettings() (AllSettings, error) {
139162

140163
// DeleteSetting deletes a specific setting for a user
141164
func DeleteSetting(setting *Setting) error {
165+
cache.Remove(genSettingCacheKey(setting.SettingKey))
142166
_, err := db.GetEngine(db.DefaultContext).Delete(setting)
143167
return err
144168
}
145169

146170
func SetSettingNoVersion(key, value string) error {
147-
s, err := GetSetting(key)
171+
s, err := GetSettingNoCache(key)
148172
if IsErrSettingIsNotExist(err) {
149173
return SetSetting(&Setting{
150174
SettingKey: key,
@@ -160,9 +184,13 @@ func SetSettingNoVersion(key, value string) error {
160184

161185
// SetSetting updates a users' setting for a specific key
162186
func SetSetting(setting *Setting) error {
163-
if err := upsertSettingValue(strings.ToLower(setting.SettingKey), setting.SettingValue, setting.Version); err != nil {
187+
_, err := cache.Set(genSettingCacheKey(setting.SettingKey), func() (*Setting, error) {
188+
return setting, upsertSettingValue(strings.ToLower(setting.SettingKey), setting.SettingValue, setting.Version)
189+
})
190+
if err != nil {
164191
return err
165192
}
193+
166194
setting.Version++
167195
return nil
168196
}
@@ -213,7 +241,7 @@ var (
213241

214242
func Init() error {
215243
var disableGravatar bool
216-
disableGravatarSetting, err := GetSetting(KeyPictureDisableGravatar)
244+
disableGravatarSetting, err := GetSettingNoCache(KeyPictureDisableGravatar)
217245
if IsErrSettingIsNotExist(err) {
218246
disableGravatar = setting.GetDefaultDisableGravatar()
219247
disableGravatarSetting = &Setting{SettingValue: strconv.FormatBool(disableGravatar)}
@@ -224,7 +252,7 @@ func Init() error {
224252
}
225253

226254
var enableFederatedAvatar bool
227-
enableFederatedAvatarSetting, err := GetSetting(KeyPictureEnableFederatedAvatar)
255+
enableFederatedAvatarSetting, err := GetSettingNoCache(KeyPictureEnableFederatedAvatar)
228256
if IsErrSettingIsNotExist(err) {
229257
enableFederatedAvatar = setting.GetDefaultEnableFederatedAvatar(disableGravatar)
230258
enableFederatedAvatarSetting = &Setting{SettingValue: strconv.FormatBool(enableFederatedAvatar)}

models/system/setting_key.go

+5
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,8 @@ const (
99
KeyPictureDisableGravatar = "picture.disable_gravatar"
1010
KeyPictureEnableFederatedAvatar = "picture.enable_federated_avatar"
1111
)
12+
13+
// genSettingCacheKey returns the cache key for some configuration
14+
func genSettingCacheKey(key string) string {
15+
return "system.setting." + key
16+
}

models/user/avatar.go

+2-4
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,9 @@ func (u *User) AvatarLinkWithSize(size int) string {
6868
useLocalAvatar := false
6969
autoGenerateAvatar := false
7070

71-
var disableGravatar bool
7271
disableGravatarSetting, _ := system_model.GetSetting(system_model.KeyPictureDisableGravatar)
73-
if disableGravatarSetting != nil {
74-
disableGravatar = disableGravatarSetting.GetValueBool()
75-
}
72+
73+
disableGravatar := disableGravatarSetting.GetValueBool()
7674

7775
switch {
7876
case u.UseCustomAvatar:

0 commit comments

Comments
 (0)