Skip to content

Commit 15d11c1

Browse files
committed
Merge remote-tracking branch 'upstream/main'
* upstream/main: Fix typo (go-gitea#21201) Remove unnecessary length check for repo's Description & Website (go-gitea#21194) Treat git object mode 40755 as directory (go-gitea#21195) Fix reaction of issues (go-gitea#21185) Fix CSV diff for added/deleted files (go-gitea#21189) Show label description in comments section (go-gitea#21156) Limit length of repo description and repo url input fields (go-gitea#21119)
2 parents f729e8e + c87e6a8 commit 15d11c1

File tree

11 files changed

+54
-51
lines changed

11 files changed

+54
-51
lines changed

cmd/serv.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const (
4343
var CmdServ = cli.Command{
4444
Name: "serv",
4545
Usage: "This command should only be called by SSH shell",
46-
Description: `Serv provide access auth for repositories`,
46+
Description: "Serv provides access auth for repositories",
4747
Action: runServ,
4848
Flags: []cli.Flag{
4949
cli.BoolFlag{

models/issues/reaction.go

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ func createReaction(ctx context.Context, opts *ReactionOptions) (*Reaction, erro
181181
Reaction: opts.Type,
182182
UserID: opts.DoerID,
183183
}
184+
if findOpts.CommentID == 0 {
185+
// explicit search of Issue Reactions where CommentID = 0
186+
findOpts.CommentID = -1
187+
}
184188

185189
existingR, _, err := FindReactions(ctx, findOpts)
186190
if err != nil {
@@ -256,16 +260,23 @@ func DeleteReaction(ctx context.Context, opts *ReactionOptions) error {
256260
CommentID: opts.CommentID,
257261
}
258262

259-
_, err := db.GetEngine(ctx).Where("original_author_id = 0").Delete(reaction)
263+
sess := db.GetEngine(ctx).Where("original_author_id = 0")
264+
if opts.CommentID == -1 {
265+
reaction.CommentID = 0
266+
sess.MustCols("comment_id")
267+
}
268+
269+
_, err := sess.Delete(reaction)
260270
return err
261271
}
262272

263273
// DeleteIssueReaction deletes a reaction on issue.
264274
func DeleteIssueReaction(doerID, issueID int64, content string) error {
265275
return DeleteReaction(db.DefaultContext, &ReactionOptions{
266-
Type: content,
267-
DoerID: doerID,
268-
IssueID: issueID,
276+
Type: content,
277+
DoerID: doerID,
278+
IssueID: issueID,
279+
CommentID: -1,
269280
})
270281
}
271282

modules/git/parse_nogogit.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func parseTreeEntries(data []byte, ptree *Tree) ([]*TreeEntry, error) {
4444
case "160000":
4545
entry.entryMode = EntryModeCommit
4646
pos += 14 // skip over "160000 object "
47-
case "040000":
47+
case "040000", "040755": // git uses 040000 for tree object, but some users may get 040755 for unknown reasons
4848
entry.entryMode = EntryModeTree
4949
pos += 12 // skip over "040000 tree "
5050
default:
@@ -119,7 +119,7 @@ loop:
119119
entry.entryMode = EntryModeSymlink
120120
case "160000":
121121
entry.entryMode = EntryModeCommit
122-
case "40000":
122+
case "40000", "40755": // git uses 40000 for tree object, but some users may get 40755 for unknown reasons
123123
entry.entryMode = EntryModeTree
124124
default:
125125
log.Debug("Unknown mode: %v", string(mode))

modules/repository/create.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"os"
1111
"path"
1212
"strings"
13-
"unicode/utf8"
1413

1514
"code.gitea.io/gitea/models"
1615
activities_model "code.gitea.io/gitea/models/activities"
@@ -337,13 +336,6 @@ func CheckDaemonExportOK(ctx context.Context, repo *repo_model.Repository) error
337336
func UpdateRepository(ctx context.Context, repo *repo_model.Repository, visibilityChanged bool) (err error) {
338337
repo.LowerName = strings.ToLower(repo.Name)
339338

340-
if utf8.RuneCountInString(repo.Description) > 255 {
341-
repo.Description = string([]rune(repo.Description)[:255])
342-
}
343-
if utf8.RuneCountInString(repo.Website) > 255 {
344-
repo.Website = string([]rune(repo.Website)[:255])
345-
}
346-
347339
e := db.GetEngine(ctx)
348340

349341
if _, err = e.ID(repo.ID).AllCols().Update(repo); err != nil {

modules/structs/repo.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ type CreateRepoOption struct {
111111
// unique: true
112112
Name string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"`
113113
// Description of the repository to create
114-
Description string `json:"description" binding:"MaxSize(255)"`
114+
Description string `json:"description" binding:"MaxSize(2048)"`
115115
// Whether the repository is private
116116
Private bool `json:"private"`
117117
// Label-Set to use
@@ -140,9 +140,9 @@ type EditRepoOption struct {
140140
// unique: true
141141
Name *string `json:"name,omitempty" binding:"OmitEmpty;AlphaDashDot;MaxSize(100);"`
142142
// a short description of the repository.
143-
Description *string `json:"description,omitempty" binding:"MaxSize(255)"`
143+
Description *string `json:"description,omitempty" binding:"MaxSize(2048)"`
144144
// a URL with more information about the repository.
145-
Website *string `json:"website,omitempty" binding:"MaxSize(255)"`
145+
Website *string `json:"website,omitempty" binding:"MaxSize(1024)"`
146146
// either `true` to make the repository private or `false` to make it public.
147147
// Note: you will get a 422 error if the organization restricts changing repository visibility to organization
148148
// owners and a non-owner tries to change the value of private.
@@ -208,7 +208,7 @@ type GenerateRepoOption struct {
208208
// Default branch of the new repository
209209
DefaultBranch string `json:"default_branch"`
210210
// Description of the repository to create
211-
Description string `json:"description" binding:"MaxSize(255)"`
211+
Description string `json:"description" binding:"MaxSize(2048)"`
212212
// Whether the repository is private
213213
Private bool `json:"private"`
214214
// include git content of default branch in template repo
@@ -316,7 +316,7 @@ type MigrateRepoOptions struct {
316316
LFS bool `json:"lfs"`
317317
LFSEndpoint string `json:"lfs_endpoint"`
318318
Private bool `json:"private"`
319-
Description string `json:"description" binding:"MaxSize(255)"`
319+
Description string `json:"description" binding:"MaxSize(2048)"`
320320
Wiki bool `json:"wiki"`
321321
Milestones bool `json:"milestones"`
322322
Labels bool `json:"labels"`

modules/templates/helper.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,17 +377,17 @@ func NewFuncMap() []template.FuncMap {
377377
return ""
378378
},
379379
"RenderLabels": func(labels []*issues_model.Label, repoLink string) template.HTML {
380-
html := `<span class="labels-list">`
380+
htmlCode := `<span class="labels-list">`
381381
for _, label := range labels {
382382
// Protect against nil value in labels - shouldn't happen but would cause a panic if so
383383
if label == nil {
384384
continue
385385
}
386-
html += fmt.Sprintf("<a href='%s/issues?labels=%d' class='ui label' style='color: %s !important; background-color: %s !important'>%s</a> ",
387-
repoLink, label.ID, label.ForegroundColor(), label.Color, RenderEmoji(label.Name))
386+
htmlCode += fmt.Sprintf("<a href='%s/issues?labels=%d' class='ui label' style='color: %s !important; background-color: %s !important' title='%s'>%s</a> ",
387+
repoLink, label.ID, label.ForegroundColor(), label.Color, html.EscapeString(label.Description), RenderEmoji(label.Name))
388388
}
389-
html += "</span>"
390-
return template.HTML(html)
389+
htmlCode += "</span>"
390+
return template.HTML(htmlCode)
391391
},
392392
"MermaidMaxSourceCharacters": func() int {
393393
return setting.MermaidMaxSourceCharacters

routers/web/repo/compare.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -112,17 +112,17 @@ func setCsvCompareContext(ctx *context.Context) {
112112
Error string
113113
}
114114

115-
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseCommit, headCommit *git.Commit) CsvDiffResult {
116-
if diffFile == nil || baseCommit == nil || headCommit == nil {
115+
ctx.Data["CreateCsvDiff"] = func(diffFile *gitdiff.DiffFile, baseBlob, headBlob *git.Blob) CsvDiffResult {
116+
if diffFile == nil {
117117
return CsvDiffResult{nil, ""}
118118
}
119119

120120
errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large"))
121121

122-
csvReaderFromCommit := func(ctx *markup.RenderContext, c *git.Commit) (*csv.Reader, io.Closer, error) {
123-
blob, err := c.GetBlobByPath(diffFile.Name)
124-
if err != nil {
125-
return nil, nil, err
122+
csvReaderFromCommit := func(ctx *markup.RenderContext, blob *git.Blob) (*csv.Reader, io.Closer, error) {
123+
if blob == nil {
124+
// It's ok for blob to be nil (file added or deleted)
125+
return nil, nil, nil
126126
}
127127

128128
if setting.UI.CSV.MaxFileSize != 0 && setting.UI.CSV.MaxFileSize < blob.Size() {
@@ -138,28 +138,28 @@ func setCsvCompareContext(ctx *context.Context) {
138138
return csvReader, reader, err
139139
}
140140

141-
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseCommit)
141+
baseReader, baseBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.OldName}, baseBlob)
142142
if baseBlobCloser != nil {
143143
defer baseBlobCloser.Close()
144144
}
145-
if err == errTooLarge {
146-
return CsvDiffResult{nil, err.Error()}
147-
}
148145
if err != nil {
149-
log.Error("CreateCsvDiff error whilst creating baseReader from file %s in commit %s in %s: %v", diffFile.Name, baseCommit.ID.String(), ctx.Repo.Repository.Name, err)
150-
return CsvDiffResult{nil, "unable to load file from base commit"}
146+
if err == errTooLarge {
147+
return CsvDiffResult{nil, err.Error()}
148+
}
149+
log.Error("error whilst creating csv.Reader from file %s in base commit %s in %s: %v", diffFile.Name, baseBlob.ID.String(), ctx.Repo.Repository.Name, err)
150+
return CsvDiffResult{nil, "unable to load file"}
151151
}
152152

153-
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headCommit)
153+
headReader, headBlobCloser, err := csvReaderFromCommit(&markup.RenderContext{Ctx: ctx, RelativePath: diffFile.Name}, headBlob)
154154
if headBlobCloser != nil {
155155
defer headBlobCloser.Close()
156156
}
157-
if err == errTooLarge {
158-
return CsvDiffResult{nil, err.Error()}
159-
}
160157
if err != nil {
161-
log.Error("CreateCsvDiff error whilst creating headReader from file %s in commit %s in %s: %v", diffFile.Name, headCommit.ID.String(), ctx.Repo.Repository.Name, err)
162-
return CsvDiffResult{nil, "unable to load file from head commit"}
158+
if err == errTooLarge {
159+
return CsvDiffResult{nil, err.Error()}
160+
}
161+
log.Error("error whilst creating csv.Reader from file %s in head commit %s in %s: %v", diffFile.Name, headBlob.ID.String(), ctx.Repo.Repository.Name, err)
162+
return CsvDiffResult{nil, "unable to load file"}
163163
}
164164

165165
sections, err := gitdiff.CreateCsvDiff(diffFile, baseReader, headReader)

services/forms/repo_form.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ type CreateRepoForm struct {
3434
UID int64 `binding:"Required"`
3535
RepoName string `binding:"Required;AlphaDashDot;MaxSize(100)"`
3636
Private bool
37-
Description string `binding:"MaxSize(255)"`
37+
Description string `binding:"MaxSize(2048)"`
3838
DefaultBranch string `binding:"GitRefName;MaxSize(100)"`
3939
AutoInit bool
4040
Gitignores string
@@ -76,7 +76,7 @@ type MigrateRepoForm struct {
7676
LFS bool `json:"lfs"`
7777
LFSEndpoint string `json:"lfs_endpoint"`
7878
Private bool `json:"private"`
79-
Description string `json:"description" binding:"MaxSize(255)"`
79+
Description string `json:"description" binding:"MaxSize(2048)"`
8080
Wiki bool `json:"wiki"`
8181
Milestones bool `json:"milestones"`
8282
Labels bool `json:"labels"`
@@ -116,8 +116,8 @@ func ParseRemoteAddr(remoteAddr, authUsername, authPassword string) (string, err
116116
// RepoSettingForm form for changing repository settings
117117
type RepoSettingForm struct {
118118
RepoName string `binding:"Required;AlphaDashDot;MaxSize(100)"`
119-
Description string `binding:"MaxSize(255)"`
120-
Website string `binding:"ValidUrl;MaxSize(255)"`
119+
Description string `binding:"MaxSize(2048)"`
120+
Website string `binding:"ValidUrl;MaxSize(1024)"`
121121
Interval string
122122
MirrorAddress string
123123
MirrorUsername string

templates/repo/diff/box.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@
153153
{{if $isImage}}
154154
{{template "repo/diff/image_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
155155
{{else}}
156-
{{template "repo/diff/csv_diff" dict "file" . "root" $}}
156+
{{template "repo/diff/csv_diff" dict "file" . "root" $ "blobBase" $blobBase "blobHead" $blobHead}}
157157
{{end}}
158158
</table>
159159
</div>

templates/repo/diff/csv_diff.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<tr>
22
<td>
3-
{{$result := call .root.CreateCsvDiff .file .root.BaseCommit .root.HeadCommit}}
3+
{{$result := call .root.CreateCsvDiff .file .blobBase .blobHead}}
44
{{if $result.Error}}
55
<div class="ui center">{{$result.Error}}</div>
66
{{else if $result.Sections}}

templates/repo/settings/options.tmpl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@
4242
{{end}}
4343
<div class="field {{if .Err_Description}}error{{end}}">
4444
<label for="description">{{$.locale.Tr "repo.repo_desc"}}</label>
45-
<textarea id="description" name="description" rows="2">{{.Repository.Description}}</textarea>
45+
<textarea id="description" name="description" rows="2" maxlength="2048">{{.Repository.Description}}</textarea>
4646
</div>
4747
<div class="field {{if .Err_Website}}error{{end}}">
4848
<label for="website">{{.locale.Tr "repo.settings.site"}}</label>
49-
<input id="website" name="website" type="url" value="{{.Repository.Website}}">
49+
<input id="website" name="website" type="url" maxlength="1024" value="{{.Repository.Website}}">
5050
</div>
5151

5252
<div class="field">

0 commit comments

Comments
 (0)