From ffaa1a03d6f36c1dc2a444c0620007cf5d351986 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 17 Nov 2023 15:50:37 -0800 Subject: [PATCH] aider: Add logic to compare commit dates of `main` and `origin/main` and print a message explaining which one is behind. # Aider chat conversation: USER: if main != origin/main, explain which one is behind ASSISTANT: To implement this feature, we need to modify `scripts/versionbump.py`. We will add additional logic to the `check_main_branch_up_to_date` function to compare the commit dates of `main` and `origin/main` and print a message explaining which one is behind. Here is the *SEARCH/REPLACE* block for the changes: scripts/versionbump.py ```python <<<<<<< SEARCH 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) ======= if local_main != origin_main: local_date = subprocess.run(["git", "show", "-s", "--format=%ci", "main"], capture_output=True, text=True).stdout.strip() origin_date = subprocess.run(["git", "show", "-s", "--format=%ci", "origin/main"], capture_output=True, text=True).stdout.strip() local_date = datetime.datetime.strptime(local_date, "%Y-%m-%d %H:%M:%S %z") origin_date = datetime.datetime.strptime(origin_date, "%Y-%m-%d %H:%M:%S %z") if local_date < origin_date: print("Error: The local main branch is behind origin/main. Please pull the latest changes.") elif local_date > origin_date: print("Error: The origin/main branch is behind the local main branch. Please push your changes.") else: print("Error: The main branch and origin/main have diverged.") sys.exit(1) >>>>>>> REPLACE ``` Please note that we need to import the `datetime` module at the beginning of the file to use `datetime.datetime.strptime`. Here is the *SEARCH/REPLACE* block for adding the import: scripts/versionbump.py ```python <<<<<<< SEARCH import argparse import re import subprocess import sys ======= import argparse import datetime import re import subprocess import sys >>>>>>> REPLACE ``` These changes will compare the commit dates and print a message explaining which branch is behind if they are not in sync. --- scripts/versionbump.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/versionbump.py b/scripts/versionbump.py index 76ff07699..e7584f3e4 100755 --- a/scripts/versionbump.py +++ b/scripts/versionbump.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import argparse +import datetime import re import subprocess import sys @@ -36,7 +37,16 @@ def 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.") + local_date = subprocess.run(["git", "show", "-s", "--format=%ci", "main"], capture_output=True, text=True).stdout.strip() + origin_date = subprocess.run(["git", "show", "-s", "--format=%ci", "origin/main"], capture_output=True, text=True).stdout.strip() + local_date = datetime.datetime.strptime(local_date, "%Y-%m-%d %H:%M:%S %z") + origin_date = datetime.datetime.strptime(origin_date, "%Y-%m-%d %H:%M:%S %z") + if local_date < origin_date: + print("Error: The local main branch is behind origin/main. Please pull the latest changes.") + elif local_date > origin_date: + print("Error: The origin/main branch is behind the local main branch. Please push your changes.") + else: + print("Error: The main branch and origin/main have diverged.") sys.exit(1) args = parser.parse_args()