mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-28 00:05:01 +00:00
aider: Implemented mark_aider_lines
to print out the file, marking any line which was introduced in an aider commit.
# Aider chat conversation: USER: implement `mark_aider_lines` to print out the file marking any line which was introduced in an aider commit ASSISTANT: Here are the changes to implement `mark_aider_lines` in `scripts/blame.py`: scripts/blame.py ```python <<<<<<< SEARCH if __name__ == "__main__": mark_aider_lines(sys.argv[1]) ======= import sys def mark_aider_lines(filename): aider_commits = set(get_aider_commits()) with open(filename, "r") as f: lines = f.readlines() for i, line in enumerate(lines, start=1): result = subprocess.run( ["git", "blame", "-L", f"{i},{i}", "--porcelain", filename], capture_output=True, text=True, check=True ) commit_hash = result.stdout.split(" ")[0] if commit_hash in aider_commits: print(f"* {line}", end="") else: print(f" {line}", end="") if __name__ == "__main__": if len(sys.argv) != 2: print(f"Usage: {sys.argv[0]} <filename>") sys.exit(1) mark_aider_lines(sys.argv[1]) >>>>>>> REPLACE ``` This implements the `mark_aider_lines` function to: 1. Get the set of aider commit hashes using `get_aider_commits()` 2. Read in the lines of the specified file 3. For each line: - Use `git blame` to get the commit hash that last modified that line - If the commit hash is in the set of aider commits, print `*` before the line, else print spaces 4. Print out each line, prefixing with `*` if it was last modified by an aider commit It also adds a check to `__main__` to validate the command line arguments and print a usage message if a filename is not provided. USER: # Fix any errors below, if possible. ## Running: flake8 --select=E9,F821,F823,F831,F406,F407,F701,F702,F704,F706 --show-source --isolated scripts/blame.py scripts/blame.py:19:13: F821 undefined name 'commits' commits.append(commit_hash) ^ scripts/blame.py:22:12: F821 undefined name 'commits' return commits ^ ## See relevant lines below marked with █. scripts/blame.py: ...⋮... 6│def get_aider_commits(): 7│ """Get commit hashes for commits with messages starting with 'aider:'""" ...⋮... 15│ for line in result.stdout.splitlines(): 16│ print(line) 17│ commit_hash, commit_message = line.split(" ", 1) 18│ if commit_message.startswith("aider:"): 19█ commits.append(commit_hash) 20│ 21│ 22█ return commits 23│ 24│import sys 25│ ...⋮... ASSISTANT: To fix the undefined name errors for `commits`, we need to initialize it before using it in `get_aider_commits()`. Here are the changes: scripts/blame.py ```python <<<<<<< SEARCH def get_aider_commits(): """Get commit hashes for commits with messages starting with 'aider:'""" ======= def get_aider_commits(): """Get commit hashes for commits with messages starting with 'aider:'""" commits = [] >>>>>>> REPLACE ``` scripts/blame.py ```python <<<<<<< SEARCH commits.append(commit_hash) return commits ======= commits.append(commit_hash) return commits >>>>>>> REPLACE ``` The key changes are: 1. Initialize `commits` to an empty list at the start of `get_aider_commits()` 2. Remove the extra blank lines before the `return commits` statement This should resolve the undefined name errors, since `commits` will now be properly initialized and in scope when it is used.
This commit is contained in:
parent
726b609175
commit
0984dd9aae
1 changed files with 1 additions and 1 deletions
|
@ -5,6 +5,7 @@ from aider.dump import dump
|
|||
|
||||
def get_aider_commits():
|
||||
"""Get commit hashes for commits with messages starting with 'aider:'"""
|
||||
commits = []
|
||||
result = subprocess.run(
|
||||
["git", "log", "--pretty=format:%H %s"],
|
||||
capture_output=True,
|
||||
|
@ -18,7 +19,6 @@ def get_aider_commits():
|
|||
if commit_message.startswith("aider:"):
|
||||
commits.append(commit_hash)
|
||||
|
||||
|
||||
return commits
|
||||
|
||||
import sys
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue