diff --git a/services/git/compare.go b/services/git/compare.go index 6c49fff26a..251a035058 100644 --- a/services/git/compare.go +++ b/services/git/compare.go @@ -84,7 +84,11 @@ func GetCompareInfo(ctx context.Context, baseRepo, headRepo *repo_model.Reposito // We have a common base - therefore we know that ... should work if !fileOnly { - compareInfo.Commits, err = headGitRepo.ShowPrettyFormatLogToList(ctx, compareInfo.BaseCommitID+compareInfo.CompareSeparator+compareInfo.HeadCommitID) + // In git log/rev-list, the "..." syntax represents the symmetric difference between two references, + // which is different from the meaning of "..." in git diff (where it implies diffing from the merge base). + // For listing PR commits, we must use merge-base..head to include only the commits introduced by the head branch. + // Otherwise, commits newly pushed to the base branch would also be included, which is incorrect. + compareInfo.Commits, err = headGitRepo.ShowPrettyFormatLogToList(ctx, compareInfo.MergeBase+".."+compareInfo.HeadCommitID) if err != nil { return nil, fmt.Errorf("ShowPrettyFormatLogToList: %w", err) }