provide clear feedback when /undo fails midway through

This commit is contained in:
Paul Gauthier 2024-08-31 10:45:24 -07:00
parent 8e3d7e55d4
commit 494dec65b5

View file

@ -479,20 +479,24 @@ class Commands:
return return
# Reset only the files which are part of `last_commit` # Reset only the files which are part of `last_commit`
modified = set() restored = set()
unrestored = set()
for file_path in changed_files_last_commit: for file_path in changed_files_last_commit:
try: try:
self.coder.repo.repo.git.checkout("HEAD~1", file_path) self.coder.repo.repo.git.checkout("HEAD~1", file_path)
modified.add(file_path) restored.add(file_path)
except ANY_GIT_ERROR: except ANY_GIT_ERROR:
self.io.tool_error(f"Error restoring {file_path}, aborting undo.") unrestored.add(file_path)
self.io.tool_error("Modified files:")
for file in modified: if unrestored:
self.io.tool_error(f" {file}") self.io.tool_error(f"Error restoring {file_path}, aborting undo.")
self.io.tool_error("Unmodified files:") self.io.tool_error("Restored files:")
for file in set(changed_files_last_commit) - modified: for file in restored:
self.io.tool_error(f" {file}") self.io.tool_error(f" {file}")
return self.io.tool_error("Unable to restore files:")
for file in unrestored:
self.io.tool_error(f" {file}")
return
# Move the HEAD back before the latest commit # Move the HEAD back before the latest commit
self.coder.repo.repo.git.reset("--soft", "HEAD~1") self.coder.repo.repo.git.reset("--soft", "HEAD~1")