@@ -425,10 +425,16 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
425425 for _ , pr := range prs {
426426 objectFormat := git .ObjectFormatFromName (pr .BaseRepo .ObjectFormatName )
427427 if opts .NewCommitID != "" && opts .NewCommitID != objectFormat .EmptyObjectID ().String () {
428- changed , err := checkIfPRContentChanged (ctx , pr , opts .OldCommitID , opts .NewCommitID )
428+ changed , newMergeBase , err := checkIfPRContentChanged (ctx , pr , opts .OldCommitID , opts .NewCommitID )
429429 if err != nil {
430430 log .Error ("checkIfPRContentChanged: %v" , err )
431431 }
432+ if newMergeBase != "" && pr .MergeBase != newMergeBase {
433+ pr .MergeBase = newMergeBase
434+ if err := pr .UpdateColsIfNotMerged (ctx , "merge_base" ); err != nil {
435+ log .Error ("Update merge base for %-v: %v" , pr , err )
436+ }
437+ }
432438 if changed {
433439 // Mark old reviews as stale if diff to mergebase has changed
434440 if err := issues_model .MarkReviewsAsStale (ctx , pr .IssueID ); err != nil {
@@ -502,30 +508,30 @@ func AddTestPullRequestTask(opts TestPullRequestOptions) {
502508
503509// checkIfPRContentChanged checks if diff to target branch has changed by push
504510// A commit can be considered to leave the PR untouched if the patch/diff with its merge base is unchanged
505- func checkIfPRContentChanged (ctx context.Context , pr * issues_model.PullRequest , oldCommitID , newCommitID string ) (hasChanged bool , err error ) {
511+ func checkIfPRContentChanged (ctx context.Context , pr * issues_model.PullRequest , oldCommitID , newCommitID string ) (hasChanged bool , mergeBase string , err error ) {
506512 prCtx , cancel , err := createTemporaryRepoForPR (ctx , pr )
507513 if err != nil {
508514 log .Error ("CreateTemporaryRepoForPR %-v: %v" , pr , err )
509- return false , err
515+ return false , "" , err
510516 }
511517 defer cancel ()
512518
513519 tmpRepo , err := git .OpenRepository (ctx , prCtx .tmpBasePath )
514520 if err != nil {
515- return false , fmt .Errorf ("OpenRepository: %w" , err )
521+ return false , "" , fmt .Errorf ("OpenRepository: %w" , err )
516522 }
517523 defer tmpRepo .Close ()
518524
519525 // Find the merge-base
520- _ , base , err : = tmpRepo .GetMergeBase ("" , "base" , "tracking" )
526+ mergeBase , _ , err = tmpRepo .GetMergeBase ("" , "base" , "tracking" )
521527 if err != nil {
522- return false , fmt .Errorf ("GetMergeBase: %w" , err )
528+ return false , "" , fmt .Errorf ("GetMergeBase: %w" , err )
523529 }
524530
525- cmd := gitcmd .NewCommand ("diff" , "--name-only" , "-z" ).AddDynamicArguments (newCommitID , oldCommitID , base )
531+ cmd := gitcmd .NewCommand ("diff" , "--name-only" , "-z" ).AddDynamicArguments (newCommitID , oldCommitID , mergeBase )
526532 stdoutReader , stdoutWriter , err := os .Pipe ()
527533 if err != nil {
528- return false , fmt .Errorf ("unable to open pipe for to run diff: %w" , err )
534+ return false , mergeBase , fmt .Errorf ("unable to open pipe for to run diff: %w" , err )
529535 }
530536
531537 stderr := new (bytes.Buffer )
@@ -542,19 +548,19 @@ func checkIfPRContentChanged(ctx context.Context, pr *issues_model.PullRequest,
542548 },
543549 }); err != nil {
544550 if err == util .ErrNotEmpty {
545- return true , nil
551+ return true , mergeBase , nil
546552 }
547553 err = gitcmd .ConcatenateError (err , stderr .String ())
548554
549555 log .Error ("Unable to run diff on %s %s %s in tempRepo for PR[%d]%s/%s...%s/%s: Error: %v" ,
550- newCommitID , oldCommitID , base ,
556+ newCommitID , oldCommitID , mergeBase ,
551557 pr .ID , pr .BaseRepo .FullName (), pr .BaseBranch , pr .HeadRepo .FullName (), pr .HeadBranch ,
552558 err )
553559
554- return false , fmt .Errorf ("Unable to run git diff --name-only -z %s %s %s: %w" , newCommitID , oldCommitID , base , err )
560+ return false , mergeBase , fmt .Errorf ("Unable to run git diff --name-only -z %s %s %s: %w" , newCommitID , oldCommitID , mergeBase , err )
555561 }
556562
557- return false , nil
563+ return false , mergeBase , nil
558564}
559565
560566// PushToBaseRepo pushes commits from branches of head repository to
0 commit comments