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]