Skip to content

Commit 22eead1

Browse files
Merge branch 'master' into bucket
2 parents 58acbc8 + e3115cc commit 22eead1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+466
-385
lines changed

cmd/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func initDB() error {
3838

3939
func initDBDisableConsole(disableConsole bool) error {
4040
setting.NewContext()
41-
models.LoadConfigs()
41+
setting.InitDBConfig()
4242

4343
setting.NewXORMLogService(disableConsole)
4444
if err := models.SetEngine(); err != nil {

cmd/convert.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ func runConvert(ctx *cli.Context) error {
3131
log.Trace("AppWorkPath: %s", setting.AppWorkPath)
3232
log.Trace("Custom path: %s", setting.CustomPath)
3333
log.Trace("Log path: %s", setting.LogRootPath)
34-
models.LoadConfigs()
34+
setting.InitDBConfig()
3535

36-
if models.DbCfg.Type != "mysql" {
36+
if !setting.Database.UseMySQL {
3737
fmt.Println("This command can only be used with a MySQL database")
3838
return nil
3939
}

cmd/dump.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ It can be used for backup and capture Gitea server image to send to maintainer`,
5858
func runDump(ctx *cli.Context) error {
5959
setting.NewContext()
6060
setting.NewServices() // cannot access session settings otherwise
61-
models.LoadConfigs()
6261

6362
err := models.SetEngine()
6463
if err != nil {
@@ -104,8 +103,8 @@ func runDump(ctx *cli.Context) error {
104103
}
105104

106105
targetDBType := ctx.String("database")
107-
if len(targetDBType) > 0 && targetDBType != models.DbCfg.Type {
108-
log.Printf("Dumping database %s => %s...", models.DbCfg.Type, targetDBType)
106+
if len(targetDBType) > 0 && targetDBType != setting.Database.Type {
107+
log.Printf("Dumping database %s => %s...", setting.Database.Type, targetDBType)
109108
} else {
110109
log.Printf("Dumping database...")
111110
}

cmd/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func runMigrate(ctx *cli.Context) error {
3030
log.Trace("AppWorkPath: %s", setting.AppWorkPath)
3131
log.Trace("Custom path: %s", setting.CustomPath)
3232
log.Trace("Log path: %s", setting.LogRootPath)
33-
models.LoadConfigs()
33+
setting.InitDBConfig()
3434

3535
if err := models.NewEngine(migrations.Migrate); err != nil {
3636
log.Fatal("Failed to initialize ORM engine: %v", err)

contrib/pr/checkout.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,16 @@ func runPR() {
7979
setting.CheckLFSVersion()
8080
//models.LoadConfigs()
8181
/*
82-
models.DbCfg.Type = "sqlite3"
83-
models.DbCfg.Path = ":memory:"
84-
models.DbCfg.Timeout = 500
82+
setting.Database.Type = "sqlite3"
83+
setting.Database.Path = ":memory:"
84+
setting.Database.Timeout = 500
8585
*/
8686
db := setting.Cfg.Section("database")
8787
db.NewKey("DB_TYPE", "sqlite3")
8888
db.NewKey("PATH", ":memory:")
89-
setting.LogSQL = true
90-
models.LoadConfigs()
89+
9190
routers.NewServices()
91+
setting.Database.LogSQL = true
9292
//x, err = xorm.NewEngine("sqlite3", "file::memory:?cache=shared")
9393

9494
var helper testfixtures.Helper = &testfixtures.SQLite{}

custom/conf/app.ini.sample

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,10 @@ LOG_SQL = true
275275
DB_RETRIES = 10
276276
; Backoff time per DB retry (time.Duration)
277277
DB_RETRY_BACKOFF = 3s
278+
; Max idle database connections on connnection pool, default is 0
279+
MAX_IDLE_CONNS = 0
280+
; Database connection max life time, default is 3s
281+
CONN_MAX_LIFETIME = 3s
278282

279283
[indexer]
280284
; Issue indexer type, currently support: bleve or db, default is bleve
@@ -401,6 +405,9 @@ DEFAULT_ALLOW_CREATE_ORGANIZATION = true
401405
; Private is only for member of the organization
402406
; Public is for everyone
403407
DEFAULT_ORG_VISIBILITY = public
408+
; Default value for DefaultOrgMemberVisible
409+
; True will make the membership of the users visible when added to the organisation
410+
DEFAULT_ORG_MEMBER_VISIBLE = false
404411
; Default value for EnableDependencies
405412
; Repositories will use dependencies by default depending on this setting
406413
DEFAULT_ENABLE_DEPENDENCIES = true

docker/root/etc/s6/gitea/setup

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ if [ ! -f ${GITEA_CUSTOM}/conf/app.ini ]; then
3131
ROOT_URL=${ROOT_URL:-""} \
3232
DISABLE_SSH=${DISABLE_SSH:-"false"} \
3333
SSH_PORT=${SSH_PORT:-"22"} \
34+
SSH_LISTEN_PORT=${SSH_LISTEN_PORT:-"${SSH_PORT}"} \
3435
LFS_START_SERVER=${LFS_START_SERVER:-"false"} \
3536
DB_TYPE=${DB_TYPE:-"sqlite3"} \
3637
DB_HOST=${DB_HOST:-"localhost:3306"} \

docker/root/etc/templates/app.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ HTTP_PORT = $HTTP_PORT
1717
ROOT_URL = $ROOT_URL
1818
DISABLE_SSH = $DISABLE_SSH
1919
SSH_PORT = $SSH_PORT
20+
SSH_LISTEN_PORT = $SSH_LISTEN_PORT
2021
LFS_START_SERVER = $LFS_START_SERVER
2122
LFS_CONTENT_PATH = /data/git/lfs
2223

docs/content/doc/advanced/config-cheat-sheet.en-us.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
166166
- `LOG_SQL`: **true**: Log the executed SQL.
167167
- `DB_RETRIES`: **10**: How many ORM init / DB connect attempts allowed.
168168
- `DB_RETRY_BACKOFF`: **3s**: time.Duration to wait before trying another ORM init / DB connect attempt, if failure occured.
169+
- `MAX_IDLE_CONNS` **0**: Max idle database connections on connnection pool, default is 0
170+
- `CONN_MAX_LIFETIME` **3s**: Database connection max lifetime
169171

170172
## Indexer (`indexer`)
171173

@@ -244,6 +246,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
244246
- `SHOW_REGISTRATION_BUTTON`: **! DISABLE\_REGISTRATION**: Show Registration Button
245247
- `AUTO_WATCH_NEW_REPOS`: **true**: Enable this to let all organisation users watch new repos when they are created
246248
- `DEFAULT_ORG_VISIBILITY`: **public**: Set default visibility mode for organisations, either "public", "limited" or "private".
249+
- `DEFAULT_ORG_MEMBER_VISIBLE`: **false** True will make the membership of the users visible when added to the organisation.
247250

248251
## Webhook (`webhook`)
249252

docs/content/doc/advanced/config-cheat-sheet.zh-cn.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ menu:
8282
- `CHARSET`: **utf8**: 仅当数据库为 MySQL 时有效, 可以为 "utf8" 或 "utf8mb4"。注意:如果使用 "utf8mb4",你的 MySQL InnoDB 版本必须在 5.6 以上。
8383
- `PATH`: Tidb 或者 SQLite3 数据文件存放路径。
8484
- `LOG_SQL`: **true**: 显示生成的SQL,默认为真。
85+
- `MAX_IDLE_CONNS` **0**: 最大空闲数据库连接
86+
- `CONN_MAX_LIFETIME` **3s**: 数据库连接最大存活时间
8587

8688
## Indexer (`indexer`)
8789

docs/content/doc/installation/with-docker.en-us.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ You can configure some of Gitea's settings via environment variables:
245245
* `RUN_MODE`: **dev**: For performance and other purposes, change this to `prod` when deployed to a production environment.
246246
* `SSH_DOMAIN`: **localhost**: Domain name of this server, used for the displayed clone URL in Gitea's UI.
247247
* `SSH_PORT`: **22**: SSH port displayed in clone URL.
248+
* `SSH_LISTEN_PORT`: **%(SSH\_PORT)s**: Port for the built-in SSH server.
248249
* `DISABLE_SSH`: **false**: Disable SSH feature when it's not available.
249250
* `HTTP_PORT`: **3000**: HTTP listen port.
250251
* `ROOT_URL`: **""**: Overwrite the automatically generated public URL. This is useful if the internal and the external URL don't match (e.g. in Docker).

integrations/integration_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ func TestMain(m *testing.M) {
5959
routes.RegisterRoutes(mac)
6060

6161
var helper testfixtures.Helper
62-
if setting.UseMySQL {
62+
if setting.Database.UseMySQL {
6363
helper = &testfixtures.MySQL{}
64-
} else if setting.UsePostgreSQL {
64+
} else if setting.Database.UsePostgreSQL {
6565
helper = &testfixtures.PostgreSQL{}
66-
} else if setting.UseSQLite3 {
66+
} else if setting.Database.UseSQLite3 {
6767
helper = &testfixtures.SQLite{}
68-
} else if setting.UseMSSQL {
68+
} else if setting.Database.UseMSSQL {
6969
helper = &testfixtures.SQLServer{}
7070
} else {
7171
fmt.Println("Unsupported RDBMS for integration tests")
@@ -121,27 +121,27 @@ func initIntegrationTest() {
121121
setting.SetCustomPathAndConf("", "", "")
122122
setting.NewContext()
123123
setting.CheckLFSVersion()
124-
models.LoadConfigs()
124+
setting.InitDBConfig()
125125

126126
switch {
127-
case setting.UseMySQL:
127+
case setting.Database.UseMySQL:
128128
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/",
129-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host))
129+
setting.Database.User, setting.Database.Passwd, setting.Database.Host))
130130
defer db.Close()
131131
if err != nil {
132132
log.Fatalf("sql.Open: %v", err)
133133
}
134134
if _, err = db.Exec("CREATE DATABASE IF NOT EXISTS testgitea"); err != nil {
135135
log.Fatalf("db.Exec: %v", err)
136136
}
137-
case setting.UsePostgreSQL:
137+
case setting.Database.UsePostgreSQL:
138138
db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
139-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.SSLMode))
139+
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
140140
defer db.Close()
141141
if err != nil {
142142
log.Fatalf("sql.Open: %v", err)
143143
}
144-
rows, err := db.Query(fmt.Sprintf("SELECT 1 FROM pg_database WHERE datname = '%s'", models.DbCfg.Name))
144+
rows, err := db.Query(fmt.Sprintf("SELECT 1 FROM pg_database WHERE datname = '%s'", setting.Database.Name))
145145
if err != nil {
146146
log.Fatalf("db.Query: %v", err)
147147
}
@@ -153,10 +153,10 @@ func initIntegrationTest() {
153153
if _, err = db.Exec("CREATE DATABASE testgitea"); err != nil {
154154
log.Fatalf("db.Exec: %v", err)
155155
}
156-
case setting.UseMSSQL:
157-
host, port := models.ParseMSSQLHostPort(models.DbCfg.Host)
156+
case setting.Database.UseMSSQL:
157+
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
158158
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
159-
host, port, "master", models.DbCfg.User, models.DbCfg.Passwd))
159+
host, port, "master", setting.Database.User, setting.Database.Passwd))
160160
if err != nil {
161161
log.Fatalf("sql.Open: %v", err)
162162
}

integrations/lfs_getobject_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func storeObjectInRepo(t *testing.T, repositoryID int64, content *[]byte) string
3939
assert.NoError(t, err)
4040
var lfsMetaObject *models.LFSMetaObject
4141

42-
if setting.UsePostgreSQL {
42+
if setting.Database.UsePostgreSQL {
4343
lfsMetaObject = &models.LFSMetaObject{ID: lfsID, Oid: oid, Size: int64(len(*content)), RepositoryID: repositoryID}
4444
} else {
4545
lfsMetaObject = &models.LFSMetaObject{Oid: oid, Size: int64(len(*content)), RepositoryID: repositoryID}

integrations/migration-test/migration_test.go

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func initMigrationTest(t *testing.T) {
5454

5555
setting.NewContext()
5656
setting.CheckLFSVersion()
57-
models.LoadConfigs()
57+
setting.InitDBConfig()
5858
setting.NewLogServices(true)
5959
}
6060

@@ -64,7 +64,7 @@ func availableVersions() ([]string, error) {
6464
return nil, err
6565
}
6666
defer migrationsDir.Close()
67-
versionRE, err := regexp.Compile("gitea-v(?P<version>.+)\\." + regexp.QuoteMeta(models.DbCfg.Type) + "\\.sql.gz")
67+
versionRE, err := regexp.Compile("gitea-v(?P<version>.+)\\." + regexp.QuoteMeta(setting.Database.Type) + "\\.sql.gz")
6868
if err != nil {
6969
return nil, err
7070
}
@@ -85,7 +85,7 @@ func availableVersions() ([]string, error) {
8585
}
8686

8787
func readSQLFromFile(version string) (string, error) {
88-
filename := fmt.Sprintf("integrations/migration-test/gitea-v%s.%s.sql.gz", version, models.DbCfg.Type)
88+
filename := fmt.Sprintf("integrations/migration-test/gitea-v%s.%s.sql.gz", version, setting.Database.Type)
8989

9090
if _, err := os.Stat(filename); os.IsNotExist(err) {
9191
return "", nil
@@ -114,71 +114,71 @@ func restoreOldDB(t *testing.T, version string) bool {
114114
data, err := readSQLFromFile(version)
115115
assert.NoError(t, err)
116116
if len(data) == 0 {
117-
integrations.Printf("No db found to restore for %s version: %s\n", models.DbCfg.Type, version)
117+
integrations.Printf("No db found to restore for %s version: %s\n", setting.Database.Type, version)
118118
return false
119119
}
120120

121121
switch {
122-
case setting.UseSQLite3:
123-
os.Remove(models.DbCfg.Path)
124-
err := os.MkdirAll(path.Dir(models.DbCfg.Path), os.ModePerm)
122+
case setting.Database.UseSQLite3:
123+
os.Remove(setting.Database.Path)
124+
err := os.MkdirAll(path.Dir(setting.Database.Path), os.ModePerm)
125125
assert.NoError(t, err)
126126

127-
db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", models.DbCfg.Path, models.DbCfg.Timeout))
127+
db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", setting.Database.Path, setting.Database.Timeout))
128128
assert.NoError(t, err)
129129
defer db.Close()
130130

131131
_, err = db.Exec(data)
132132
assert.NoError(t, err)
133133
db.Close()
134134

135-
case setting.UseMySQL:
135+
case setting.Database.UseMySQL:
136136
db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/",
137-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host))
137+
setting.Database.User, setting.Database.Passwd, setting.Database.Host))
138138
assert.NoError(t, err)
139139
defer db.Close()
140140

141-
_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", models.DbCfg.Name))
141+
_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", setting.Database.Name))
142142
assert.NoError(t, err)
143143

144-
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", models.DbCfg.Name))
144+
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", setting.Database.Name))
145145
assert.NoError(t, err)
146146

147147
db, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?multiStatements=true",
148-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.Name))
148+
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name))
149149
assert.NoError(t, err)
150150
defer db.Close()
151151

152152
_, err = db.Exec(data)
153153
assert.NoError(t, err)
154154
db.Close()
155155

156-
case setting.UsePostgreSQL:
156+
case setting.Database.UsePostgreSQL:
157157
db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s",
158-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.SSLMode))
158+
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.SSLMode))
159159
assert.NoError(t, err)
160160
defer db.Close()
161161

162-
_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", models.DbCfg.Name))
162+
_, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", setting.Database.Name))
163163
assert.NoError(t, err)
164164

165-
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s", models.DbCfg.Name))
165+
_, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s", setting.Database.Name))
166166
assert.NoError(t, err)
167167
db.Close()
168168

169169
db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s",
170-
models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.Name, models.DbCfg.SSLMode))
170+
setting.Database.User, setting.Database.Passwd, setting.Database.Host, setting.Database.Name, setting.Database.SSLMode))
171171
assert.NoError(t, err)
172172
defer db.Close()
173173

174174
_, err = db.Exec(data)
175175
assert.NoError(t, err)
176176
db.Close()
177177

178-
case setting.UseMSSQL:
179-
host, port := models.ParseMSSQLHostPort(models.DbCfg.Host)
178+
case setting.Database.UseMSSQL:
179+
host, port := setting.ParseMSSQLHostPort(setting.Database.Host)
180180
db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
181-
host, port, "master", models.DbCfg.User, models.DbCfg.Passwd))
181+
host, port, "master", setting.Database.User, setting.Database.Passwd))
182182
assert.NoError(t, err)
183183
defer db.Close()
184184

@@ -191,7 +191,7 @@ func restoreOldDB(t *testing.T, version string) bool {
191191
dbname := statement[5 : len(statement)-1]
192192
db.Close()
193193
db, err = sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;",
194-
host, port, dbname, models.DbCfg.User, models.DbCfg.Passwd))
194+
host, port, dbname, setting.Database.User, setting.Database.Passwd))
195195
assert.NoError(t, err)
196196
defer db.Close()
197197
}
@@ -210,7 +210,7 @@ func wrappedMigrate(x *xorm.Engine) error {
210210

211211
func doMigrationTest(t *testing.T, version string) {
212212
integrations.PrintCurrentTest(t)
213-
integrations.Printf("Performing migration test for %s version: %s\n", models.DbCfg.Type, version)
213+
integrations.Printf("Performing migration test for %s version: %s\n", setting.Database.Type, version)
214214
if !restoreOldDB(t, version) {
215215
return
216216
}
@@ -227,7 +227,7 @@ func doMigrationTest(t *testing.T, version string) {
227227
func TestMigrations(t *testing.T) {
228228
initMigrationTest(t)
229229

230-
dialect := models.DbCfg.Type
230+
dialect := setting.Database.Type
231231
versions, err := availableVersions()
232232
assert.NoError(t, err)
233233

models/convert.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

55
package models
66

7-
import "fmt"
7+
import (
8+
"fmt"
9+
10+
"code.gitea.io/gitea/modules/setting"
11+
)
812

913
// ConvertUtf8ToUtf8mb4 converts database and tables from utf8 to utf8mb4 if it's mysql
1014
func ConvertUtf8ToUtf8mb4() error {
11-
_, err := x.Exec(fmt.Sprintf("ALTER DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", DbCfg.Name))
15+
_, err := x.Exec(fmt.Sprintf("ALTER DATABASE `%s` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci", setting.Database.Name))
1216
if err != nil {
1317
return err
1418
}

0 commit comments

Comments
 (0)