@@ -28,7 +28,6 @@ import (
28
28
"code.gitea.io/gitea/modules/gitrepo"
29
29
"code.gitea.io/gitea/modules/globallock"
30
30
"code.gitea.io/gitea/modules/graceful"
31
- "code.gitea.io/gitea/modules/json"
32
31
"code.gitea.io/gitea/modules/log"
33
32
repo_module "code.gitea.io/gitea/modules/repository"
34
33
"code.gitea.io/gitea/modules/setting"
@@ -142,37 +141,9 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error {
142
141
return err
143
142
}
144
143
145
- compareInfo , err := baseGitRepo .GetCompareInfo (pr .BaseRepo .RepoPath (),
146
- git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName (), false , false )
147
- if err != nil {
144
+ if _ , err := CreatePushPullComment (ctx , issue .Poster , pr , git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName (), false ); err != nil {
148
145
return err
149
146
}
150
- // It maybe an empty pull request. Only non-empty pull request need to create push comment
151
- if len (compareInfo .Commits ) > 0 {
152
- data := issues_model.PushActionContent {IsForcePush : false }
153
- data .CommitIDs = make ([]string , 0 , len (compareInfo .Commits ))
154
- for i := len (compareInfo .Commits ) - 1 ; i >= 0 ; i -- {
155
- data .CommitIDs = append (data .CommitIDs , compareInfo .Commits [i ].ID .String ())
156
- }
157
-
158
- dataJSON , err := json .Marshal (data )
159
- if err != nil {
160
- return err
161
- }
162
-
163
- ops := & issues_model.CreateCommentOptions {
164
- Type : issues_model .CommentTypePullRequestPush ,
165
- Doer : issue .Poster ,
166
- Repo : repo ,
167
- Issue : pr .Issue ,
168
- IsForcePush : false ,
169
- Content : string (dataJSON ),
170
- }
171
-
172
- if _ , err = issues_model .CreateComment (ctx , ops ); err != nil {
173
- return err
174
- }
175
- }
176
147
177
148
if ! pr .IsWorkInProgress (ctx ) {
178
149
reviewNotifiers , err = issue_service .PullRequestCodeOwnersReview (ctx , pr )
@@ -335,24 +306,42 @@ func ChangeTargetBranch(ctx context.Context, pr *issues_model.PullRequest, doer
335
306
pr .CommitsAhead = divergence .Ahead
336
307
pr .CommitsBehind = divergence .Behind
337
308
338
- if err := pr .UpdateColsIfNotMerged (ctx , "merge_base" , "status" , "conflicted_files" , "changed_protected_files" , "base_branch" , "commits_ahead" , "commits_behind" ); err != nil {
309
+ // add first push codes comment
310
+ baseGitRepo , err := gitrepo .OpenRepository (ctx , pr .BaseRepo )
311
+ if err != nil {
339
312
return err
340
313
}
314
+ defer baseGitRepo .Close ()
341
315
342
- // Create comment
343
- options := & issues_model.CreateCommentOptions {
344
- Type : issues_model .CommentTypeChangeTargetBranch ,
345
- Doer : doer ,
346
- Repo : pr .Issue .Repo ,
347
- Issue : pr .Issue ,
348
- OldRef : oldBranch ,
349
- NewRef : targetBranch ,
350
- }
351
- if _ , err = issues_model .CreateComment (ctx , options ); err != nil {
352
- return fmt .Errorf ("CreateChangeTargetBranchComment: %w" , err )
353
- }
316
+ return db .WithTx (ctx , func (ctx context.Context ) error {
317
+ if err := pr .UpdateColsIfNotMerged (ctx , "merge_base" , "status" , "conflicted_files" , "changed_protected_files" , "base_branch" , "commits_ahead" , "commits_behind" ); err != nil {
318
+ return err
319
+ }
354
320
355
- return nil
321
+ // Create comment
322
+ options := & issues_model.CreateCommentOptions {
323
+ Type : issues_model .CommentTypeChangeTargetBranch ,
324
+ Doer : doer ,
325
+ Repo : pr .Issue .Repo ,
326
+ Issue : pr .Issue ,
327
+ OldRef : oldBranch ,
328
+ NewRef : targetBranch ,
329
+ }
330
+ if _ , err = issues_model .CreateComment (ctx , options ); err != nil {
331
+ return fmt .Errorf ("CreateChangeTargetBranchComment: %w" , err )
332
+ }
333
+
334
+ // Delete all old push comments and insert new push comments
335
+ if _ , err := db .GetEngine (ctx ).Where ("issue_id = ?" , pr .IssueID ).
336
+ And ("type = ?" , issues_model .CommentTypePullRequestPush ).
337
+ NoAutoCondition ().
338
+ Delete (new (issues_model.Comment )); err != nil {
339
+ return err
340
+ }
341
+
342
+ _ , err = CreatePushPullComment (ctx , doer , pr , git .BranchPrefix + pr .BaseBranch , pr .GetGitRefName (), false )
343
+ return err
344
+ })
356
345
}
357
346
358
347
func checkForInvalidation (ctx context.Context , requests issues_model.PullRequestList , repoID int64 , doer * user_model.User , branch string ) error {
@@ -413,7 +402,7 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
413
402
}
414
403
415
404
StartPullRequestCheckImmediately (ctx , pr )
416
- comment , err := CreatePushPullComment (ctx , opts .Doer , pr , opts .OldCommitID , opts .NewCommitID )
405
+ comment , err := CreatePushPullComment (ctx , opts .Doer , pr , opts .OldCommitID , opts .NewCommitID , opts . IsForcePush )
417
406
if err == nil && comment != nil {
418
407
notify_service .PullRequestPushCommits (ctx , opts .Doer , pr , comment )
419
408
}
0 commit comments