loading up the forgejo repo on tangled to test page performance
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request '[gitea] week 2024-37 cherry pick (gitea/main -> forgejo)' (#5263) from algernon/wcp/2024-37 into forgejo

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5263
Reviewed-by: 0ko <0ko@noreply.codeberg.org>

+44 -61
+1 -1
modules/activitypub/user_settings_test.go
··· 10 10 "code.gitea.io/gitea/models/unittest" 11 11 user_model "code.gitea.io/gitea/models/user" 12 12 13 - _ "code.gitea.io/gitea/models" // https://discourse.gitea.io/t/testfixtures-could-not-clean-table-access-no-such-table-access/4137/4 13 + _ "code.gitea.io/gitea/models" // https://forum.gitea.com/t/testfixtures-could-not-clean-table-access-no-such-table-access/4137/4 14 14 15 15 "github.com/stretchr/testify/assert" 16 16 "github.com/stretchr/testify/require"
+31 -7
modules/indexer/code/git.go
··· 113 113 var changes internal.RepoChanges 114 114 var err error 115 115 updatedFilenames := make([]string, 0, 10) 116 - for _, line := range strings.Split(stdout, "\n") { 116 + 117 + updateChanges := func() error { 118 + cmd := git.NewCommand(ctx, "ls-tree", "--full-tree", "-l").AddDynamicArguments(revision). 119 + AddDashesAndList(updatedFilenames...) 120 + lsTreeStdout, _, err := cmd.RunStdBytes(&git.RunOpts{Dir: repo.RepoPath()}) 121 + if err != nil { 122 + return err 123 + } 124 + 125 + updates, err1 := parseGitLsTreeOutput(lsTreeStdout) 126 + if err1 != nil { 127 + return err1 128 + } 129 + changes.Updates = append(changes.Updates, updates...) 130 + return nil 131 + } 132 + lines := strings.Split(stdout, "\n") 133 + for _, line := range lines { 117 134 line = strings.TrimSpace(line) 118 135 if len(line) == 0 { 119 136 continue ··· 161 178 default: 162 179 log.Warn("Unrecognized status: %c (line=%s)", status, line) 163 180 } 181 + 182 + // According to https://learn.microsoft.com/en-us/troubleshoot/windows-client/shell-experience/command-line-string-limitation#more-information 183 + // the command line length should less than 8191 characters, assume filepath is 256, then 8191/256 = 31, so we use 30 184 + if len(updatedFilenames) >= 30 { 185 + if err := updateChanges(); err != nil { 186 + return nil, err 187 + } 188 + updatedFilenames = updatedFilenames[0:0] 189 + } 164 190 } 165 191 166 - cmd := git.NewCommand(ctx, "ls-tree", "--full-tree", "-l").AddDynamicArguments(revision). 167 - AddDashesAndList(updatedFilenames...) 168 - lsTreeStdout, _, err := cmd.RunStdBytes(&git.RunOpts{Dir: repo.RepoPath()}) 169 - if err != nil { 170 - return nil, err 192 + if len(updatedFilenames) > 0 { 193 + if err := updateChanges(); err != nil { 194 + return nil, err 195 + } 171 196 } 172 197 173 - changes.Updates, err = parseGitLsTreeOutput(lsTreeStdout) 174 198 return &changes, err 175 199 }
+1 -1
routers/api/v1/repo/commits.go
··· 195 195 // get commit specified by sha 196 196 baseCommit, err = ctx.Repo.GitRepo.GetCommit(sha) 197 197 if err != nil { 198 - ctx.Error(http.StatusInternalServerError, "GetCommit", err) 198 + ctx.NotFoundOrServerError("GetCommit", git.IsErrNotExist, err) 199 199 return 200 200 } 201 201 }
+1 -2
routers/web/explore/repo.go
··· 6 6 import ( 7 7 "fmt" 8 8 "net/http" 9 - "strings" 10 9 11 10 "code.gitea.io/gitea/models/db" 12 11 repo_model "code.gitea.io/gitea/models/repo" ··· 58 57 orderBy db.SearchOrderBy 59 58 ) 60 59 61 - sortOrder := strings.ToLower(ctx.FormString("sort")) 60 + sortOrder := ctx.FormString("sort") 62 61 if sortOrder == "" { 63 62 sortOrder = setting.UI.ExploreDefaultSort 64 63 }
+5 -25
routers/web/org/home.go
··· 48 48 ctx.Data["Title"] = org.DisplayName() 49 49 50 50 var orderBy db.SearchOrderBy 51 - ctx.Data["SortType"] = ctx.FormString("sort") 52 - switch ctx.FormString("sort") { 53 - case "newest": 54 - orderBy = db.SearchOrderByNewest 55 - case "oldest": 56 - orderBy = db.SearchOrderByOldest 57 - case "recentupdate": 58 - orderBy = db.SearchOrderByRecentUpdated 59 - case "leastupdate": 60 - orderBy = db.SearchOrderByLeastUpdated 61 - case "reversealphabetically": 62 - orderBy = db.SearchOrderByAlphabeticallyReverse 63 - case "alphabetically": 64 - orderBy = db.SearchOrderByAlphabetically 65 - case "moststars": 66 - orderBy = db.SearchOrderByStarsReverse 67 - case "feweststars": 68 - orderBy = db.SearchOrderByStars 69 - case "mostforks": 70 - orderBy = db.SearchOrderByForksReverse 71 - case "fewestforks": 72 - orderBy = db.SearchOrderByForks 73 - default: 74 - ctx.Data["SortType"] = "recentupdate" 75 - orderBy = db.SearchOrderByRecentUpdated 51 + sortOrder := ctx.FormString("sort") 52 + if _, ok := repo_model.OrderByFlatMap[sortOrder]; !ok { 53 + sortOrder = setting.UI.ExploreDefaultSort // TODO: add new default sort order for org home? 76 54 } 55 + ctx.Data["SortType"] = sortOrder 56 + orderBy = repo_model.OrderByFlatMap[sortOrder] 77 57 78 58 keyword := ctx.FormTrim("q") 79 59 ctx.Data["Keyword"] = keyword
+5 -25
routers/web/user/profile.go
··· 112 112 orderBy db.SearchOrderBy 113 113 ) 114 114 115 - ctx.Data["SortType"] = ctx.FormString("sort") 116 - switch ctx.FormString("sort") { 117 - case "newest": 118 - orderBy = db.SearchOrderByNewest 119 - case "oldest": 120 - orderBy = db.SearchOrderByOldest 121 - case "recentupdate": 122 - orderBy = db.SearchOrderByRecentUpdated 123 - case "leastupdate": 124 - orderBy = db.SearchOrderByLeastUpdated 125 - case "reversealphabetically": 126 - orderBy = db.SearchOrderByAlphabeticallyReverse 127 - case "alphabetically": 128 - orderBy = db.SearchOrderByAlphabetically 129 - case "moststars": 130 - orderBy = db.SearchOrderByStarsReverse 131 - case "feweststars": 132 - orderBy = db.SearchOrderByStars 133 - case "mostforks": 134 - orderBy = db.SearchOrderByForksReverse 135 - case "fewestforks": 136 - orderBy = db.SearchOrderByForks 137 - default: 138 - ctx.Data["SortType"] = "recentupdate" 139 - orderBy = db.SearchOrderByRecentUpdated 115 + sortOrder := ctx.FormString("sort") 116 + if _, ok := repo_model.OrderByFlatMap[sortOrder]; !ok { 117 + sortOrder = setting.UI.ExploreDefaultSort // TODO: add new default sort order for user home? 140 118 } 119 + ctx.Data["SortType"] = sortOrder 120 + orderBy = repo_model.OrderByFlatMap[sortOrder] 141 121 142 122 keyword := ctx.FormTrim("q") 143 123 ctx.Data["Keyword"] = keyword