Yicong Huang created SPARK-58929:
------------------------------------

             Summary: Add a dry-run mode to merge_spark_pr.py
                 Key: SPARK-58929
                 URL: https://issues.apache.org/jira/browse/SPARK-58929
             Project: Spark
          Issue Type: Improvement
          Components: Project Infra
    Affects Versions: 5.0.0
            Reporter: Yicong Huang


merge_spark_pr.py performs several irreversible external effects when a 
committer merges a PR: the git push to PUSH_REMOTE_NAME, closing and commenting 
the PR through the GitHub API, and JIRA writes (component and fixVersion 
updates, the assignee, and the resolve transition).

Today there is no way to rehearse the full flow without producing real side 
effects. The existing affordances cover only part of it: doctests exercise the 
pure logic (version inference, title parsing, similarity); SKIP_VERSION_CHECK 
lets a committer iterate against a real PR; and PR_REMOTE_NAME / 
PUSH_REMOTE_NAME can point the git push at a scratch fork. But GITHUB_API_BASE 
and JIRA_API_BASE are hardcoded to apache, so the PR close/comment and JIRA 
resolve paths cannot be redirected and always hit the real apache/spark repo 
and ASF JIRA.

This adds a dry-run mode that suppresses every outbound effect and logs a clear 
"DRY-RUN: would <action> ..." line instead: the git push, the GitHub PR 
close/comment, and all JIRA writes. Read-only steps still run for real 
(fetching the PR, JIRA lookup, project_versions, and JIRA/GitHub token 
validation), and the local squash-merge and cherry-picks still run on the 
throwaway PR_TOOL_* branches so conflicts and the computed merge hash stay 
realistic. Interactive prompts continue to work.

Dry-run is enabled via a --dry-run / -n flag or the DRY_RUN environment 
variable, consistent with the existing env-based configuration. New pure 
helpers (argument parsing and the git-push classifier) are covered by doctests.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to