aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--internal/db/repo.go25
-rw-r--r--internal/db/repo_test.go13
-rw-r--r--internal/markup/markup.go5
-rw-r--r--internal/markup/markup_test.go38
5 files changed, 66 insertions, 16 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 00bfc299..d1b61a95 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ All notable changes to Gogs are documented in this file.
### Fixed
- _Regression:_ When running Gogs on Windows, push commits no longer fail on a daily basis with the error "pre-receive hook declined". [#6316](https://github.com/gogs/gogs/issues/6316)
+- Auto-linked commit SHAs now have correct links. [#6300](https://github.com/gogs/gogs/issues/6300)
### Removed
diff --git a/internal/db/repo.go b/internal/db/repo.go
index 2a887c7f..31ea9ac6 100644
--- a/internal/db/repo.go
+++ b/internal/db/repo.go
@@ -429,24 +429,29 @@ func (repo *Repository) UpdateSize() error {
return nil
}
-// ComposeMetas composes a map of metas for rendering external issue tracker URL.
+// ComposeMetas composes a map of metas for rendering SHA1 URL and external issue tracker URL.
func (repo *Repository) ComposeMetas() map[string]string {
- if !repo.EnableExternalTracker {
- return nil
- } else if repo.ExternalMetas == nil {
- repo.ExternalMetas = map[string]string{
- "format": repo.ExternalTrackerFormat,
- "user": repo.MustOwner().Name,
- "repo": repo.Name,
- }
+ if repo.ExternalMetas != nil {
+ return repo.ExternalMetas
+ }
+
+ repo.ExternalMetas = map[string]string{
+ "repoLink": repo.Link(),
+ }
+
+ if repo.EnableExternalTracker {
+ repo.ExternalMetas["user"] = repo.MustOwner().Name
+ repo.ExternalMetas["repo"] = repo.Name
+ repo.ExternalMetas["format"] = repo.ExternalTrackerFormat
+
switch repo.ExternalTrackerStyle {
case markup.ISSUE_NAME_STYLE_ALPHANUMERIC:
repo.ExternalMetas["style"] = markup.ISSUE_NAME_STYLE_ALPHANUMERIC
default:
repo.ExternalMetas["style"] = markup.ISSUE_NAME_STYLE_NUMERIC
}
-
}
+
return repo.ExternalMetas
}
diff --git a/internal/db/repo_test.go b/internal/db/repo_test.go
index f689f05d..ad920be7 100644
--- a/internal/db/repo_test.go
+++ b/internal/db/repo_test.go
@@ -19,14 +19,19 @@ func TestRepository_ComposeMetas(t *testing.T) {
t.Run("no external tracker is configured", func(t *testing.T) {
repo.EnableExternalTracker = false
- assert.Equal(t, map[string]string(nil), repo.ComposeMetas())
- // Should be nil even if other settings are present
- repo.ExternalTrackerStyle = markup.ISSUE_NAME_STYLE_NUMERIC
- assert.Equal(t, map[string]string(nil), repo.ComposeMetas())
+ metas := repo.ComposeMetas()
+ assert.Equal(t, metas["repoLink"], repo.Link())
+
+ // Should no format and style if no external tracker is configured
+ _, ok := metas["format"]
+ assert.False(t, ok)
+ _, ok = metas["style"]
+ assert.False(t, ok)
})
t.Run("an external issue tracker is configured", func(t *testing.T) {
+ repo.ExternalMetas = nil
repo.EnableExternalTracker = true
// Default to numeric issue style
diff --git a/internal/markup/markup.go b/internal/markup/markup.go
index 65b14865..ad9d7fa1 100644
--- a/internal/markup/markup.go
+++ b/internal/markup/markup.go
@@ -145,7 +145,8 @@ func RenderSha1CurrentPattern(rawBytes []byte, urlPrefix string) []byte {
if com.StrTo(m).MustInt() > 0 {
return m
}
- return fmt.Sprintf(`<a href="%s/commit/%s"><code>%s</code></a>`, urlPrefix, m, tool.ShortSHA1(string(m)))
+
+ return fmt.Sprintf(`<a href="%s/commit/%s"><code>%s</code></a>`, urlPrefix, m, tool.ShortSHA1(m))
}))
}
@@ -160,7 +161,7 @@ func RenderSpecialLink(rawBytes []byte, urlPrefix string, metas map[string]strin
rawBytes = RenderIssueIndexPattern(rawBytes, urlPrefix, metas)
rawBytes = RenderCrossReferenceIssueIndexPattern(rawBytes, urlPrefix, metas)
- rawBytes = RenderSha1CurrentPattern(rawBytes, urlPrefix)
+ rawBytes = RenderSha1CurrentPattern(rawBytes, metas["repoLink"])
return rawBytes
}
diff --git a/internal/markup/markup_test.go b/internal/markup/markup_test.go
index 911a597c..df6213e6 100644
--- a/internal/markup/markup_test.go
+++ b/internal/markup/markup_test.go
@@ -215,3 +215,41 @@ func Test_RenderIssueIndexPattern(t *testing.T) {
})
})
}
+
+func TestRenderSha1CurrentPattern(t *testing.T) {
+ metas := map[string]string{
+ "repoLink": "/someuser/somerepo",
+ }
+
+ tests := []struct {
+ desc string
+ input string
+ prefix string
+ expVal string
+ }{
+ {
+ desc: "Full SHA (40 symbols)",
+ input: "ad8ced4f57d9068cb2874557245be3c7f341149d",
+ prefix: metas["repoLink"],
+ expVal: `<a href="/someuser/somerepo/commit/ad8ced4f57d9068cb2874557245be3c7f341149d"><code>ad8ced4f57</code></a>`,
+ },
+ {
+ desc: "Short SHA (8 symbols)",
+ input: "ad8ced4f",
+ prefix: metas["repoLink"],
+ expVal: `<a href="/someuser/somerepo/commit/ad8ced4f"><code>ad8ced4f</code></a>`,
+ },
+ {
+ desc: "9 digits",
+ input: "123456789",
+ prefix: metas["repoLink"],
+ expVal: "123456789",
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.desc, func(t *testing.T) {
+ assert.Equal(t, test.expVal, string(RenderSha1CurrentPattern([]byte(test.input), test.prefix)))
+ })
+ }
+}