diff --git a/pkg/config/release.go b/pkg/config/release.go index 7800878e4c..4bb3c3689d 100644 --- a/pkg/config/release.go +++ b/pkg/config/release.go @@ -274,7 +274,18 @@ func getRevChanges(root, path, base string, ignoreModified bool) ([]string, erro if ignoreModified { filter = "--diff-filter=ACR" } - cmd := []string{"diff-tree", "-r", filter, base + ":" + path, "HEAD:" + path} + // Find merge base to handle cases where base branch has moved forward. + // This ensures accurate change detection even when the PR was created from + // an outdated base branch commit. + mergeBase, err := git(root, "merge-base", base, "HEAD") + if err != nil { + // Fallback to original behavior if merge-base fails (e.g., no common ancestor) + // This can happen in edge cases, so we use the provided base directly + mergeBase = base + } else { + mergeBase = strings.TrimSpace(mergeBase) + } + cmd := []string{"diff-tree", "-r", filter, mergeBase + ":" + path, "HEAD:" + path} diff, err := git(root, cmd...) if err != nil || diff == "" { return nil, err