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 'fix: Run full PR checks on agit push' (#4885) from viceice/forgejo:fix/agit/force-push into forgejo

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

Otto 01affa09 69eb8f32

+63 -37
+9
services/agit/agit.go
··· 211 211 return nil, fmt.Errorf("failed to update the reference of the pull request: %w", err) 212 212 } 213 213 214 + // TODO: refactor to unify with `pull_service.AddTestPullRequestTask` 215 + 214 216 // Add the pull request to the merge conflicting checker queue. 215 217 pull_service.AddToTaskQueue(ctx, pr) 216 218 ··· 218 220 return nil, fmt.Errorf("failed to load the issue of the pull request: %w", err) 219 221 } 220 222 223 + // Validate pull request. 224 + pull_service.ValidatePullRequest(ctx, pr, oldCommitID, opts.NewCommitIDs[i], pusher) 225 + 226 + // TODO: call `InvalidateCodeComments` 227 + 221 228 // Create and notify about the new commits. 222 229 comment, err := pull_service.CreatePushPullComment(ctx, pusher, pr, oldCommitID, opts.NewCommitIDs[i]) 223 230 if err == nil && comment != nil { 224 231 notify_service.PullRequestPushCommits(ctx, pusher, pr, comment) 225 232 } 226 233 notify_service.PullRequestSynchronized(ctx, pusher, pr) 234 + 235 + // this always seems to be false 227 236 isForcePush := comment != nil && comment.IsForcePush 228 237 229 238 results = append(results, private.HookProcReceiveRefResult{
+41 -37
services/pull/pull.go
··· 356 356 } 357 357 if err == nil { 358 358 for _, pr := range prs { 359 - objectFormat := git.ObjectFormatFromName(pr.BaseRepo.ObjectFormatName) 360 - if newCommitID != "" && newCommitID != objectFormat.EmptyObjectID().String() { 361 - changed, err := checkIfPRContentChanged(ctx, pr, oldCommitID, newCommitID) 362 - if err != nil { 363 - log.Error("checkIfPRContentChanged: %v", err) 364 - } 365 - if changed { 366 - // Mark old reviews as stale if diff to mergebase has changed 367 - if err := issues_model.MarkReviewsAsStale(ctx, pr.IssueID); err != nil { 368 - log.Error("MarkReviewsAsStale: %v", err) 369 - } 370 - 371 - // dismiss all approval reviews if protected branch rule item enabled. 372 - pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch) 373 - if err != nil { 374 - log.Error("GetFirstMatchProtectedBranchRule: %v", err) 375 - } 376 - if pb != nil && pb.DismissStaleApprovals { 377 - if err := DismissApprovalReviews(ctx, doer, pr); err != nil { 378 - log.Error("DismissApprovalReviews: %v", err) 379 - } 380 - } 381 - } 382 - if err := issues_model.MarkReviewsAsNotStale(ctx, pr.IssueID, newCommitID); err != nil { 383 - log.Error("MarkReviewsAsNotStale: %v", err) 384 - } 385 - divergence, err := GetDiverging(ctx, pr) 386 - if err != nil { 387 - log.Error("GetDiverging: %v", err) 388 - } else { 389 - err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind) 390 - if err != nil { 391 - log.Error("UpdateCommitDivergence: %v", err) 392 - } 393 - } 394 - } 395 - 359 + ValidatePullRequest(ctx, pr, newCommitID, oldCommitID, doer) 396 360 notify_service.PullRequestSynchronized(ctx, doer, pr) 397 361 } 398 362 } ··· 419 383 } 420 384 } 421 385 AddToTaskQueue(ctx, pr) 386 + } 387 + } 388 + 389 + // Mark old reviews as stale if diff to mergebase has changed. 390 + // Dismiss all approval reviews if protected branch rule item enabled. 391 + // Update commit divergence. 392 + func ValidatePullRequest(ctx context.Context, pr *issues_model.PullRequest, newCommitID, oldCommitID string, doer *user_model.User) { 393 + objectFormat := git.ObjectFormatFromName(pr.BaseRepo.ObjectFormatName) 394 + if newCommitID != "" && newCommitID != objectFormat.EmptyObjectID().String() { 395 + changed, err := checkIfPRContentChanged(ctx, pr, oldCommitID, newCommitID) 396 + if err != nil { 397 + log.Error("checkIfPRContentChanged: %v", err) 398 + } 399 + if changed { 400 + if err := issues_model.MarkReviewsAsStale(ctx, pr.IssueID); err != nil { 401 + log.Error("MarkReviewsAsStale: %v", err) 402 + } 403 + 404 + pb, err := git_model.GetFirstMatchProtectedBranchRule(ctx, pr.BaseRepoID, pr.BaseBranch) 405 + if err != nil { 406 + log.Error("GetFirstMatchProtectedBranchRule: %v", err) 407 + } 408 + if pb != nil && pb.DismissStaleApprovals { 409 + if err := DismissApprovalReviews(ctx, doer, pr); err != nil { 410 + log.Error("DismissApprovalReviews: %v", err) 411 + } 412 + } 413 + } 414 + if err := issues_model.MarkReviewsAsNotStale(ctx, pr.IssueID, newCommitID); err != nil { 415 + log.Error("MarkReviewsAsNotStale: %v", err) 416 + } 417 + divergence, err := GetDiverging(ctx, pr) 418 + if err != nil { 419 + log.Error("GetDiverging: %v", err) 420 + } else { 421 + err = pr.UpdateCommitDivergence(ctx, divergence.Ahead, divergence.Behind) 422 + if err != nil { 423 + log.Error("UpdateCommitDivergence: %v", err) 424 + } 425 + } 422 426 } 423 427 } 424 428
+13
tests/integration/git_test.go
··· 829 829 if !assert.NotEmpty(t, pr1) { 830 830 return 831 831 } 832 + assert.Equal(t, 1, pr1.CommitsAhead) 833 + assert.Equal(t, 0, pr1.CommitsBehind) 834 + 832 835 prMsg, err := doAPIGetPullRequest(*ctx, ctx.Username, ctx.Reponame, pr1.Index)(t) 833 836 require.NoError(t, err) 834 837 ··· 849 852 if !assert.NotEmpty(t, pr2) { 850 853 return 851 854 } 855 + assert.Equal(t, 1, pr2.CommitsAhead) 856 + assert.Equal(t, 0, pr2.CommitsBehind) 852 857 prMsg, err = doAPIGetPullRequest(*ctx, ctx.Username, ctx.Reponame, pr2.Index)(t) 853 858 require.NoError(t, err) 854 859 ··· 906 911 907 912 assert.False(t, prMsg.HasMerged) 908 913 assert.Equal(t, commit, prMsg.Head.Sha) 914 + 915 + pr1 = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ 916 + HeadRepoID: repo.ID, 917 + Flow: issues_model.PullRequestFlowAGit, 918 + Index: pr1.Index, 919 + }) 920 + assert.Equal(t, 2, pr1.CommitsAhead) 921 + assert.Equal(t, 0, pr1.CommitsBehind) 909 922 910 923 _, _, err = git.NewCommand(git.DefaultContext, "push", "origin").AddDynamicArguments("HEAD:refs/for/master/test/" + headBranch).RunStdString(&git.RunOpts{Dir: dstPath}) 911 924 require.NoError(t, err)