mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-20 04:14:59 +00:00

# Aider chat conversation: USER: it's printing Error: The main branch is not up to date with origin/main. even though main is up to date with origin/main ASSISTANT: To address the issue you're experiencing with the script reporting that the main branch is not up to date with `origin/main` even though it is, we should add additional logging to the script to help diagnose the problem. We can print out the commit hashes for `local_main` and `origin_main` before the comparison to see what the script is actually getting from the `git` commands. Let's modify the `scripts/versionbump.py` file to add this logging. Here is the *SEARCH/REPLACE* block: scripts/versionbump.py ```python <<<<<<< SEARCH 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.") ======= local_main = subprocess.run(["git", "rev-parse", "main"], capture_output=True, text=True).stdout.strip() print(f"Local main commit hash: {local_main}") origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip() print(f"Origin main commit hash: {origin_main}") if local_main != origin_main: print("Error: The main branch is not up to date with origin/main. Please pull the latest changes.") >>>>>>> REPLACE ``` This change will print out the commit hashes for both `local_main` and `origin_main` before the script checks if they are the same. This should help you diagnose why the script thinks the branches are not in sync. If the hashes are indeed the same, but the script still reports an error, it could be an issue with the script's logic or the environment in which it's being run.
113 lines
3.9 KiB
Python
Executable file
113 lines
3.9 KiB
Python
Executable file
#!/usr/bin/env python
|
|
|
|
import argparse
|
|
import re
|
|
import subprocess
|
|
import sys
|
|
|
|
from packaging import version
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Bump version")
|
|
parser.add_argument("new_version", help="New version in x.y.z format")
|
|
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()
|
|
print(f"Local main commit hash: {local_main}")
|
|
origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip()
|
|
print(f"Origin main commit hash: {origin_main}")
|
|
if local_main != origin_main:
|
|
print("Error: The main branch is not up to date with origin/main. Please pull the latest changes.")
|
|
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}")
|
|
|
|
new_version = version.parse(new_version_str)
|
|
incremented_version = version.Version(
|
|
f"{new_version.major}.{new_version.minor}.{new_version.micro + 1}"
|
|
)
|
|
|
|
with open("aider/__init__.py", "r") as f:
|
|
content = f.read()
|
|
|
|
current_version = re.search(r'__version__ = "(.+?)"', content).group(1)
|
|
if new_version <= version.parse(current_version):
|
|
raise ValueError(
|
|
f"New version {new_version} must be greater than the current version {current_version}"
|
|
)
|
|
|
|
updated_content = re.sub(r'__version__ = ".+?"', f'__version__ = "{new_version}"', content)
|
|
|
|
print("Updating aider/__init__.py with new version:")
|
|
print(updated_content)
|
|
if not dry_run:
|
|
with open("aider/__init__.py", "w") as f:
|
|
f.write(updated_content)
|
|
|
|
git_commands = [
|
|
["git", "add", "aider/__init__.py"],
|
|
["git", "commit", "-m", f"version bump to {new_version}"],
|
|
["git", "tag", f"v{new_version}"],
|
|
["git", "push", "origin"],
|
|
["git", "push", "origin", f"v{new_version}"],
|
|
]
|
|
|
|
for cmd in git_commands:
|
|
print(f"Running: {' '.join(cmd)}")
|
|
if not dry_run:
|
|
subprocess.run(cmd, check=True)
|
|
|
|
updated_dev_content = re.sub(
|
|
r'__version__ = ".+?"', f'__version__ = "{incremented_version}-dev"', content
|
|
)
|
|
|
|
print()
|
|
print("Updating aider/__init__.py with new dev version:")
|
|
print(updated_dev_content)
|
|
if not dry_run:
|
|
with open("aider/__init__.py", "w") as f:
|
|
f.write(updated_dev_content)
|
|
|
|
git_commands_dev = [
|
|
["git", "add", "aider/__init__.py"],
|
|
["git", "commit", "-m", f"set version to {incremented_version}-dev"],
|
|
["git", "push", "origin"],
|
|
]
|
|
|
|
for cmd in git_commands_dev:
|
|
print(f"Running: {' '.join(cmd)}")
|
|
if not dry_run:
|
|
subprocess.run(cmd, check=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|