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.

[gitea] week 2025-03 cherry pick (gitea/main -> forgejo) (#6539)

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6539
Reviewed-by: Gusted <gusted@noreply.codeberg.org>

+22 -8
+3
models/issues/issue.go
··· 268 268 IssueID: issue.ID, 269 269 Type: tp, 270 270 }) 271 + for _, comment := range issue.Comments { 272 + comment.Issue = issue 273 + } 271 274 return err 272 275 } 273 276
+10
modules/git/remote.go
··· 5 5 6 6 import ( 7 7 "context" 8 + "strings" 8 9 9 10 giturl "code.gitea.io/gitea/modules/git/url" 10 11 ) ··· 37 38 } 38 39 return giturl.Parse(addr) 39 40 } 41 + 42 + // IsRemoteNotExistError checks the prefix of the error message to see whether a remote does not exist. 43 + func IsRemoteNotExistError(err error) bool { 44 + // see: https://github.com/go-gitea/gitea/issues/32889#issuecomment-2571848216 45 + // Should not add space in the end, sometimes git will add a `:` 46 + prefix1 := "exit status 128 - fatal: No such remote" // git < 2.30 47 + prefix2 := "exit status 2 - error: No such remote" // git >= 2.30 48 + return strings.HasPrefix(err.Error(), prefix1) || strings.HasPrefix(err.Error(), prefix2) 49 + }
+4 -4
services/mirror/mirror_pull.go
··· 40 40 repoPath := m.GetRepository(ctx).RepoPath() 41 41 // Remove old remote 42 42 _, _, err = git.NewCommand(ctx, "remote", "rm").AddDynamicArguments(remoteName).RunStdString(&git.RunOpts{Dir: repoPath}) 43 - if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") { 43 + if err != nil && !git.IsRemoteNotExistError(err) { 44 44 return err 45 45 } 46 46 ··· 51 51 cmd.SetDescription(fmt.Sprintf("remote add %s --mirror=fetch %s [repo_path: %s]", remoteName, addr, repoPath)) 52 52 } 53 53 _, _, err = cmd.RunStdString(&git.RunOpts{Dir: repoPath}) 54 - if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") { 54 + if err != nil && !git.IsRemoteNotExistError(err) { 55 55 return err 56 56 } 57 57 ··· 60 60 wikiRemotePath := repo_module.WikiRemoteURL(ctx, addr) 61 61 // Remove old remote of wiki 62 62 _, _, err = git.NewCommand(ctx, "remote", "rm").AddDynamicArguments(remoteName).RunStdString(&git.RunOpts{Dir: wikiPath}) 63 - if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") { 63 + if err != nil && !git.IsRemoteNotExistError(err) { 64 64 return err 65 65 } 66 66 ··· 71 71 cmd.SetDescription(fmt.Sprintf("remote add %s --mirror=fetch %s [repo_path: %s]", remoteName, wikiRemotePath, wikiPath)) 72 72 } 73 73 _, _, err = cmd.RunStdString(&git.RunOpts{Dir: wikiPath}) 74 - if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") { 74 + if err != nil && !git.IsRemoteNotExistError(err) { 75 75 return err 76 76 } 77 77 }
+3 -4
services/repository/migrate.go
··· 8 8 "errors" 9 9 "fmt" 10 10 "net/http" 11 - "strings" 12 11 "time" 13 12 14 13 "code.gitea.io/gitea/models/db" ··· 253 252 func cleanUpMigrateGitConfig(ctx context.Context, repoPath string) error { 254 253 cmd := git.NewCommand(ctx, "remote", "rm", "origin") 255 254 // if the origin does not exist 256 - _, stderr, err := cmd.RunStdString(&git.RunOpts{ 255 + _, _, err := cmd.RunStdString(&git.RunOpts{ 257 256 Dir: repoPath, 258 257 }) 259 - if err != nil && !strings.HasPrefix(stderr, "fatal: No such remote") { 258 + if err != nil && !git.IsRemoteNotExistError(err) { 260 259 return err 261 260 } 262 261 return nil ··· 275 274 } 276 275 277 276 _, _, err := git.NewCommand(ctx, "remote", "rm", "origin").RunStdString(&git.RunOpts{Dir: repoPath}) 278 - if err != nil && !strings.HasPrefix(err.Error(), "exit status 128 - fatal: No such remote ") { 277 + if err != nil && !git.IsRemoteNotExistError(err) { 279 278 return repo, fmt.Errorf("CleanUpMigrateInfo: %w", err) 280 279 } 281 280
+2
tests/fuzz/fuzz_test.go
··· 27 27 28 28 func FuzzMarkdownRenderRaw(f *testing.F) { 29 29 f.Fuzz(func(t *testing.T, data []byte) { 30 + setting.IsInTesting = true 30 31 setting.AppURL = "http://localhost:3000/" 31 32 markdown.RenderRaw(&renderContext, bytes.NewReader(data), io.Discard) 32 33 }) ··· 34 35 35 36 func FuzzMarkupPostProcess(f *testing.F) { 36 37 f.Fuzz(func(t *testing.T, data []byte) { 38 + setting.IsInTesting = true 37 39 setting.AppURL = "http://localhost:3000/" 38 40 markup.PostProcess(&renderContext, bytes.NewReader(data), io.Discard) 39 41 })