diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index cedbb70aa..0889e0d1a 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1784,7 +1784,7 @@ class Coder: self.reflected_message = str(err) return edited - except git.exc.GitCommandError as err: + except git.exc.ODBError as err: self.io.tool_error(str(err)) return edited except Exception as err: diff --git a/aider/coders/search_replace.py b/aider/coders/search_replace.py index 0b83765ec..1fdcff343 100755 --- a/aider/coders/search_replace.py +++ b/aider/coders/search_replace.py @@ -484,7 +484,7 @@ def git_cherry_pick_osr_onto_o(texts): # cherry pick R onto original try: repo.git.cherry_pick(replace_hash, "--minimal") - except git.exc.GitCommandError: + except git.exc.ODBError: # merge conflicts! return @@ -522,7 +522,7 @@ def git_cherry_pick_sr_onto_so(texts): # cherry pick replace onto original try: repo.git.cherry_pick(replace_hash, "--minimal") - except git.exc.GitCommandError: + except git.exc.ODBError: # merge conflicts! return diff --git a/aider/commands.py b/aider/commands.py index 30a7b5323..244114623 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -450,7 +450,7 @@ class Commands: try: remote_head = self.coder.repo.repo.git.rev_parse(f"origin/{current_branch}") has_origin = True - except git.exc.GitCommandError: + except git.exc.ODBError: has_origin = False if has_origin: diff --git a/aider/main.py b/aider/main.py index 63d25937d..16d458e24 100644 --- a/aider/main.py +++ b/aider/main.py @@ -57,6 +57,7 @@ def make_new_repo(git_root, io): repo = git.Repo.init(git_root) check_gitignore(git_root, io, False) except (git.exc.ODBError, git.exc.GitCommandNotFound) as err: # issue #1233 + # git.exc.GitCommandNotFound is not a subclass of git.exc.ODBError io.tool_error(f"Unable to create git repo in {git_root}") io.tool_error(str(err)) return @@ -114,7 +115,8 @@ def check_gitignore(git_root, io, ask=True): repo = git.Repo(git_root) if repo.ignored(".aider"): return - except git.exc.InvalidGitRepositoryError: + except (git.exc.ODBError, git.exc.GitCommandNotFound): + # git.exc.GitCommandNotFound is not a subclass of git.exc.ODBError pass pat = ".aider*" diff --git a/aider/repo.py b/aider/repo.py index eb21b4c74..69aafa4a8 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -71,9 +71,7 @@ class GitRepo: repo_path = git.Repo(fname, search_parent_directories=True).working_dir repo_path = utils.safe_abs_path(repo_path) repo_paths.append(repo_path) - except git.exc.InvalidGitRepositoryError: - pass - except git.exc.NoSuchPathError: + except git.exc.ODBError: pass num_repos = len(set(repo_paths)) @@ -207,7 +205,7 @@ class GitRepo: try: commits = self.repo.iter_commits(active_branch) current_branch_has_commits = any(commits) - except git.exc.GitCommandError: + except git.exc.ODBError: pass except TypeError: pass