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.
This commit is contained in:
Paul Gauthier 2023-11-17 15:50:37 -08:00
parent 21b80d0c06
commit ffaa1a03d6

View file

@ -1,6 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import argparse import argparse
import datetime
import re import re
import subprocess import subprocess
import sys import sys
@ -36,7 +37,16 @@ def main():
origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip() origin_main = subprocess.run(["git", "rev-parse", "origin/main"], capture_output=True, text=True).stdout.strip()
print(f"Origin main commit hash: {origin_main}") print(f"Origin main commit hash: {origin_main}")
if local_main != 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) sys.exit(1)
args = parser.parse_args() args = parser.parse_args()