From: David Kågedal <davidk@xxxxxxxxxxxxxx> merge-recursive already has useful information about what the conflicts were, so we reuse that when pushing. Signed-off-by: David Kågedal <davidk@xxxxxxxxxxxxxx> Signed-off-by: Karl Hasselström <kha@xxxxxxxxxxx> --- stgit/git.py | 22 +++++++++++++++++----- stgit/stack.py | 2 ++ 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/stgit/git.py b/stgit/git.py index 173cc4b..a185f19 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -39,6 +39,14 @@ class GitRunException(GitException): class GRun(Run): exc = GitRunException +class GitConflictException(GitException): + def __init__(self, conflicts): + GitException.__init__(self) + self.conflicts = conflicts + def __str__(self): + return "%d conflicts" % len(self.conflicts) + def list(self): + out.info(*self.conflicts) # # Classes @@ -642,11 +650,15 @@ def merge_recursive(base, head1, head2): """ refresh_index() - try: - # discard output to mask the verbose prints of the tool - GRun('git-merge-recursive', base, '--', head1, head2).discard_output() - except GitRunException: - raise GitException, 'GIT index merging failed (possible conflicts)' + p = GRun('git-merge-recursive', base, '--', head1, head2).returns([0, 1]) + output = p.output_lines() + if p.exitcode == 0: + # No problems + return + else: # exitcode == 1 + # There were conflicts + conflicts = [l for l in output if l.startswith('CONFLICT')] + raise GitConflictException(conflicts) def merge(base, head1, head2): """Perform a 3-way merge between base, head1 and head2 into the diff --git a/stgit/stack.py b/stgit/stack.py index eb0114e..d2ca0e2 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -1075,6 +1075,8 @@ class Series(PatchSet): # merge can fail but the patch needs to be pushed try: git.merge_recursive(bottom, head, top) + except git.GitConflictException, ex: + ex.list() except git.GitException, ex: out.error('The merge failed during "push".', 'Use "refresh" after fixing the conflicts or' - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html