diff --git a/modules/git/commit_submodule_file.go b/modules/git/commit_submodule_file.go index 2d2dcf5255..34f582c21f 100644 --- a/modules/git/commit_submodule_file.go +++ b/modules/git/commit_submodule_file.go @@ -10,6 +10,7 @@ import ( "strings" giturl "code.gitea.io/gitea/modules/git/url" + "code.gitea.io/gitea/modules/util" ) // CommitSubmoduleFile represents a file with submodule type. @@ -28,6 +29,10 @@ func NewCommitSubmoduleFile(repoLink, fullPath, refURL, refID string) *CommitSub return &CommitSubmoduleFile{repoLink: repoLink, fullPath: fullPath, refURL: refURL, refID: refID} } +func (sf *CommitSubmoduleFile) RefID() string { + return sf.refID +} + func (sf *CommitSubmoduleFile) getWebLinkInTargetRepo(ctx context.Context, moreLinkPath string) *SubmoduleWebLink { if sf == nil { return nil @@ -47,17 +52,12 @@ func (sf *CommitSubmoduleFile) getWebLinkInTargetRepo(ctx context.Context, moreL return &SubmoduleWebLink{RepoWebLink: sf.parsedTargetLink, CommitWebLink: sf.parsedTargetLink + moreLinkPath} } -// RefID returns the commit ref id of the submodule file, it also works on "nil" receiver -func (sf *CommitSubmoduleFile) RefID() string { - if sf == nil { - return "" - } - return sf.refID -} - // SubmoduleWebLinkTree tries to make the submodule's tree link in its own repo, it also works on "nil" receiver -func (sf *CommitSubmoduleFile) SubmoduleWebLinkTree(ctx context.Context, refCommitID string) *SubmoduleWebLink { - return sf.getWebLinkInTargetRepo(ctx, "/tree/"+refCommitID) +func (sf *CommitSubmoduleFile) SubmoduleWebLinkTree(ctx context.Context, optCommitID ...string) *SubmoduleWebLink { + if sf == nil { + return nil + } + return sf.getWebLinkInTargetRepo(ctx, "/tree/"+util.OptionalArg(optCommitID, sf.refID)) } // SubmoduleWebLinkCompare tries to make the submodule's compare link in its own repo, it also works on "nil" receiver diff --git a/modules/git/commit_submodule_file_test.go b/modules/git/commit_submodule_file_test.go index 7809ac9b6a..fc2ff39bda 100644 --- a/modules/git/commit_submodule_file_test.go +++ b/modules/git/commit_submodule_file_test.go @@ -10,12 +10,12 @@ import ( ) func TestCommitSubmoduleLink(t *testing.T) { - assert.Nil(t, (*CommitSubmoduleFile)(nil).SubmoduleWebLinkTree(t.Context(), "")) + assert.Nil(t, (*CommitSubmoduleFile)(nil).SubmoduleWebLinkTree(t.Context())) assert.Nil(t, (*CommitSubmoduleFile)(nil).SubmoduleWebLinkCompare(t.Context(), "", "")) t.Run("GitHubRepo", func(t *testing.T) { sf := NewCommitSubmoduleFile("/any/repo-link", "full-path", "git@github.com:user/repo.git", "aaaa") - wl := sf.SubmoduleWebLinkTree(t.Context(), sf.RefID()) + wl := sf.SubmoduleWebLinkTree(t.Context()) assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink) assert.Equal(t, "https://github.com/user/repo/tree/aaaa", wl.CommitWebLink) @@ -26,7 +26,7 @@ func TestCommitSubmoduleLink(t *testing.T) { t.Run("RelativePath", func(t *testing.T) { sf := NewCommitSubmoduleFile("/subpath/any/repo-home-link", "full-path", "../../user/repo", "aaaa") - wl := sf.SubmoduleWebLinkTree(t.Context(), sf.RefID()) + wl := sf.SubmoduleWebLinkTree(t.Context()) assert.Equal(t, "/subpath/user/repo", wl.RepoWebLink) assert.Equal(t, "/subpath/user/repo/tree/aaaa", wl.CommitWebLink) diff --git a/services/gitdiff/submodule.go b/services/gitdiff/submodule.go index 1bc83ebf63..4347743e3d 100644 --- a/services/gitdiff/submodule.go +++ b/services/gitdiff/submodule.go @@ -58,7 +58,7 @@ func (si *SubmoduleDiffInfo) CompareRefIDLinkHTML(ctx context.Context) template. } func (si *SubmoduleDiffInfo) SubmoduleRepoLinkHTML(ctx context.Context) template.HTML { - webLink := si.SubmoduleFile.SubmoduleWebLinkTree(ctx, si.SubmoduleFile.RefID()) + webLink := si.SubmoduleFile.SubmoduleWebLinkTree(ctx) if webLink == nil { return htmlutil.HTMLFormat("%s", si.SubmoduleName) } diff --git a/services/repository/files/tree.go b/services/repository/files/tree.go index f8f77c6735..27b4cbf56d 100644 --- a/services/repository/files/tree.go +++ b/services/repository/files/tree.go @@ -173,7 +173,7 @@ func newTreeViewNodeFromEntry(ctx context.Context, repoLink string, renderedIcon log.Error("GetSubModule: %v", err) } else if subModule != nil { submoduleFile := git.NewCommitSubmoduleFile(repoLink, node.FullPath, subModule.URL, entry.ID.String()) - webLink := submoduleFile.SubmoduleWebLinkTree(ctx, submoduleFile.RefID()) + webLink := submoduleFile.SubmoduleWebLinkTree(ctx) node.SubmoduleURL = webLink.CommitWebLink } } diff --git a/templates/repo/view_list.tmpl b/templates/repo/view_list.tmpl index 6fe1ae134b..145494aa1a 100644 --- a/templates/repo/view_list.tmpl +++ b/templates/repo/view_list.tmpl @@ -18,7 +18,7 @@