GRM-34: fix: skip commit when version file unchanged in release.py

This commit is contained in:
2026-06-21 16:18:02 +00:00
parent f0afa8171a
commit ea6276ff38
2 changed files with 64 additions and 11 deletions
+22 -9
View File
@@ -116,10 +116,21 @@ def update_init_version(new_version: str) -> None:
f.write(updated)
def create_release_commit(new_version: str) -> None:
"""Stage version file and create a release commit."""
def create_release_commit(new_version: str) -> bool:
"""Stage version file and create a release commit.
Returns True if a commit was created, False if there were no changes
(e.g., version file already at the target version).
"""
run_cmd(["git", "add", INIT_FILE])
# Check if there are staged changes
status = run_cmd(["git", "diff", "--cached", "--quiet"], check=False)
if status.returncode == 0:
# No staged changes — version file already at target
click.echo(_("Version file already at v{version}, skipping commit.", version=new_version))
return False
run_cmd(["git", "commit", "-m", f"chore(release): prepare for v{new_version}"])
return True
def create_and_push_tag(new_version: str, changelog: str, dry_run: bool) -> None:
@@ -179,13 +190,15 @@ def main(dry_run: bool) -> None:
update_init_version(new_version)
click.echo(_("Updated version in {init}", init=INIT_FILE))
# Create release commit
create_release_commit(new_version)
click.echo(_("Created release commit."))
# Push commit to master
run_cmd(["git", "push", "origin", "master"])
click.echo(_("Pushed release commit to master."))
# Create release commit (may be skipped if version unchanged)
committed = create_release_commit(new_version)
if committed:
click.echo(_("Created release commit."))
# Push commit to master
run_cmd(["git", "push", "origin", "master"])
click.echo(_("Pushed release commit to master."))
else:
click.echo(_("Skipping commit push — version unchanged."))
# Create and push tag
create_and_push_tag(new_version, changelog, dry_run)