The GitRepo class in the aider/repo.py file has been updated to support a new `commit_prompt` argument. This allows overriding the default `prompts.commit_system` when generating commit messages.
The changes include:
1. Adding the `commit_prompt` parameter to the `__init__` method of the `GitRepo` class.
2. Storing the `commit_prompt` value in the `self.commit_prompt` attribute.
3. Modifying the `get_commit_message` method to use the `self.commit_prompt` value if it's provided, otherwise falling back to the default `prompts.commit_system`.
This change provides more flexibility in customizing the commit message generation process, allowing users to provide their own custom prompts if needed.
# Aider chat conversation:
USER: I ran this command:
pre-commit run --files aider/repo.py
And got this output:
isort....................................................................Passed
black....................................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1
aider/repo.py:247:101: E501 line too long (111 > 100 characters)
"""
Returns a list of all files which are dirty (not committed), either staged or in the working directory.
"""
^
ASSISTANT: Please add the file `aider/repo.py` to the chat so I can make the necessary changes.
USER: I added these files to the chat: aider/repo.py
ASSISTANT: To fix the flake8 error, we need to shorten the docstring to comply with the line length limit of 100 characters.
Here is the *SEARCH/REPLACE* block:
aider/repo.py
```python
<<<<<<< SEARCH
"""
Returns a list of all files which are dirty (not committed), either staged or in the working directory.
"""
=======
"""
Returns a list of all files which are dirty (not committed), either staged or in the working
directory.
"""
>>>>>>> REPLACE
```
# Aider chat conversation:
USER: add a get_dirty_files() method which returns all the files which are dirty (not committed) either staged or in the working dir.
ASSISTANT: To add the `get_dirty_files()` method, we need to:
1. Define the new method in the `GitRepo` class.
2. Implement the logic to return all dirty files, both staged and in the working directory.
Here is the *SEARCH/REPLACE* block:
aider/repo.py
```python
<<<<<<< SEARCH
def is_dirty(self, path=None):
=======
def get_dirty_files(self):
"""
Returns a list of all files which are dirty (not committed), either staged or in the working directory.
"""
dirty_files = set()
# Get staged files
staged_files = self.repo.git.diff('--name-only', '--cached').splitlines()
dirty_files.update(staged_files)
# Get unstaged files
unstaged_files = self.repo.git.diff('--name-only').splitlines()
dirty_files.update(unstaged_files)
return list(dirty_files)
>>>>>>> REPLACE
```
aider/repo.py
```python
<<<<<<< SEARCH
return self.repo.is_dirty(path=path)
=======
return self.repo.is_dirty(path=path)
>>>>>>> REPLACE
```