mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-20 04:14:59 +00:00
aider: Add Git checks before version bumping.
# Aider chat conversation: USER: before changing the repo, check that we are on the main branch, check that the working dir is not dirty, fetch the latest changes from origin and confirm that the main branch is up to date (don't merge it though). if any of these fail, exit with an error. ASSISTANT: To implement these checks in the `scripts/versionbump.py` file, we will need to add the necessary Git operations before proceeding with the version bumping logic. Here are the steps we will follow: 1. Import the `sys` module to exit the script with an error if needed. 2. Add a function to check the current Git branch and ensure it is 'main'. 3. Add a function to check if the working directory is clean. 4. Add a function to fetch the latest changes from the origin and check if the 'main' branch is up to date. 5. Call these functions at the beginning of the `main()` function. Here are the *SEARCH/REPLACE* blocks for the changes: scripts/versionbump.py ```python <<<<<<< SEARCH import argparse import re import subprocess ======= import argparse import re import subprocess import sys >>>>>>> REPLACE ``` scripts/versionbump.py ```python <<<<<<< SEARCH args = parser.parse_args() dry_run = args.dry_run ======= # Function to check if we are on the main branch def check_branch(): branch = subprocess.run(["git", "rev-parse", "--abbrev-ref", "HEAD"], capture_output=True, text=True).stdout.strip() if branch != "main": print("Error: Not on the main branch.") sys.exit(1) # Function to check if the working directory is clean def check_working_directory_clean(): status = subprocess.run(["git", "status", "--porcelain"], capture_output=True, text=True).stdout if status: print("Error: Working directory is not clean.") sys.exit(1) # Function to fetch the latest changes and check if the main branch is up to date def check_main_branch_up_to_date(): subprocess.run(["git", "fetch", "origin"], check=True) local_main = subprocess.run(["git", "rev-parse", "main"], capture_output=True, text=True).stdout.strip() origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip() if local_main != origin_main: print("Error: The main branch is not up to date with origin/main.") sys.exit(1) args = parser.parse_args() dry_run = args.dry_run # Perform checks before proceeding check_branch() check_working_directory_clean() check_main_branch_up_to_date() >>>>>>> REPLACE ``` These changes will ensure that the script checks for the current branch, the cleanliness of the working directory, and whether the 'main' branch is up to date with the origin before proceeding with the version bumping process. If any of these checks fail, the script will exit with an error message.
This commit is contained in:
parent
92f03b5f7d
commit
52fcdc4b09
1 changed files with 29 additions and 0 deletions
|
@ -3,6 +3,7 @@
|
|||
import argparse
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from packaging import version
|
||||
|
||||
|
@ -13,9 +14,37 @@ def main():
|
|||
parser.add_argument(
|
||||
"--dry-run", action="store_true", help="Print each step without actually executing them"
|
||||
)
|
||||
# Function to check if we are on the main branch
|
||||
def check_branch():
|
||||
branch = subprocess.run(["git", "rev-parse", "--abbrev-ref", "HEAD"], capture_output=True, text=True).stdout.strip()
|
||||
if branch != "main":
|
||||
print("Error: Not on the main branch.")
|
||||
sys.exit(1)
|
||||
|
||||
# Function to check if the working directory is clean
|
||||
def check_working_directory_clean():
|
||||
status = subprocess.run(["git", "status", "--porcelain"], capture_output=True, text=True).stdout
|
||||
if status:
|
||||
print("Error: Working directory is not clean.")
|
||||
sys.exit(1)
|
||||
|
||||
# Function to fetch the latest changes and check if the main branch is up to date
|
||||
def check_main_branch_up_to_date():
|
||||
subprocess.run(["git", "fetch", "origin"], check=True)
|
||||
local_main = subprocess.run(["git", "rev-parse", "main"], capture_output=True, text=True).stdout.strip()
|
||||
origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip()
|
||||
if local_main != origin_main:
|
||||
print("Error: The main branch is not up to date with origin/main.")
|
||||
sys.exit(1)
|
||||
|
||||
args = parser.parse_args()
|
||||
dry_run = args.dry_run
|
||||
|
||||
# Perform checks before proceeding
|
||||
check_branch()
|
||||
check_working_directory_clean()
|
||||
check_main_branch_up_to_date()
|
||||
|
||||
new_version_str = args.new_version
|
||||
if not re.match(r"^\d+\.\d+\.\d+$", new_version_str):
|
||||
raise ValueError(f"Invalid version format, must be x.y.z: {new_version_str}")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue