Skip to content

Commit 6332a5e

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: Refactor render system (go-gitea#32492) Fix nil panic if repo doesn't exist (go-gitea#32501) Bump CI,Flake and Snap to Node 22 (go-gitea#32487) Perf: add extra index to notification table (go-gitea#32395) Fix LFS route mock, realm, middleware names (go-gitea#32488)
2 parents 16d7ba9 + 3f9c3e7 commit 6332a5e

Some content is hidden

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

55 files changed

+488
-375
lines changed

.github/workflows/pull-compliance.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
python-version: "3.12"
3838
- uses: actions/setup-node@v4
3939
with:
40-
node-version: 20
40+
node-version: 22
4141
cache: npm
4242
cache-dependency-path: package-lock.json
4343
- run: pip install poetry
@@ -66,7 +66,7 @@ jobs:
6666
- uses: actions/checkout@v4
6767
- uses: actions/setup-node@v4
6868
with:
69-
node-version: 20
69+
node-version: 22
7070
cache: npm
7171
cache-dependency-path: package-lock.json
7272
- run: make deps-frontend
@@ -137,7 +137,7 @@ jobs:
137137
- uses: actions/checkout@v4
138138
- uses: actions/setup-node@v4
139139
with:
140-
node-version: 20
140+
node-version: 22
141141
cache: npm
142142
cache-dependency-path: package-lock.json
143143
- run: make deps-frontend
@@ -186,7 +186,7 @@ jobs:
186186
- uses: actions/checkout@v4
187187
- uses: actions/setup-node@v4
188188
with:
189-
node-version: 20
189+
node-version: 22
190190
cache: npm
191191
cache-dependency-path: package-lock.json
192192
- run: make deps-frontend

.github/workflows/pull-e2e-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
check-latest: true
2424
- uses: actions/setup-node@v4
2525
with:
26-
node-version: 20
26+
node-version: 22
2727
cache: npm
2828
cache-dependency-path: package-lock.json
2929
- run: make deps-frontend frontend deps-backend

.github/workflows/release-nightly.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
check-latest: true
2323
- uses: actions/setup-node@v4
2424
with:
25-
node-version: 20
25+
node-version: 22
2626
cache: npm
2727
cache-dependency-path: package-lock.json
2828
- run: make deps-frontend deps-backend

.github/workflows/release-tag-rc.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
check-latest: true
2424
- uses: actions/setup-node@v4
2525
with:
26-
node-version: 20
26+
node-version: 22
2727
cache: npm
2828
cache-dependency-path: package-lock.json
2929
- run: make deps-frontend deps-backend

.github/workflows/release-tag-version.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
check-latest: true
2626
- uses: actions/setup-node@v4
2727
with:
28-
node-version: 20
28+
node-version: 22
2929
cache: npm
3030
cache-dependency-path: package-lock.json
3131
- run: make deps-frontend deps-backend

flake.lock

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
gzip
2323

2424
# frontend
25-
nodejs_20
25+
nodejs_22
2626

2727
# linting
2828
python312

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ replace github.com/shurcooL/vfsgen => github.com/lunny/vfsgen v0.0.0-20220105142
330330

331331
replace github.com/nektos/act => gitea.com/gitea/act v0.261.3
332332

333+
// TODO: the only difference is in `PutObject`: the fork doesn't use `NewVerifyingReader(r, sha256.New(), oid, expectedSize)`, need to figure out why
333334
replace github.com/charmbracelet/git-lfs-transfer => gitea.com/gitea/git-lfs-transfer v0.2.0
334335

335336
// TODO: This could be removed after https://github.com/mholt/archiver/pull/396 merged

models/activities/action.go

+6
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,9 @@ func (a *Action) GetActDisplayNameTitle(ctx context.Context) string {
251251
// GetRepoUserName returns the name of the action repository owner.
252252
func (a *Action) GetRepoUserName(ctx context.Context) string {
253253
a.loadRepo(ctx)
254+
if a.Repo == nil {
255+
return "(non-existing-repo)"
256+
}
254257
return a.Repo.OwnerName
255258
}
256259

@@ -263,6 +266,9 @@ func (a *Action) ShortRepoUserName(ctx context.Context) string {
263266
// GetRepoName returns the name of the action repository.
264267
func (a *Action) GetRepoName(ctx context.Context) string {
265268
a.loadRepo(ctx)
269+
if a.Repo == nil {
270+
return "(non-existing-repo)"
271+
}
266272
return a.Repo.Name
267273
}
268274

models/activities/notification.go

+49-9
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818
"code.gitea.io/gitea/modules/timeutil"
1919

2020
"xorm.io/builder"
21+
"xorm.io/xorm/schemas"
2122
)
2223

2324
type (
@@ -50,25 +51,64 @@ const (
5051
// Notification represents a notification
5152
type Notification struct {
5253
ID int64 `xorm:"pk autoincr"`
53-
UserID int64 `xorm:"INDEX NOT NULL"`
54-
RepoID int64 `xorm:"INDEX NOT NULL"`
54+
UserID int64 `xorm:"NOT NULL"`
55+
RepoID int64 `xorm:"NOT NULL"`
5556

56-
Status NotificationStatus `xorm:"SMALLINT INDEX NOT NULL"`
57-
Source NotificationSource `xorm:"SMALLINT INDEX NOT NULL"`
57+
Status NotificationStatus `xorm:"SMALLINT NOT NULL"`
58+
Source NotificationSource `xorm:"SMALLINT NOT NULL"`
5859

59-
IssueID int64 `xorm:"INDEX NOT NULL"`
60-
CommitID string `xorm:"INDEX"`
60+
IssueID int64 `xorm:"NOT NULL"`
61+
CommitID string
6162
CommentID int64
6263

63-
UpdatedBy int64 `xorm:"INDEX NOT NULL"`
64+
UpdatedBy int64 `xorm:"NOT NULL"`
6465

6566
Issue *issues_model.Issue `xorm:"-"`
6667
Repository *repo_model.Repository `xorm:"-"`
6768
Comment *issues_model.Comment `xorm:"-"`
6869
User *user_model.User `xorm:"-"`
6970

70-
CreatedUnix timeutil.TimeStamp `xorm:"created INDEX NOT NULL"`
71-
UpdatedUnix timeutil.TimeStamp `xorm:"updated INDEX NOT NULL"`
71+
CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL"`
72+
UpdatedUnix timeutil.TimeStamp `xorm:"updated NOT NULL"`
73+
}
74+
75+
// TableIndices implements xorm's TableIndices interface
76+
func (n *Notification) TableIndices() []*schemas.Index {
77+
indices := make([]*schemas.Index, 0, 8)
78+
usuuIndex := schemas.NewIndex("u_s_uu", schemas.IndexType)
79+
usuuIndex.AddColumn("user_id", "status", "updated_unix")
80+
indices = append(indices, usuuIndex)
81+
82+
// Add the individual indices that were previously defined in struct tags
83+
userIDIndex := schemas.NewIndex("idx_notification_user_id", schemas.IndexType)
84+
userIDIndex.AddColumn("user_id")
85+
indices = append(indices, userIDIndex)
86+
87+
repoIDIndex := schemas.NewIndex("idx_notification_repo_id", schemas.IndexType)
88+
repoIDIndex.AddColumn("repo_id")
89+
indices = append(indices, repoIDIndex)
90+
91+
statusIndex := schemas.NewIndex("idx_notification_status", schemas.IndexType)
92+
statusIndex.AddColumn("status")
93+
indices = append(indices, statusIndex)
94+
95+
sourceIndex := schemas.NewIndex("idx_notification_source", schemas.IndexType)
96+
sourceIndex.AddColumn("source")
97+
indices = append(indices, sourceIndex)
98+
99+
issueIDIndex := schemas.NewIndex("idx_notification_issue_id", schemas.IndexType)
100+
issueIDIndex.AddColumn("issue_id")
101+
indices = append(indices, issueIDIndex)
102+
103+
commitIDIndex := schemas.NewIndex("idx_notification_commit_id", schemas.IndexType)
104+
commitIDIndex.AddColumn("commit_id")
105+
indices = append(indices, commitIDIndex)
106+
107+
updatedByIndex := schemas.NewIndex("idx_notification_updated_by", schemas.IndexType)
108+
updatedByIndex.AddColumn("updated_by")
109+
indices = append(indices, updatedByIndex)
110+
111+
return indices
72112
}
73113

74114
func init() {

models/migrations/migrations.go

+1
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ func prepareMigrationTasks() []*migration {
366366
newMigration(306, "Add BlockAdminMergeOverride to ProtectedBranch", v1_23.AddBlockAdminMergeOverrideBranchProtection),
367367
newMigration(307, "Fix milestone deadline_unix when there is no due date", v1_23.FixMilestoneNoDueDate),
368368
newMigration(308, "Add index(user_id, is_deleted) for action table", v1_23.AddNewIndexForUserDashboard),
369+
newMigration(309, "Improve Notification table indices", v1_23.ImproveNotificationTableIndices),
369370
}
370371
return preparedMigrations
371372
}

models/migrations/v1_23/v309.go

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Copyright 2024 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package v1_23 //nolint
5+
6+
import (
7+
"code.gitea.io/gitea/modules/timeutil"
8+
9+
"xorm.io/xorm"
10+
"xorm.io/xorm/schemas"
11+
)
12+
13+
type improveNotificationTableIndicesAction struct {
14+
ID int64 `xorm:"pk autoincr"`
15+
UserID int64 `xorm:"NOT NULL"`
16+
RepoID int64 `xorm:"NOT NULL"`
17+
18+
Status uint8 `xorm:"SMALLINT NOT NULL"`
19+
Source uint8 `xorm:"SMALLINT NOT NULL"`
20+
21+
IssueID int64 `xorm:"NOT NULL"`
22+
CommitID string
23+
CommentID int64
24+
25+
UpdatedBy int64 `xorm:"NOT NULL"`
26+
27+
CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL"`
28+
UpdatedUnix timeutil.TimeStamp `xorm:"updated NOT NULL"`
29+
}
30+
31+
// TableName sets the name of this table
32+
func (*improveNotificationTableIndicesAction) TableName() string {
33+
return "notification"
34+
}
35+
36+
// TableIndices implements xorm's TableIndices interface
37+
func (*improveNotificationTableIndicesAction) TableIndices() []*schemas.Index {
38+
indices := make([]*schemas.Index, 0, 8)
39+
usuuIndex := schemas.NewIndex("u_s_uu", schemas.IndexType)
40+
usuuIndex.AddColumn("user_id", "status", "updated_unix")
41+
indices = append(indices, usuuIndex)
42+
43+
// Add the individual indices that were previously defined in struct tags
44+
userIDIndex := schemas.NewIndex("idx_notification_user_id", schemas.IndexType)
45+
userIDIndex.AddColumn("user_id")
46+
indices = append(indices, userIDIndex)
47+
48+
repoIDIndex := schemas.NewIndex("idx_notification_repo_id", schemas.IndexType)
49+
repoIDIndex.AddColumn("repo_id")
50+
indices = append(indices, repoIDIndex)
51+
52+
statusIndex := schemas.NewIndex("idx_notification_status", schemas.IndexType)
53+
statusIndex.AddColumn("status")
54+
indices = append(indices, statusIndex)
55+
56+
sourceIndex := schemas.NewIndex("idx_notification_source", schemas.IndexType)
57+
sourceIndex.AddColumn("source")
58+
indices = append(indices, sourceIndex)
59+
60+
issueIDIndex := schemas.NewIndex("idx_notification_issue_id", schemas.IndexType)
61+
issueIDIndex.AddColumn("issue_id")
62+
indices = append(indices, issueIDIndex)
63+
64+
commitIDIndex := schemas.NewIndex("idx_notification_commit_id", schemas.IndexType)
65+
commitIDIndex.AddColumn("commit_id")
66+
indices = append(indices, commitIDIndex)
67+
68+
updatedByIndex := schemas.NewIndex("idx_notification_updated_by", schemas.IndexType)
69+
updatedByIndex.AddColumn("updated_by")
70+
indices = append(indices, updatedByIndex)
71+
72+
return indices
73+
}
74+
75+
func ImproveNotificationTableIndices(x *xorm.Engine) error {
76+
return x.Sync(&improveNotificationTableIndicesAction{})
77+
}

models/repo/repo.go

-2
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,6 @@ func (repo *Repository) ComposeMetas(ctx context.Context) map[string]string {
479479
metas := map[string]string{
480480
"user": repo.OwnerName,
481481
"repo": repo.Name,
482-
"mode": "comment",
483482
}
484483

485484
unit, err := repo.GetUnit(ctx, unit.TypeExternalTracker)
@@ -521,7 +520,6 @@ func (repo *Repository) ComposeDocumentMetas(ctx context.Context) map[string]str
521520
for k, v := range repo.ComposeMetas(ctx) {
522521
metas[k] = v
523522
}
524-
metas["mode"] = "document"
525523
repo.DocumentRenderingMetas = metas
526524
}
527525
return repo.DocumentRenderingMetas

modules/markup/console/console.go

+1-22
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"io"
99
"path/filepath"
1010
"regexp"
11-
"strings"
1211

1312
"code.gitea.io/gitea/modules/markup"
1413
"code.gitea.io/gitea/modules/setting"
@@ -17,9 +16,6 @@ import (
1716
"github.com/go-enry/go-enry/v2"
1817
)
1918

20-
// MarkupName describes markup's name
21-
var MarkupName = "console"
22-
2319
func init() {
2420
markup.RegisterRenderer(Renderer{})
2521
}
@@ -29,7 +25,7 @@ type Renderer struct{}
2925

3026
// Name implements markup.Renderer
3127
func (Renderer) Name() string {
32-
return MarkupName
28+
return "console"
3329
}
3430

3531
// Extensions implements markup.Renderer
@@ -67,20 +63,3 @@ func (Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.Wri
6763
_, err = output.Write(buf)
6864
return err
6965
}
70-
71-
// Render renders terminal colors to HTML with all specific handling stuff.
72-
func Render(ctx *markup.RenderContext, input io.Reader, output io.Writer) error {
73-
if ctx.Type == "" {
74-
ctx.Type = MarkupName
75-
}
76-
return markup.Render(ctx, input, output)
77-
}
78-
79-
// RenderString renders terminal colors in string to HTML with all specific handling stuff and return string
80-
func RenderString(ctx *markup.RenderContext, content string) (string, error) {
81-
var buf strings.Builder
82-
if err := Render(ctx, strings.NewReader(content), &buf); err != nil {
83-
return "", err
84-
}
85-
return buf.String(), nil
86-
}

modules/markup/html.go

+4-5
Original file line numberDiff line numberDiff line change
@@ -442,12 +442,11 @@ func createLink(href, content, class string) *html.Node {
442442
a := &html.Node{
443443
Type: html.ElementNode,
444444
Data: atom.A.String(),
445-
Attr: []html.Attribute{
446-
{Key: "href", Val: href},
447-
{Key: "data-markdown-generated-content"},
448-
},
445+
Attr: []html.Attribute{{Key: "href", Val: href}},
446+
}
447+
if !RenderBehaviorForTesting.DisableInternalAttributes {
448+
a.Attr = append(a.Attr, html.Attribute{Key: "data-markdown-generated-content"})
449449
}
450-
451450
if class != "" {
452451
a.Attr = append(a.Attr, html.Attribute{Key: "class", Val: class})
453452
}

0 commit comments

Comments
 (0)