Skip to content

Commit 21e2f94

Browse files
committed
fix
1 parent f76938d commit 21e2f94

File tree

5 files changed

+28
-35
lines changed

5 files changed

+28
-35
lines changed

models/issues/pull.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,6 @@ func (pr *PullRequest) GetGitHeadRefName() string {
417417
return fmt.Sprintf("%s%d/head", git.PullPrefix, pr.Index)
418418
}
419419

420-
func (pr *PullRequest) GetGitHeadBranchRefName() string {
421-
return fmt.Sprintf("%s%s", git.BranchPrefix, pr.HeadBranch)
422-
}
423-
424420
// GetReviewCommentsCount returns the number of review comments made on the diff of a PR review (not including comments on commits or issues in a PR)
425421
func (pr *PullRequest) GetReviewCommentsCount(ctx context.Context) int {
426422
opts := FindCommentsOptions{

routers/web/repo/issue_comment.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ func NewComment(ctx *context.Context) {
124124
ctx.JSONError("The origin branch is delete, cannot reopen.")
125125
return
126126
}
127-
headBranchRef := pull.GetGitHeadBranchRefName()
128-
headBranchCommitID, err := git.GetFullCommitID(ctx, pull.HeadRepo.RepoPath(), headBranchRef)
127+
headBranchRef := git.RefNameFromBranch(pull.HeadBranch)
128+
headBranchCommitID, err := git.GetFullCommitID(ctx, pull.HeadRepo.RepoPath(), headBranchRef.String())
129129
if err != nil {
130130
ctx.ServerError("Get head commit Id of head branch fail", err)
131131
return

services/pull/pull.go

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error {
128128
}
129129

130130
// Update Commit Divergence
131-
err = UpdateCommitDivergence(ctx, pr)
131+
err = syncCommitDivergence(ctx, pr)
132132
if err != nil {
133133
return err
134134
}
@@ -286,19 +286,18 @@ func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer
286286
pr.Status = issues_model.PullRequestStatusMergeable
287287
}
288288

289-
// Update Commit Divergence
290-
divergence, err := GetDiverging(ctx, pr)
291-
if err != nil {
292-
return err
293-
}
294-
pr.CommitsAhead = divergence.Ahead
295-
pr.CommitsBehind = divergence.Behind
296-
289+
// add first push codes comment
297290
return db.WithTx(ctx, func(ctx context.Context) error {
298-
if err := pr.UpdateColsIfNotMerged(ctx, "merge_base", "status", "conflicted_files", "changed_protected_files", "base_branch", "commits_ahead", "commits_behind"); err != nil {
291+
if err := pr.UpdateColsIfNotMerged(ctx, "merge_base", "status", "conflicted_files", "changed_protected_files", "base_branch"); err != nil {
299292
return err
300293
}
301294

295+
if !pr.HasMerged {
296+
if err = syncCommitDivergence(ctx, pr); err != nil {
297+
return fmt.Errorf("syncCommitDivergence: %w", err)
298+
}
299+
}
300+
302301
// Create comment
303302
options := &issues_model.CreateCommentOptions{
304303
Type: issues_model.CommentTypeChangeTargetBranch,
@@ -426,8 +425,8 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
426425
if err := issues_model.MarkReviewsAsNotStale(ctx, pr.IssueID, opts.NewCommitID); err != nil {
427426
log.Error("MarkReviewsAsNotStale: %v", err)
428427
}
429-
if err = UpdateCommitDivergence(ctx, pr); err != nil {
430-
log.Error("UpdateCommitDivergence: %v", err)
428+
if err = syncCommitDivergence(ctx, pr); err != nil {
429+
log.Error("syncCommitDivergence: %v", err)
431430
}
432431
}
433432

@@ -461,12 +460,12 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
461460
}
462461
for _, pr := range prs {
463462
pr.BaseRepo = baseRepo // avoid loading again
464-
err = UpdateCommitDivergence(ctx, pr)
463+
err = syncCommitDivergence(ctx, pr)
465464
if err != nil {
466465
if errors.Is(err, util.ErrNotExist) {
467466
log.Warn("Cannot test PR %s/%d with base=%s head=%s: no longer exists", pr.BaseRepo.FullName(), pr.IssueID, pr.BaseBranch, pr.HeadBranch)
468467
} else {
469-
log.Error("UpdateCommitDivergence: %v", err)
468+
log.Error("syncCommitDivergence: %v", err)
470469
}
471470
continue
472471
}

services/pull/update.go

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -176,19 +176,11 @@ func IsUserAllowedToUpdate(ctx context.Context, pull *issues_model.PullRequest,
176176
return mergeAllowed, rebaseAllowed, nil
177177
}
178178

179-
// GetDiverging determines how many commits a PR is ahead or behind the PR base branch
180-
func GetDiverging(ctx context.Context, pr *issues_model.PullRequest) (*gitrepo.DivergeObject, error) {
181-
log.Trace("GetDiverging[%-v]: compare commits", pr)
182-
179+
func syncCommitDivergence(ctx context.Context, pr *issues_model.PullRequest) error {
183180
if err := pr.LoadBaseRepo(ctx); err != nil {
184-
return nil, err
181+
return err
185182
}
186-
187-
return gitrepo.GetDivergingCommits(ctx, pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
188-
}
189-
190-
func UpdateCommitDivergence(ctx context.Context, pr *issues_model.PullRequest) error {
191-
divergence, err := GetDiverging(ctx, pr)
183+
divergence, err := gitrepo.GetDivergingCommits(ctx, pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
192184
if err != nil {
193185
return err
194186
}

tests/integration/pull_update_test.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
issues_model "code.gitea.io/gitea/models/issues"
1515
"code.gitea.io/gitea/models/unittest"
1616
user_model "code.gitea.io/gitea/models/user"
17+
"code.gitea.io/gitea/modules/gitrepo"
1718
pull_service "code.gitea.io/gitea/services/pull"
1819
repo_service "code.gitea.io/gitea/services/repository"
1920
files_service "code.gitea.io/gitea/services/repository/files"
@@ -29,10 +30,12 @@ func TestAPIPullUpdate(t *testing.T) {
2930
pr := createOutdatedPR(t, user, org26)
3031

3132
// Test GetDiverging
32-
diffCount, err := pull_service.GetDiverging(t.Context(), pr)
33+
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
3334
assert.NoError(t, err)
3435
assert.Equal(t, 1, diffCount.Behind)
3536
assert.Equal(t, 1, diffCount.Ahead)
37+
assert.Equal(t, diffCount.Behind, pr.CommitsBehind)
38+
assert.Equal(t, diffCount.Ahead, pr.CommitsAhead)
3639
assert.NoError(t, pr.LoadBaseRepo(t.Context()))
3740
assert.NoError(t, pr.LoadIssue(t.Context()))
3841

@@ -43,10 +46,13 @@ func TestAPIPullUpdate(t *testing.T) {
4346
session.MakeRequest(t, req, http.StatusOK)
4447

4548
// Test GetDiverging after update
46-
diffCount, err = pull_service.GetDiverging(t.Context(), pr)
49+
diffCount, err = gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
4750
assert.NoError(t, err)
4851
assert.Equal(t, 0, diffCount.Behind)
4952
assert.Equal(t, 2, diffCount.Ahead)
53+
pr = unittest.AssertExistsAndLoadBean(t, &issues_model.PullRequest{ID: pr.ID})
54+
assert.Equal(t, diffCount.Behind, pr.CommitsBehind)
55+
assert.Equal(t, diffCount.Ahead, pr.CommitsAhead)
5056
})
5157
}
5258

@@ -58,7 +64,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
5864
pr := createOutdatedPR(t, user, org26)
5965

6066
// Test GetDiverging
61-
diffCount, err := pull_service.GetDiverging(t.Context(), pr)
67+
diffCount, err := gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
6268
assert.NoError(t, err)
6369
assert.Equal(t, 1, diffCount.Behind)
6470
assert.Equal(t, 1, diffCount.Ahead)
@@ -72,7 +78,7 @@ func TestAPIPullUpdateByRebase(t *testing.T) {
7278
session.MakeRequest(t, req, http.StatusOK)
7379

7480
// Test GetDiverging after update
75-
diffCount, err = pull_service.GetDiverging(t.Context(), pr)
81+
diffCount, err = gitrepo.GetDivergingCommits(t.Context(), pr.BaseRepo, pr.BaseBranch, pr.GetGitHeadRefName())
7682
assert.NoError(t, err)
7783
assert.Equal(t, 0, diffCount.Behind)
7884
assert.Equal(t, 1, diffCount.Ahead)

0 commit comments

Comments
 (0)