use safe repo.get_head methods

This commit is contained in:
Paul Gauthier 2024-08-31 07:29:51 -07:00
parent 8678a6455f
commit d2acb9c3b0
3 changed files with 28 additions and 12 deletions

View file

@ -420,8 +420,8 @@ class Commands:
self.io.tool_error("No git repository found.")
return
last_commit = self.coder.repo.repo.head.commit
if not last_commit.parents:
last_commit = self.coder.repo.get_head()
if last_commit and not last_commit.parents:
self.io.tool_error("This is the first commit in the repository. Cannot undo.")
return
@ -461,8 +461,9 @@ class Commands:
)
return
last_commit_hash = self.coder.repo.repo.head.commit.hexsha[:7]
last_commit_message = self.coder.repo.repo.head.commit.message.strip()
last_commit_hash = self.coder.repo.get_head_sha(short=True)
last_commit_message = self.coder.repo.get_head_message("(unknown)")
if last_commit_hash not in self.coder.aider_commit_hashes:
self.io.tool_error("The last commit was not made by aider in this chat session.")
self.io.tool_error(
@ -481,8 +482,8 @@ class Commands:
self.io.tool_output(f"Removed: {last_commit_hash} {last_commit_message}")
# Get the current HEAD after undo
current_head_hash = self.coder.repo.repo.head.commit.hexsha[:7]
current_head_message = self.coder.repo.repo.head.commit.message.strip()
current_head_hash = self.coder.repo.get_head_sha(short=True)
current_head_message = self.coder.repo.get_head_message("(unknown)")
self.io.tool_output(f"Now at: {current_head_hash} {current_head_message}")
if self.coder.main_model.send_undo_reply:
@ -494,7 +495,7 @@ class Commands:
self.io.tool_error("No git repository found.")
return
current_head = self.coder.repo.get_head()
current_head = self.coder.repo.get_head_sha()
if current_head is None:
self.io.tool_error("Unable to get current commit. The repository might be empty.")
return