Skip to content

Commit 6e56355

Browse files
committed
fix
1 parent 091b3e6 commit 6e56355

File tree

2 files changed

+34
-22
lines changed

2 files changed

+34
-22
lines changed

modules/git/commit_submodule_file.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,17 @@ package git
66

77
import (
88
"context"
9+
"strings"
910

1011
giturl "code.gitea.io/gitea/modules/git/url"
1112
)
1213

1314
// CommitSubmoduleFile represents a file with submodule type.
1415
type CommitSubmoduleFile struct {
15-
refURL string
16-
parsedURL *giturl.RepositoryURL
17-
parsed bool
18-
refID string
19-
repoLink string
16+
refURL string
17+
parsed bool
18+
refID string
19+
repoLink string
2020
}
2121

2222
// NewCommitSubmoduleFile create a new submodule file
@@ -35,12 +35,15 @@ func (sf *CommitSubmoduleFile) SubmoduleWebLink(ctx context.Context, optCommitID
3535
}
3636
if !sf.parsed {
3737
sf.parsed = true
38-
parsedURL, err := giturl.ParseRepositoryURL(ctx, sf.refURL)
39-
if err != nil {
40-
return nil
38+
if strings.HasPrefix(sf.refURL, "../") {
39+
sf.repoLink = sf.refURL
40+
} else {
41+
parsedURL, err := giturl.ParseRepositoryURL(ctx, sf.refURL)
42+
if err != nil {
43+
return nil
44+
}
45+
sf.repoLink = giturl.MakeRepositoryWebLink(parsedURL)
4146
}
42-
sf.parsedURL = parsedURL
43-
sf.repoLink = giturl.MakeRepositoryWebLink(sf.parsedURL)
4447
}
4548
var commitLink string
4649
if len(optCommitID) == 2 {

modules/git/commit_submodule_file_test.go

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,29 @@ import (
1010
)
1111

1212
func TestCommitSubmoduleLink(t *testing.T) {
13-
sf := NewCommitSubmoduleFile("[email protected]:user/repo.git", "aaaa")
13+
wl := (*CommitSubmoduleFile)(nil).SubmoduleWebLink(t.Context())
14+
assert.Nil(t, wl)
1415

15-
wl := sf.SubmoduleWebLink(t.Context())
16-
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
17-
assert.Equal(t, "https://github.com/user/repo/tree/aaaa", wl.CommitWebLink)
16+
t.Run("GitHubRepo", func(t *testing.T) {
17+
sf := NewCommitSubmoduleFile("[email protected]:user/repo.git", "aaaa")
1818

19-
wl = sf.SubmoduleWebLink(t.Context(), "1111")
20-
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
21-
assert.Equal(t, "https://github.com/user/repo/tree/1111", wl.CommitWebLink)
19+
wl := sf.SubmoduleWebLink(t.Context())
20+
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
21+
assert.Equal(t, "https://github.com/user/repo/tree/aaaa", wl.CommitWebLink)
2222

23-
wl = sf.SubmoduleWebLink(t.Context(), "1111", "2222")
24-
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
25-
assert.Equal(t, "https://github.com/user/repo/compare/1111...2222", wl.CommitWebLink)
23+
wl = sf.SubmoduleWebLink(t.Context(), "1111")
24+
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
25+
assert.Equal(t, "https://github.com/user/repo/tree/1111", wl.CommitWebLink)
2626

27-
wl = (*CommitSubmoduleFile)(nil).SubmoduleWebLink(t.Context())
28-
assert.Nil(t, wl)
27+
wl = sf.SubmoduleWebLink(t.Context(), "1111", "2222")
28+
assert.Equal(t, "https://github.com/user/repo", wl.RepoWebLink)
29+
assert.Equal(t, "https://github.com/user/repo/compare/1111...2222", wl.CommitWebLink)
30+
})
31+
32+
t.Run("RelativePath", func(t *testing.T) {
33+
sf := NewCommitSubmoduleFile("../../user/repo", "aaaa")
34+
wl := sf.SubmoduleWebLink(t.Context())
35+
assert.Equal(t, "../../user/repo", wl.RepoWebLink)
36+
assert.Equal(t, "../../user/repo/tree/aaaa", wl.CommitWebLink)
37+
})
2938
}

0 commit comments

Comments
 (0)