aider/scripts/benchmark.py
Paul Gauthier acd85b2417 aider: Updated create_temp_repo function to remove tempdir prefix when adding files to the repository.
# Context:
USER: stderr: 'fatal: pathspec 'tmp.benchmark/yacht.py' did not match any files'
we shouldn't pass the tempdir prefix

ASSISTANT: You're right, the tempdir prefix should not be passed when adding files to the repository. Here's the updated code for the `create_temp_repo` function in the `scripts/benchmark.py` file:

```python
scripts/benchmark.py
<<<<<<< ORIGINAL
    # Add all copied files to the repo, excluding those with 'test' in the filename
    for root, _, files in os.walk(tempdir):
        for file in files:
            if "test" not in file:
                repo.git.add(os.path.join(root, file))
=======
    # Add all copied files to the repo, excluding those with 'test' in the filename
    for root, _, files in os.walk(tempdir):
        for file in files:
            if "test" not in file:
                repo.git.add(os.path.relpath(os.path.join(root, file), tempdir))
>>>>>>> UPDATED
```

This change will use `os.path.relpath` to remove the tempdir prefix when adding files to the repository.
2023-06-23 14:03:31 -07:00

50 lines
1.3 KiB
Python

import os
import shutil
import sys
from tempfile import TemporaryDirectory
from git import Repo
def create_temp_repo(dirname, tempdir):
# Copy all files from dirname to tempdir
for item in os.listdir(dirname):
s = os.path.join(dirname, item)
d = os.path.join(tempdir, item)
if os.path.isdir(s):
shutil.copytree(s, d, False, None)
else:
shutil.copy2(s, d)
# Copy .docs subdir to tempdir as 'docs'
docs_src = os.path.join(dirname, ".docs")
docs_dst = os.path.join(tempdir, "docs")
shutil.copytree(docs_src, docs_dst, False, None)
# Create a new git repo in tempdir
repo = Repo.init(tempdir)
# Add all copied files to the repo, excluding those with 'test' in the filename
for root, _, files in os.walk(tempdir):
for file in files:
if "test" not in file:
repo.git.add(os.path.relpath(os.path.join(root, file), tempdir))
# Commit with message "initial"
repo.git.commit(m="initial")
def main(tempdir):
if len(sys.argv) != 2:
print("Usage: python benchmark.py <dirname>")
sys.exit(1)
dirname = sys.argv[1]
create_temp_repo(dirname, tempdir)
if __name__ == "__main__":
# with TemporaryDirectory() as tempdir:
tempdir = "tmp.benchmark"
main(tempdir)