Skip to content

Commit 1839b15

Browse files
committed
fix
1 parent 3778538 commit 1839b15

File tree

6 files changed

+37
-15
lines changed

6 files changed

+37
-15
lines changed

modules/git/commit_submodule_file.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func (sf *CommitSubmoduleFile) getWebLinkInTargetRepo(ctx context.Context, moreL
4242
return nil
4343
}
4444
if strings.HasPrefix(sf.refURL, "../") {
45-
targetLink := path.Join(sf.repoLink, path.Dir(sf.fullPath), sf.refURL)
45+
targetLink := path.Join(sf.repoLink, sf.refURL)
4646
return &SubmoduleWebLink{RepoWebLink: targetLink, CommitWebLink: targetLink + moreLinkPath}
4747
}
4848
if !sf.parsed {

modules/git/commit_submodule_file_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func TestCommitSubmoduleLink(t *testing.T) {
3232
assert.Equal(t, "/subpath/user/repo", wl.RepoWebLink)
3333
assert.Equal(t, "/subpath/user/repo/tree/aaaa", wl.CommitWebLink)
3434

35-
sf = NewCommitSubmoduleFile("/subpath/any/repo-home-link", "dir/submodule", "../../../user/repo", "aaaa")
35+
sf = NewCommitSubmoduleFile("/subpath/any/repo-home-link", "dir/submodule", "../../user/repo", "aaaa")
3636
wl = sf.SubmoduleWebLinkCompare(t.Context(), "1111", "2222")
3737
assert.Equal(t, "/subpath/user/repo", wl.RepoWebLink)
3838
assert.Equal(t, "/subpath/user/repo/compare/1111...2222", wl.CommitWebLink)

routers/web/feed/branch.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,22 @@ import (
88
"time"
99

1010
"code.gitea.io/gitea/models/repo"
11+
"code.gitea.io/gitea/modules/git"
1112
"code.gitea.io/gitea/services/context"
1213

1314
"github.com/gorilla/feeds"
1415
)
1516

1617
// ShowBranchFeed shows tags and/or releases on the repo as RSS / Atom feed
1718
func ShowBranchFeed(ctx *context.Context, repo *repo.Repository, formatType string) {
18-
commits, err := ctx.Repo.Commit.CommitsByRange(0, 10, "", "", "")
19-
if err != nil {
20-
ctx.ServerError("ShowBranchFeed", err)
21-
return
19+
var commits []*git.Commit
20+
var err error
21+
if ctx.Repo.Commit != nil {
22+
commits, err = ctx.Repo.Commit.CommitsByRange(0, 10, "", "", "")
23+
if err != nil {
24+
ctx.ServerError("ShowBranchFeed", err)
25+
return
26+
}
2227
}
2328

2429
title := "Latest commits for branch " + ctx.Repo.BranchName

services/repository/files/tree.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ func GetTreeBySHA(ctx context.Context, repo *repo_model.Repository, gitRepo *git
9191
return tree, nil
9292
}
9393
var rangeEnd int
94-
if len(entries) > perPage {
94+
rangeEnd = min(rangeStart+perPage, len(entries))
95+
if rangeEnd < len(entries) {
9596
tree.Truncated = true
9697
}
97-
rangeEnd = min(rangeStart+perPage, len(entries))
9898
tree.Entries = make([]api.GitEntry, rangeEnd-rangeStart)
9999
for e := rangeStart; e < rangeEnd; e++ {
100100
i := e - rangeStart

tests/integration/api_repo_git_trees_test.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ import (
1111
repo_model "code.gitea.io/gitea/models/repo"
1212
"code.gitea.io/gitea/models/unittest"
1313
user_model "code.gitea.io/gitea/models/user"
14+
api "code.gitea.io/gitea/modules/structs"
1415
"code.gitea.io/gitea/tests"
16+
17+
"github.com/stretchr/testify/assert"
18+
"github.com/stretchr/testify/require"
1519
)
1620

1721
func TestAPIReposGitTrees(t *testing.T) {
@@ -32,13 +36,21 @@ func TestAPIReposGitTrees(t *testing.T) {
3236
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadRepository)
3337

3438
// Test a public repo that anyone can GET the tree of
35-
for _, ref := range [...]string{
36-
"master", // Branch
37-
repo1TreeSHA, // Tree SHA
38-
} {
39-
req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/git/trees/%s", user2.Name, repo1.Name, ref)
40-
MakeRequest(t, req, http.StatusOK)
41-
}
39+
_ = MakeRequest(t, NewRequest(t, "GET", "/api/v1/repos/user2/repo1/git/trees/master"), http.StatusOK)
40+
41+
resp := MakeRequest(t, NewRequest(t, "GET", "/api/v1/repos/user2/repo1/git/trees/62fb502a7172d4453f0322a2cc85bddffa57f07a?per_page=1"), http.StatusOK)
42+
var respGitTree api.GitTreeResponse
43+
DecodeJSON(t, resp, &respGitTree)
44+
assert.True(t, respGitTree.Truncated)
45+
require.Len(t, respGitTree.Entries, 1)
46+
assert.Equal(t, "File-WoW", respGitTree.Entries[0].Path)
47+
48+
resp = MakeRequest(t, NewRequest(t, "GET", "/api/v1/repos/user2/repo1/git/trees/62fb502a7172d4453f0322a2cc85bddffa57f07a?page=2&per_page=1"), http.StatusOK)
49+
respGitTree = api.GitTreeResponse{}
50+
DecodeJSON(t, resp, &respGitTree)
51+
assert.False(t, respGitTree.Truncated)
52+
require.Len(t, respGitTree.Entries, 1)
53+
assert.Equal(t, "README.md", respGitTree.Entries[0].Path)
4254

4355
// Tests a private repo with no token so will fail
4456
for _, ref := range [...]string{

tests/integration/empty_repo_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ func TestEmptyRepoAddFile(t *testing.T) {
7575
req = NewRequest(t, "GET", "/api/v1/repos/user30/empty/raw/main/README.md").AddTokenAuth(token)
7676
session.MakeRequest(t, req, http.StatusNotFound)
7777

78+
// test feed
79+
req = NewRequest(t, "GET", "/user30/empty/rss/branch/main/README.md").AddTokenAuth(token).SetHeader("Accept", "application/rss+xml")
80+
resp = session.MakeRequest(t, req, http.StatusOK)
81+
assert.Contains(t, resp.Body.String(), "</rss>")
82+
7883
// create a new file
7984
req = NewRequest(t, "GET", "/user30/empty/_new/"+setting.Repository.DefaultBranch)
8085
resp = session.MakeRequest(t, req, http.StatusOK)

0 commit comments

Comments
 (0)