From 79536846277117644a569705af9d54b1d7e3963b Mon Sep 17 00:00:00 2001 From: Ben Kurtovic Date: Mon, 7 Apr 2014 10:59:38 -0400 Subject: [PATCH] Flesh out error handling for merge/rebase. --- gitup/update.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/gitup/update.py b/gitup/update.py index fb8e81f..a36a9cb 100644 --- a/gitup/update.py +++ b/gitup/update.py @@ -62,16 +62,17 @@ def _rebase(repo, name): try: res = repo.git.rebase(name) except exc.GitCommandError as err: - if "unstaged changes" in err.stderr: + msg = err.stderr.replace("\n", " ").strip() + if "unstaged changes" in msg: print(" error:", "unstaged changes.") - elif "uncommitted changes" in err.stderr: + elif "uncommitted changes" in msg: print(" error:", "uncommitted changes.") else: try: repo.git.rebase("--abort") except exc.GitCommandError: pass - print(" error:", err.stderr.replace("\n", " ")) + print(" error:", msg if msg else "rebase conflict") else: print(" done.") @@ -81,8 +82,15 @@ def _merge(repo, name): try: repo.git.merge(name) except exc.GitCommandError as err: - print(err) - ### TODO: etc + msg = err.stderr.replace("\n", " ").strip() + if "local changes" in msg and "would be overwritten" in msg: + print(" error:", "uncommitted changes.") + else: + try: + repo.git.merge("--abort") + except exc.GitCommandError: + pass + print(" error:", msg if msg else "merge conflict") else: print(" done.")