Feat/verify upstream before push by codejedi365 · Pull Request #1360 · python-semantic-release/python-semantic-release

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR integrates upstream branch verification directly into Python Semantic Release, eliminating the need for external shell scripts in CI/CD workflows. The implementation adds a new verify_upstream_unchanged() method that checks if the upstream branch has changed before pushing commits, preventing push conflicts when multiple developers are working on the same branch.

  • Adds new error types for handling upstream verification failures
  • Implements upstream verification logic in the GitProject class
  • Integrates verification into the version command before pushing changes
  • Updates documentation to reflect the new built-in verification

Reviewed Changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/semantic_release/errors.py Adds three new error classes for upstream verification failures
src/semantic_release/gitproject.py Implements the verify_upstream_unchanged() method with upstream branch verification logic
src/semantic_release/cli/commands/version.py Integrates upstream verification check before pushing changes
tests/unit/semantic_release/test_gitproject.py Adds comprehensive unit tests for the new verification method
tests/e2e/cmd_version/test_version_upstream_check.py Adds end-to-end tests for upstream verification scenarios
docs/configuration/automatic-releases/github-actions.rst Removes manual upstream verification step from documentation and adds note about built-in verification
docs/configuration/configuration-guides/uv_integration.rst Removes manual upstream verification script reference
docs/api/commands.rst Documents the new automatic upstream verification behavior

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.