Skip to content

Commit de49ada

Browse files
Merge branch 'master' into slight-performance-improvement-for-last-commit-cache
2 parents 59a4a87 + fda2e45 commit de49ada

File tree

17 files changed

+195
-66
lines changed

17 files changed

+195
-66
lines changed

custom/conf/app.example.ini

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,6 +1145,14 @@ RUN_AT_START = false
11451145
NO_SUCCESS_NOTICE = false
11461146
SCHEDULE = @every 72h
11471147

1148+
; Delete all old actions from database
1149+
[cron.delete_old_actions]
1150+
ENABLED = false
1151+
RUN_AT_START = false
1152+
NO_SUCCESS_NOTICE = false
1153+
SCHEDULE = @every 168h
1154+
OLDER_THAN = 8760h
1155+
11481156
[git]
11491157
; The path of git executable. If empty, Gitea searches through the PATH environment.
11501158
PATH =

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,13 @@ NB: You must have `DISABLE_ROUTER_LOG` set to `false` for this option to take ef
786786
- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices.
787787
- `SCHEDULE`: **@every 72h**: Cron syntax for scheduling repository archive cleanup, e.g. `@every 1h`.
788788

789+
#### Cron - Delete all old actions from database ('cron.delete_old_actions')
790+
- `ENABLED`: **false**: Enable service.
791+
- `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED).
792+
- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices.
793+
- `SCHEDULE`: **@every 128h**: Cron syntax for scheduling a work, e.g. `@every 128h`.
794+
- `OLDER_THAN`: **@every 8760h**: any action older than this expression will be deleted from database, suggest using `8760h` (1 year) because that's the max length of heatmap.
795+
789796
## Git (`git`)
790797

791798
- `PATH`: **""**: The path of git executable. If empty, Gitea searches through the PATH environment.

integrations/mssql.ini.tmpl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ PASSWD = {{TEST_MSSQL_PASSWORD}}
1010
SSL_MODE = disable
1111

1212
[indexer]
13-
ISSUE_INDEXER_PATH = integrations/indexers-mssql/issues.bleve
13+
ISSUE_INDEXER_PATH = integrations/gitea-integration-mssql/indexers/issues.bleve
14+
ISSUE_INDEXER_QUEUE_DIR = integrations/gitea-integration-mssql/indexers/issues.queue
1415
REPO_INDEXER_ENABLED = true
15-
REPO_INDEXER_PATH = integrations/indexers-mssql/repos.bleve
16+
REPO_INDEXER_PATH = integrations/gitea-integration-mssql/indexers/repos.bleve
1617

1718
[queue.code_indexer]
1819
TYPE = immediate
@@ -24,8 +25,10 @@ TYPE = immediate
2425
ROOT = {{REPO_TEST_DIR}}integrations/gitea-integration-mssql/gitea-repositories
2526

2627
[repository.local]
27-
LOCAL_COPY_PATH = tmp/local-repo-mssql
28-
LOCAL_WIKI_PATH = tmp/local-wiki-mssql
28+
LOCAL_COPY_PATH = integrations/gitea-integration-mssql/tmp/local-repo
29+
30+
[repository.upload]
31+
TEMP_PATH = integrations/gitea-integration-mssql/tmp/uploads
2932

3033
[repository.signing]
3134
SIGNING_KEY = none
@@ -39,14 +42,14 @@ SSH_LISTEN_HOST = localhost
3942
SSH_PORT = 2201
4043
START_SSH_SERVER = true
4144
LFS_START_SERVER = true
42-
LFS_CONTENT_PATH = integrations/gitea-integration-mssql/data/lfs-mssql
45+
LFS_CONTENT_PATH = integrations/gitea-integration-mssql/data/lfs
4346
OFFLINE_MODE = false
4447
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
4548
APP_DATA_PATH = integrations/gitea-integration-mssql/data
4649
BUILTIN_SSH_SERVER_USER = git
4750

4851
[attachment]
49-
PATH = integrations/gitea-integration-mssql/data
52+
PATH = integrations/gitea-integration-mssql/data/attachments
5053

5154
[mailer]
5255
ENABLED = true

integrations/mysql.ini.tmpl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ SSL_MODE = disable
1212
[indexer]
1313
ISSUE_INDEXER_TYPE = elasticsearch
1414
ISSUE_INDEXER_CONN_STR = http://elastic:changeme@elasticsearch:9200
15-
ISSUE_INDEXER_PATH = integrations/indexers-mysql/issues.bleve
15+
ISSUE_INDEXER_QUEUE_DIR = integrations/gitea-integration-mysql/indexers/issues.queue
1616
REPO_INDEXER_ENABLED = true
17-
REPO_INDEXER_PATH = integrations/indexers-mysql/repos.bleve
17+
REPO_INDEXER_PATH = integrations/gitea-integration-mysql/indexers/repos.bleve
1818

1919
[queue.code_indexer]
2020
TYPE = immediate
@@ -26,8 +26,10 @@ TYPE = immediate
2626
ROOT = {{REPO_TEST_DIR}}integrations/gitea-integration-mysql/gitea-repositories
2727

2828
[repository.local]
29-
LOCAL_COPY_PATH = tmp/local-repo-mysql
30-
LOCAL_WIKI_PATH = tmp/local-wiki-mysql
29+
LOCAL_COPY_PATH = integrations/gitea-integration-mysql/tmp/local-repo
30+
31+
[repository.upload]
32+
TEMP_PATH = integrations/gitea-integration-mysql/tmp/uploads
3133

3234
[repository.signing]
3335
SIGNING_KEY = none

integrations/mysql8.ini.tmpl

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ PASSWD = {{TEST_MYSQL8_PASSWORD}}
1010
SSL_MODE = disable
1111

1212
[indexer]
13-
ISSUE_INDEXER_PATH = integrations/indexers-mysql8/issues.bleve
13+
ISSUE_INDEXER_PATH = integrations/gitea-integration-mysql8/indexers/issues.bleve
14+
ISSUE_INDEXER_QUEUE_DIR = integrations/gitea-integration-mysql8/indexers/issues.queue
1415
REPO_INDEXER_ENABLED = true
15-
REPO_INDEXER_PATH = integrations/indexers-mysql8/repos.bleve
16+
REPO_INDEXER_PATH = integrations/gitea-integration-mysql8/indexers/repos.bleve
1617

1718
[queue.code_indexer]
1819
TYPE = immediate
@@ -24,8 +25,10 @@ TYPE = immediate
2425
ROOT = {{REPO_TEST_DIR}}integrations/gitea-integration-mysql8/gitea-repositories
2526

2627
[repository.local]
27-
LOCAL_COPY_PATH = tmp/local-repo-mysql8
28-
LOCAL_WIKI_PATH = tmp/local-wiki-mysql8
28+
LOCAL_COPY_PATH = integrations/gitea-integration-mysql8/tmp/local-repo
29+
30+
[repository.upload]
31+
TEMP_PATH = integrations/gitea-integration-mysql8/tmp/uploads
2932

3033
[repository.signing]
3134
SIGNING_KEY = none
@@ -39,12 +42,15 @@ SSH_LISTEN_HOST = localhost
3942
SSH_PORT = 2204
4043
START_SSH_SERVER = true
4144
LFS_START_SERVER = true
42-
LFS_CONTENT_PATH = data/lfs-mysql8
45+
LFS_CONTENT_PATH = integrations/gitea-integration-mysql8/data/lfs
4346
OFFLINE_MODE = false
4447
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
4548
APP_DATA_PATH = integrations/gitea-integration-mysql8/data
4649
BUILTIN_SSH_SERVER_USER = git
4750

51+
[attachment]
52+
PATH = integrations/gitea-integration-mysql8/data/attachments
53+
4854
[mailer]
4955
ENABLED = false
5056

@@ -60,12 +66,14 @@ DEFAULT_ALLOW_CREATE_ORGANIZATION = true
6066
NO_REPLY_ADDRESS = noreply.example.org
6167

6268
[picture]
63-
DISABLE_GRAVATAR = false
64-
ENABLE_FEDERATED_AVATAR = false
69+
DISABLE_GRAVATAR = false
70+
ENABLE_FEDERATED_AVATAR = false
71+
AVATAR_UPLOAD_PATH = integrations/gitea-integration-mysql8/data/avatars
72+
REPOSITORY_AVATAR_UPLOAD_PATH = integrations/gitea-integration-mysql8/data/repo-avatars
6573

6674
[session]
6775
PROVIDER = file
68-
PROVIDER_CONFIG = data/sessions-mysql8
76+
PROVIDER_CONFIG = integrations/gitea-integration-mysql8/data/sessions
6977

7078
[log]
7179
MODE = test,file
@@ -80,10 +88,8 @@ COLORIZE = true
8088
[log.file]
8189
LEVEL = Debug
8290

83-
8491
[security]
8592
DISABLE_GIT_HOOKS = false
8693
INSTALL_LOCK = true
8794
SECRET_KEY = 9pCviYTWSb
8895
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ
89-

integrations/pgsql.ini.tmpl

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ SCHEMA = {{TEST_PGSQL_SCHEMA}}
1111
SSL_MODE = disable
1212

1313
[indexer]
14-
ISSUE_INDEXER_PATH = integrations/indexers-pgsql/issues.bleve
14+
ISSUE_INDEXER_PATH = integrations/gitea-integration-pgsql/indexers/issues.bleve
15+
ISSUE_INDEXER_QUEUE_DIR = integrations/gitea-integration-pgsql/indexers/issues.queue
1516
REPO_INDEXER_ENABLED = true
16-
REPO_INDEXER_PATH = integrations/indexers-pgsql/repos.bleve
17+
REPO_INDEXER_PATH = integrations/gitea-integration-pgsql/indexers/repos.bleve
1718

1819
[queue.code_indexer]
1920
TYPE = immediate
@@ -25,8 +26,10 @@ TYPE = immediate
2526
ROOT = {{REPO_TEST_DIR}}integrations/gitea-integration-pgsql/gitea-repositories
2627

2728
[repository.local]
28-
LOCAL_COPY_PATH = tmp/local-repo-pgsql
29-
LOCAL_WIKI_PATH = tmp/local-wiki-pgsql
29+
LOCAL_COPY_PATH = integrations/gitea-integration-pgsql/tmp/local-repo
30+
31+
[repository.upload]
32+
TEMP_PATH = integrations/gitea-integration-pgsql/tmp/uploads
3033

3134
[repository.signing]
3235
SIGNING_KEY = none
@@ -40,14 +43,14 @@ SSH_LISTEN_HOST = localhost
4043
SSH_PORT = 2202
4144
START_SSH_SERVER = true
4245
LFS_START_SERVER = true
43-
LFS_CONTENT_PATH = integrations/gitea-integration-pgsql/data/lfs-pgsql
46+
LFS_CONTENT_PATH = integrations/gitea-integration-pgsql/data/lfs
4447
OFFLINE_MODE = false
4548
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
4649
APP_DATA_PATH = integrations/gitea-integration-pgsql/data
4750
BUILTIN_SSH_SERVER_USER = git
4851

4952
[attachment]
50-
PATH = integrations/gitea-integration-pgsql/data
53+
PATH = integrations/gitea-integration-pgsql/data/attachments
5154

5255
[mailer]
5356
ENABLED = true

integrations/sqlite.ini.tmpl

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@ DB_TYPE = sqlite3
66
PATH = integrations/gitea-integration-sqlite/gitea.db
77

88
[indexer]
9-
ISSUE_INDEXER_PATH = integrations/indexers-sqlite/issues.bleve
9+
ISSUE_INDEXER_PATH = integrations/gitea-integration-sqlite/indexers/issues.bleve
10+
ISSUE_INDEXER_QUEUE_DIR = integrations/gitea-integration-sqlite/indexers/issues.queue
1011
REPO_INDEXER_ENABLED = true
11-
REPO_INDEXER_PATH = integrations/indexers-sqlite/repos.bleve
12+
REPO_INDEXER_PATH = integrations/gitea-integration-sqlite/indexers/repos.bleve
1213

1314
[queue.code_indexer]
1415
TYPE = immediate
@@ -20,8 +21,10 @@ TYPE = immediate
2021
ROOT = {{REPO_TEST_DIR}}integrations/gitea-integration-sqlite/gitea-repositories
2122

2223
[repository.local]
23-
LOCAL_COPY_PATH = tmp/local-repo-sqlite
24-
LOCAL_WIKI_PATH = tmp/local-wiki-sqlite
24+
LOCAL_COPY_PATH = integrations/gitea-integration-sqlite/tmp/local-repo
25+
26+
[repository.upload]
27+
TEMP_PATH = integrations/gitea-integration-sqlite/tmp/uploads
2528

2629
[repository.signing]
2730
SIGNING_KEY = none
@@ -35,15 +38,15 @@ SSH_LISTEN_HOST = localhost
3538
SSH_PORT = 2203
3639
START_SSH_SERVER = true
3740
LFS_START_SERVER = true
38-
LFS_CONTENT_PATH = integrations/gitea-integration-sqlite/data
41+
LFS_CONTENT_PATH = integrations/gitea-integration-sqlite/data/lfs
3942
OFFLINE_MODE = false
4043
LFS_JWT_SECRET = Tv_MjmZuHqpIY6GFl12ebgkRAMt4RlWt0v4EHKSXO0w
4144
APP_DATA_PATH = integrations/gitea-integration-sqlite/data
4245
ENABLE_GZIP = true
4346
BUILTIN_SSH_SERVER_USER = git
4447

4548
[attachment]
46-
PATH = integrations/gitea-integration-sqlite/data
49+
PATH = integrations/gitea-integration-sqlite/data/attachments
4750

4851
[mailer]
4952
ENABLED = true
@@ -67,7 +70,6 @@ ENABLE_FEDERATED_AVATAR = false
6770
AVATAR_UPLOAD_PATH = integrations/gitea-integration-sqlite/data/avatars
6871
REPOSITORY_AVATAR_UPLOAD_PATH = integrations/gitea-integration-sqlite/data/repo-avatars
6972

70-
7173
[session]
7274
PROVIDER = file
7375
PROVIDER_CONFIG = integrations/gitea-integration-sqlite/data/sessions

models/action.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,13 @@ func activityQueryCondition(opts GetFeedsOptions) (builder.Cond, error) {
395395

396396
return cond, nil
397397
}
398+
399+
// DeleteOldActions deletes all old actions from database.
400+
func DeleteOldActions(olderThan time.Duration) (err error) {
401+
if olderThan <= 0 {
402+
return nil
403+
}
404+
405+
_, err = x.Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Action{})
406+
return
407+
}

modules/convert/user.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,16 @@ func ToUserWithAccessMode(user *models.User, accessMode models.AccessMode) *api.
3838
// signed shall only be set if requester is logged in. authed shall only be set if user is site admin or user himself
3939
func toUser(user *models.User, signed, authed bool) *api.User {
4040
result := &api.User{
41-
ID: user.ID,
42-
UserName: user.Name,
43-
FullName: markup.Sanitize(user.FullName),
44-
Email: user.GetEmail(),
45-
AvatarURL: user.AvatarLink(),
46-
Created: user.CreatedUnix.AsTime(),
47-
Restricted: user.IsRestricted,
41+
ID: user.ID,
42+
UserName: user.Name,
43+
FullName: markup.Sanitize(user.FullName),
44+
Email: user.GetEmail(),
45+
AvatarURL: user.AvatarLink(),
46+
Created: user.CreatedUnix.AsTime(),
47+
Restricted: user.IsRestricted,
48+
Location: user.Location,
49+
Website: user.Website,
50+
Description: user.Description,
4851
}
4952
// hide primary email if API caller is anonymous or user keep email private
5053
if signed && (!user.KeepEmailPrivate || authed) {

modules/cron/tasks_extended.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,20 @@ func registerRemoveRandomAvatars() {
117117
})
118118
}
119119

120+
func registerDeleteOldActions() {
121+
RegisterTaskFatal("delete_old_actions", &OlderThanConfig{
122+
BaseConfig: BaseConfig{
123+
Enabled: false,
124+
RunAtStart: false,
125+
Schedule: "@every 168h",
126+
},
127+
OlderThan: 365 * 24 * time.Hour,
128+
}, func(ctx context.Context, _ *models.User, config Config) error {
129+
olderThanConfig := config.(*OlderThanConfig)
130+
return models.DeleteOldActions(olderThanConfig.OlderThan)
131+
})
132+
}
133+
120134
func initExtendedTasks() {
121135
registerDeleteInactiveUsers()
122136
registerDeleteRepositoryArchives()
@@ -127,4 +141,5 @@ func initExtendedTasks() {
127141
registerReinitMissingRepositories()
128142
registerDeleteMissingRepositories()
129143
registerRemoveRandomAvatars()
144+
registerDeleteOldActions()
130145
}

modules/structs/user.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ type User struct {
3333
Created time.Time `json:"created,omitempty"`
3434
// Is user restricted
3535
Restricted bool `json:"restricted"`
36+
// the user's location
37+
Location string `json:"location"`
38+
// the user's website
39+
Website string `json:"website"`
40+
// the user's biography
41+
Description string `json:"bio"`
3642
}
3743

3844
// MarshalJSON implements the json.Marshaler interface for User, adding field(s) for backward compatibility

options/locale/locale_de-DE.ini

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,7 @@ repositories=Repositories
420420
activity=Öffentliche Aktivität
421421
followers=Follower
422422
starred=Favoriten
423+
watched=Beobachtete Repositories
423424
projects=Projekte
424425
following=Folge ich
425426
follow=Folgen
@@ -725,6 +726,10 @@ mirror_address=Klonen via URL
725726
mirror_address_desc=Gib alle erforderlichen Anmeldedaten im Abschnitt "Autorisierung klonen" ein.
726727
mirror_address_url_invalid=Die angegebene URL ist ungültig. Achte darauf, alle URL-Komponenten korrekt zu maskieren.
727728
mirror_address_protocol_invalid=Die angegebene URL ist ungültig. Nur Pfade beginnend mit http(s):// oder git:// können gespiegelt werden.
729+
mirror_lfs=Großdatei-Speicher (LFS)
730+
mirror_lfs_desc=Mirroring von LFS-Dateien aktivieren.
731+
mirror_lfs_endpoint=LFS-Endpunkt
732+
mirror_lfs_endpoint_desc=Sync wird versuchen, die Klon-URL zu verwenden, um <a target="_blank" rel="noopener noreferrer" href="%s">den LFS-Server zu bestimmen</a>. Du kannst auch einen eigenen Endpunkt angeben, wenn die LFS-Dateien woanders gespeichert werden.
728733
mirror_last_synced=Zuletzt synchronisiert
729734
watchers=Beobachter
730735
stargazers=Favorisiert von
@@ -783,6 +788,11 @@ migrate_options=Migrationsoptionen
783788
migrate_service=Migrationsdienst
784789
migrate_options_mirror_helper=Dieses Repository wird ein <span class="text blue">Mirror</span> sein
785790
migrate_options_mirror_disabled=Dein Administrator hat neue Mirrors deaktiviert.
791+
migrate_options_lfs=LFS-Dateien migrieren
792+
migrate_options_lfs_endpoint.label=LFS-Endpunkt
793+
migrate_options_lfs_endpoint.description=Migration wird versuchen, über den entfernten Git-Server <a target="_blank" rel="noopener noreferrer" href="%s">den LFS-Server zu bestimmen</a>. Du kannst auch einen eigenen Endpunkt angeben, wenn die LFS-Dateien woanders gespeichert werden.
794+
migrate_options_lfs_endpoint.description.local=Ein lokaler Serverpfad wird ebenfalls unterstützt.
795+
migrate_options_lfs_endpoint.placeholder=Leer lassen, um aus der Klon-URL abzuleiten
786796
migrate_items=Migrationselemente
787797
migrate_items_wiki=Wiki
788798
migrate_items_milestones=Meilensteine
@@ -799,6 +809,7 @@ migrate.permission_denied=Du hast keine Berechtigung zum Importieren lokaler Rep
799809
migrate.permission_denied_blocked=Du darfst nicht von geblockten Hosts importieren.
800810
migrate.permission_denied_private_ip=Du darfst nicht von privaten IP-Addressen importieren.
801811
migrate.invalid_local_path=Der lokale Pfad ist ungültig, existiert nicht oder ist kein Ordner.
812+
migrate.invalid_lfs_endpoint=Ungültiger LFS Endpunkt.
802813
migrate.failed=Fehler bei der Migration: %v
803814
migrate.migrate_items_options=Zugangs-Token wird benötigt, um zusätzliche Elemente zu migrieren
804815
migrated_from=Migriert von <a href="%[1]s">%[2]s</a>
@@ -1112,6 +1123,8 @@ issues.context.edit=Bearbeiten
11121123
issues.context.delete=Löschen
11131124
issues.no_content=Hier gibt es bis jetzt noch keinen Inhalt.
11141125
issues.close_issue=Schließen
1126+
issues.pull_merged_at=`mergte den Commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> %[4]s in <b>%[3]s</b>`
1127+
issues.manually_pull_merged_at=`mergte den Commit <a class="ui sha" href="%[1]s"><code>%[2]s</code></a> %[4]s manuell in <b>%[3]s</b>`
11151128
issues.close_comment_issue=Kommentieren und schließen
11161129
issues.reopen_issue=Wieder öffnen
11171130
issues.reopen_comment_issue=Kommentieren und wieder öffnen
@@ -1205,6 +1218,7 @@ issues.error_modifying_due_date=Fehler beim Ändern des Fälligkeitsdatums.
12051218
issues.error_removing_due_date=Fehler beim Entfernen des Fälligkeitsdatums.
12061219
issues.push_commit_1=hat %d Commit %s hinzugefügt
12071220
issues.push_commits_n=hat %d Commits %s hinzugefügt
1221+
issues.force_push_codes=`hat %[6]s %[1]s von <a class="ui sha" href="%[3]s"><code>%[2]s</code></a> zu <a class="ui sha" href="%[5]s"><code>%[4]s</code></a> force-gepusht`
12081222
issues.due_date_form=JJJJ-MM-TT
12091223
issues.due_date_form_add=Fälligkeitsdatum hinzufügen
12101224
issues.due_date_form_edit=Bearbeiten

0 commit comments

Comments
 (0)