Skip to content

Commit 0b8580f

Browse files
committed
Merge branch 'main' into optimize-filetree-icons-match
2 parents 07ed21b + e1c2d05 commit 0b8580f

File tree

106 files changed

+1324
-953
lines changed

Some content is hidden

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

106 files changed

+1324
-953
lines changed

custom/conf/app.example.ini

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1413,14 +1413,14 @@ LEVEL = Info
14131413
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
14141414
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
14151415
;;
1416-
;; Render soft line breaks as hard line breaks, which means a single newline character between
1417-
;; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not
1418-
;; necessary to force a line break.
1419-
;; Render soft line breaks as hard line breaks for comments
1420-
;ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true
1421-
;;
1422-
;; Render soft line breaks as hard line breaks for markdown documents
1423-
;ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false
1416+
;; Customize render options for different contexts. Set to "none" to disable the defaults, or use comma separated list:
1417+
;; * short-issue-pattern: recognized "#123" issue reference and render it as a link to the issue
1418+
;; * new-line-hard-break: render soft line breaks as hard line breaks, which means a single newline character between
1419+
;; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not
1420+
;; necessary to force a line break.
1421+
;RENDER_OPTIONS_COMMENT = short-issue-pattern, new-line-hard-break
1422+
;RENDER_OPTIONS_WIKI = short-issue-pattern
1423+
;RENDER_OPTIONS_REPO_FILE =
14241424
;;
14251425
;; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown
14261426
;; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes)
@@ -1434,6 +1434,12 @@ LEVEL = Info
14341434
;;
14351435
;; Enables math inline and block detection
14361436
;ENABLE_MATH = true
1437+
;;
1438+
;; Enable delimiters for math code block detection. Set to "none" to disable all,
1439+
;; or use comma separated list: inline-dollar, inline-parentheses, block-dollar, block-square-brackets
1440+
;; Defaults to "inline-dollar,block-dollar" to follow GitHub's behavior.
1441+
;MATH_CODE_BLOCK_DETECTION =
1442+
;;
14371443

14381444
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
14391445
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

docker/root/etc/s6/openssh/setup

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@ if [ -e /data/ssh/ssh_host_ecdsa_cert ]; then
3131
SSH_ECDSA_CERT=${SSH_ECDSA_CERT:-"/data/ssh/ssh_host_ecdsa_cert"}
3232
fi
3333

34+
if [ -e /data/ssh/ssh_host_ed25519-cert.pub ]; then
35+
SSH_ED25519_CERT=${SSH_ED25519_CERT:-"/data/ssh/ssh_host_ed25519-cert.pub"}
36+
fi
37+
38+
if [ -e /data/ssh/ssh_host_rsa-cert.pub ]; then
39+
SSH_RSA_CERT=${SSH_RSA_CERT:-"/data/ssh/ssh_host_rsa-cert.pub"}
40+
fi
41+
42+
if [ -e /data/ssh/ssh_host_ecdsa-cert.pub ]; then
43+
SSH_ECDSA_CERT=${SSH_ECDSA_CERT:-"/data/ssh/ssh_host_ecdsa-cert.pub"}
44+
fi
45+
3446
if [ -d /etc/ssh ]; then
3547
SSH_PORT=${SSH_PORT:-"22"} \
3648
SSH_LISTEN_PORT=${SSH_LISTEN_PORT:-"${SSH_PORT}"} \

models/renderhelper/repo_comment.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ func (r *RepoComment) IsCommitIDExisting(commitID string) bool {
2828
return r.commitChecker.IsCommitIDExisting(commitID)
2929
}
3030

31-
func (r *RepoComment) ResolveLink(link string, likeType markup.LinkType) (finalLink string) {
32-
switch likeType {
33-
case markup.LinkTypeApp:
34-
finalLink = r.ctx.ResolveLinkApp(link)
31+
func (r *RepoComment) ResolveLink(link, preferLinkType string) string {
32+
linkType, link := markup.ParseRenderedLink(link, preferLinkType)
33+
switch linkType {
34+
case markup.LinkTypeRoot:
35+
return r.ctx.ResolveLinkRoot(link)
3536
default:
36-
finalLink = r.ctx.ResolveLinkRelative(r.repoLink, r.opts.CurrentRefPath, link)
37+
return r.ctx.ResolveLinkRelative(r.repoLink, r.opts.CurrentRefPath, link)
3738
}
38-
return finalLink
3939
}
4040

4141
var _ markup.RenderHelper = (*RepoComment)(nil)
@@ -56,15 +56,15 @@ func NewRenderContextRepoComment(ctx context.Context, repo *repo_model.Repositor
5656
if repo != nil {
5757
helper.repoLink = repo.Link()
5858
helper.commitChecker = newCommitChecker(ctx, repo)
59-
rctx = rctx.WithMetas(repo.ComposeMetas(ctx))
59+
rctx = rctx.WithMetas(repo.ComposeCommentMetas(ctx))
6060
} else {
6161
// this is almost dead code, only to pass the incorrect tests
6262
helper.repoLink = fmt.Sprintf("%s/%s", helper.opts.DeprecatedOwnerName, helper.opts.DeprecatedRepoName)
6363
rctx = rctx.WithMetas(map[string]string{
6464
"user": helper.opts.DeprecatedOwnerName,
6565
"repo": helper.opts.DeprecatedRepoName,
6666

67-
"markdownLineBreakStyle": "comment",
67+
"markdownNewLineHardBreak": "true",
6868
"markupAllowShortIssuePattern": "true",
6969
})
7070
}

models/renderhelper/repo_file.go

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,17 @@ func (r *RepoFile) IsCommitIDExisting(commitID string) bool {
2929
return r.commitChecker.IsCommitIDExisting(commitID)
3030
}
3131

32-
func (r *RepoFile) ResolveLink(link string, likeType markup.LinkType) string {
33-
finalLink := link
34-
switch likeType {
35-
case markup.LinkTypeApp:
36-
finalLink = r.ctx.ResolveLinkApp(link)
37-
case markup.LinkTypeDefault:
38-
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "src", r.opts.CurrentRefPath), r.opts.CurrentTreePath, link)
32+
func (r *RepoFile) ResolveLink(link, preferLinkType string) (finalLink string) {
33+
linkType, link := markup.ParseRenderedLink(link, preferLinkType)
34+
switch linkType {
35+
case markup.LinkTypeRoot:
36+
finalLink = r.ctx.ResolveLinkRoot(link)
3937
case markup.LinkTypeRaw:
4038
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "raw", r.opts.CurrentRefPath), r.opts.CurrentTreePath, link)
4139
case markup.LinkTypeMedia:
4240
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "media", r.opts.CurrentRefPath), r.opts.CurrentTreePath, link)
41+
default:
42+
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "src", r.opts.CurrentRefPath), r.opts.CurrentTreePath, link)
4343
}
4444
return finalLink
4545
}
@@ -61,15 +61,13 @@ func NewRenderContextRepoFile(ctx context.Context, repo *repo_model.Repository,
6161
if repo != nil {
6262
helper.repoLink = repo.Link()
6363
helper.commitChecker = newCommitChecker(ctx, repo)
64-
rctx = rctx.WithMetas(repo.ComposeDocumentMetas(ctx))
64+
rctx = rctx.WithMetas(repo.ComposeRepoFileMetas(ctx))
6565
} else {
6666
// this is almost dead code, only to pass the incorrect tests
6767
helper.repoLink = fmt.Sprintf("%s/%s", helper.opts.DeprecatedOwnerName, helper.opts.DeprecatedRepoName)
6868
rctx = rctx.WithMetas(map[string]string{
6969
"user": helper.opts.DeprecatedOwnerName,
7070
"repo": helper.opts.DeprecatedRepoName,
71-
72-
"markdownLineBreakStyle": "document",
7371
})
7472
}
7573
rctx = rctx.WithHelper(helper)

models/renderhelper/repo_file_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ func TestRepoFile(t *testing.T) {
4848
assert.Equal(t,
4949
`<p><a href="/user2/repo1/src/branch/main/test" rel="nofollow">/test</a>
5050
<a href="/user2/repo1/src/branch/main/test" rel="nofollow">./test</a>
51-
<a href="/user2/repo1/media/branch/main/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/branch/main/image" alt="/image"/></a>
52-
<a href="/user2/repo1/media/branch/main/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/branch/main/image" alt="./image"/></a></p>
51+
<a href="/user2/repo1/src/branch/main/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/branch/main/image" alt="/image"/></a>
52+
<a href="/user2/repo1/src/branch/main/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/branch/main/image" alt="./image"/></a></p>
5353
`, rendered)
5454
})
5555

@@ -62,7 +62,7 @@ func TestRepoFile(t *testing.T) {
6262
`)
6363
assert.NoError(t, err)
6464
assert.Equal(t, `<p><a href="/user2/repo1/src/commit/1234/test" rel="nofollow">/test</a>
65-
<a href="/user2/repo1/media/commit/1234/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/commit/1234/image" alt="/image"/></a></p>
65+
<a href="/user2/repo1/src/commit/1234/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/commit/1234/image" alt="/image"/></a></p>
6666
`, rendered)
6767
})
6868

@@ -77,7 +77,7 @@ func TestRepoFile(t *testing.T) {
7777
<video src="LINK">
7878
`)
7979
assert.NoError(t, err)
80-
assert.Equal(t, `<a href="/user2/repo1/media/commit/1234/my-dir/LINK" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/commit/1234/my-dir/LINK"/></a>
80+
assert.Equal(t, `<a href="/user2/repo1/src/commit/1234/my-dir/LINK" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/media/commit/1234/my-dir/LINK"/></a>
8181
<video src="/user2/repo1/media/commit/1234/my-dir/LINK">
8282
</video>`, rendered)
8383
})
@@ -100,7 +100,7 @@ func TestRepoFileOrgMode(t *testing.T) {
100100
assert.NoError(t, err)
101101
assert.Equal(t, `<p>
102102
<a href="https://google.com/" rel="nofollow">https://google.com/</a>
103-
<a href="/user2/repo1/media/commit/1234/my-dir/ImageLink.svg" rel="nofollow">The Image Desc</a></p>
103+
<a href="/user2/repo1/src/commit/1234/my-dir/ImageLink.svg" rel="nofollow">The Image Desc</a></p>
104104
`, rendered)
105105
})
106106

models/renderhelper/repo_wiki.go

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,16 @@ func (r *RepoWiki) IsCommitIDExisting(commitID string) bool {
3030
return r.commitChecker.IsCommitIDExisting(commitID)
3131
}
3232

33-
func (r *RepoWiki) ResolveLink(link string, likeType markup.LinkType) string {
34-
finalLink := link
35-
switch likeType {
36-
case markup.LinkTypeApp:
37-
finalLink = r.ctx.ResolveLinkApp(link)
38-
case markup.LinkTypeDefault:
39-
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "wiki", r.opts.currentRefPath), r.opts.currentTreePath, link)
40-
case markup.LinkTypeMedia:
33+
func (r *RepoWiki) ResolveLink(link, preferLinkType string) (finalLink string) {
34+
linkType, link := markup.ParseRenderedLink(link, preferLinkType)
35+
switch linkType {
36+
case markup.LinkTypeRoot:
37+
finalLink = r.ctx.ResolveLinkRoot(link)
38+
case markup.LinkTypeMedia, markup.LinkTypeRaw:
4139
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "wiki/raw", r.opts.currentRefPath), r.opts.currentTreePath, link)
42-
case markup.LinkTypeRaw: // wiki doesn't use it
40+
default:
41+
finalLink = r.ctx.ResolveLinkRelative(path.Join(r.repoLink, "wiki", r.opts.currentRefPath), r.opts.currentTreePath, link)
4342
}
44-
4543
return finalLink
4644
}
4745

@@ -70,7 +68,6 @@ func NewRenderContextRepoWiki(ctx context.Context, repo *repo_model.Repository,
7068
"user": helper.opts.DeprecatedOwnerName,
7169
"repo": helper.opts.DeprecatedRepoName,
7270

73-
"markdownLineBreakStyle": "document",
7471
"markupAllowShortIssuePattern": "true",
7572
})
7673
}

models/renderhelper/repo_wiki_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ func TestRepoWiki(t *testing.T) {
4545
assert.Equal(t,
4646
`<p><a href="/user2/repo1/wiki/test" rel="nofollow">/test</a>
4747
<a href="/user2/repo1/wiki/test" rel="nofollow">./test</a>
48-
<a href="/user2/repo1/wiki/raw/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/image" alt="/image"/></a>
49-
<a href="/user2/repo1/wiki/raw/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/image" alt="./image"/></a></p>
48+
<a href="/user2/repo1/wiki/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/image" alt="/image"/></a>
49+
<a href="/user2/repo1/wiki/image" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/image" alt="./image"/></a></p>
5050
`, rendered)
5151
})
5252

@@ -57,7 +57,7 @@ func TestRepoWiki(t *testing.T) {
5757
<video src="LINK">
5858
`)
5959
assert.NoError(t, err)
60-
assert.Equal(t, `<a href="/user2/repo1/wiki/raw/LINK" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/LINK"/></a>
60+
assert.Equal(t, `<a href="/user2/repo1/wiki/LINK" target="_blank" rel="nofollow noopener"><img src="/user2/repo1/wiki/raw/LINK"/></a>
6161
<video src="/user2/repo1/wiki/raw/LINK">
6262
</video>`, rendered)
6363
})

models/renderhelper/simple_document.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,14 @@ type SimpleDocument struct {
1515
baseLink string
1616
}
1717

18-
func (r *SimpleDocument) ResolveLink(link string, likeType markup.LinkType) string {
19-
return r.ctx.ResolveLinkRelative(r.baseLink, "", link)
18+
func (r *SimpleDocument) ResolveLink(link, preferLinkType string) string {
19+
linkType, link := markup.ParseRenderedLink(link, preferLinkType)
20+
switch linkType {
21+
case markup.LinkTypeRoot:
22+
return r.ctx.ResolveLinkRoot(link)
23+
default:
24+
return r.ctx.ResolveLinkRelative(r.baseLink, "", link)
25+
}
2026
}
2127

2228
var _ markup.RenderHelper = (*SimpleDocument)(nil)

models/renderhelper/simple_document_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func TestSimpleDocument(t *testing.T) {
3030
assert.Equal(t,
3131
`<p>65f1bf27bc3bf70f64657658635e66094edbcb4d
3232
#1
33-
<a href="/base/user2" rel="nofollow">@user2</a></p>
33+
<a href="/user2" rel="nofollow">@user2</a></p>
3434
<p><a href="/base/test" rel="nofollow">/test</a>
3535
<a href="/base/test" rel="nofollow">./test</a>
3636
<a href="/base/image" target="_blank" rel="nofollow noopener"><img src="/base/image" alt="/image"/></a>

models/repo/repo.go

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -512,15 +512,15 @@ func (repo *Repository) composeCommonMetas(ctx context.Context) map[string]strin
512512
"repo": repo.Name,
513513
}
514514

515-
unit, err := repo.GetUnit(ctx, unit.TypeExternalTracker)
515+
unitExternalTracker, err := repo.GetUnit(ctx, unit.TypeExternalTracker)
516516
if err == nil {
517-
metas["format"] = unit.ExternalTrackerConfig().ExternalTrackerFormat
518-
switch unit.ExternalTrackerConfig().ExternalTrackerStyle {
517+
metas["format"] = unitExternalTracker.ExternalTrackerConfig().ExternalTrackerFormat
518+
switch unitExternalTracker.ExternalTrackerConfig().ExternalTrackerStyle {
519519
case markup.IssueNameStyleAlphanumeric:
520520
metas["style"] = markup.IssueNameStyleAlphanumeric
521521
case markup.IssueNameStyleRegexp:
522522
metas["style"] = markup.IssueNameStyleRegexp
523-
metas["regexp"] = unit.ExternalTrackerConfig().ExternalTrackerRegexpPattern
523+
metas["regexp"] = unitExternalTracker.ExternalTrackerConfig().ExternalTrackerRegexpPattern
524524
default:
525525
metas["style"] = markup.IssueNameStyleNumeric
526526
}
@@ -544,28 +544,29 @@ func (repo *Repository) composeCommonMetas(ctx context.Context) map[string]strin
544544
return repo.commonRenderingMetas
545545
}
546546

547-
// ComposeMetas composes a map of metas for properly rendering comments or comment-like contents (commit message)
548-
func (repo *Repository) ComposeMetas(ctx context.Context) map[string]string {
547+
// ComposeCommentMetas composes a map of metas for properly rendering comments or comment-like contents (commit message)
548+
func (repo *Repository) ComposeCommentMetas(ctx context.Context) map[string]string {
549549
metas := maps.Clone(repo.composeCommonMetas(ctx))
550-
metas["markdownLineBreakStyle"] = "comment"
551-
metas["markupAllowShortIssuePattern"] = "true"
550+
metas["markdownNewLineHardBreak"] = strconv.FormatBool(setting.Markdown.RenderOptionsComment.NewLineHardBreak)
551+
metas["markupAllowShortIssuePattern"] = strconv.FormatBool(setting.Markdown.RenderOptionsComment.ShortIssuePattern)
552552
return metas
553553
}
554554

555555
// ComposeWikiMetas composes a map of metas for properly rendering wikis
556556
func (repo *Repository) ComposeWikiMetas(ctx context.Context) map[string]string {
557557
// does wiki need the "teams" and "org" from common metas?
558558
metas := maps.Clone(repo.composeCommonMetas(ctx))
559-
metas["markdownLineBreakStyle"] = "document"
560-
metas["markupAllowShortIssuePattern"] = "true"
559+
metas["markdownNewLineHardBreak"] = strconv.FormatBool(setting.Markdown.RenderOptionsWiki.NewLineHardBreak)
560+
metas["markupAllowShortIssuePattern"] = strconv.FormatBool(setting.Markdown.RenderOptionsWiki.ShortIssuePattern)
561561
return metas
562562
}
563563

564-
// ComposeDocumentMetas composes a map of metas for properly rendering documents (repo files)
565-
func (repo *Repository) ComposeDocumentMetas(ctx context.Context) map[string]string {
564+
// ComposeRepoFileMetas composes a map of metas for properly rendering documents (repo files)
565+
func (repo *Repository) ComposeRepoFileMetas(ctx context.Context) map[string]string {
566566
// does document(file) need the "teams" and "org" from common metas?
567567
metas := maps.Clone(repo.composeCommonMetas(ctx))
568-
metas["markdownLineBreakStyle"] = "document"
568+
metas["markdownNewLineHardBreak"] = strconv.FormatBool(setting.Markdown.RenderOptionsRepoFile.NewLineHardBreak)
569+
metas["markupAllowShortIssuePattern"] = strconv.FormatBool(setting.Markdown.RenderOptionsRepoFile.ShortIssuePattern)
569570
return metas
570571
}
571572

0 commit comments

Comments
 (0)