From 208cbd5a6f9be60bc79105c6223f759d42902f52 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 30 Jan 2026 10:46:34 -0800 Subject: [PATCH] Fix bug when list pull request commits (#36485) Fix #36483 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. --- services/git/compare.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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) }