Compare tree hashes instead of using git diff

Comparing tree hashes is more accurate for detecting content differences
between the merge commit and PR head, avoiding false positives when
the content is identical but commit SHAs differ.
This commit is contained in:
Ian Butterworth
2025-11-16 11:24:44 -05:00
parent 013f11f99f
commit ee4584ffbd

View File

@@ -25,8 +25,10 @@ if haskey(ENV, "GITHUB_SHA") && get(ENV, "GITHUB_EVENT_NAME", "") == "pull_reque
# Check if there's any difference between the merge commit and the PR head # Check if there's any difference between the merge commit and the PR head
# In GitHub Actions, HEAD^2 is the PR head (second parent of merge commit) # In GitHub Actions, HEAD^2 is the PR head (second parent of merge commit)
# success() returns true if the command exits with 0 (no differences) # Compare tree hashes to check if content actually differs
has_diff = !success(`git diff --quiet --exit-code HEAD^2 HEAD`) merge_tree = chomp(read(`git rev-parse HEAD^{tree}`, String))
pr_tree = chomp(read(`git rev-parse HEAD^2^{tree}`, String))
has_diff = merge_tree != pr_tree
if has_diff if has_diff
base_branch = isempty(base_branch_name) ? "the base branch" : "'$base_branch_name'" base_branch = isempty(base_branch_name) ? "the base branch" : "'$base_branch_name'"