Support rebase conflicts in check-merge-conflicts
diff --git a/pre_commit_hooks/check_merge_conflict.py b/pre_commit_hooks/check_merge_conflict.py index d986998..7d87efc 100644 --- a/pre_commit_hooks/check_merge_conflict.py +++ b/pre_commit_hooks/check_merge_conflict.py
@@ -15,7 +15,11 @@ def is_in_merge(): return ( os.path.exists(os.path.join('.git', 'MERGE_MSG')) and - os.path.exists(os.path.join('.git', 'MERGE_HEAD')) + ( + os.path.exists(os.path.join('.git', 'MERGE_HEAD')) or + os.path.exists(os.path.join('.git', 'rebase-apply')) or + os.path.exists(os.path.join('.git', 'rebase-merge')) + ) )
diff --git a/tests/check_merge_conflict_test.py b/tests/check_merge_conflict_test.py index f1528b2..5a2e82a 100644 --- a/tests/check_merge_conflict_test.py +++ b/tests/check_merge_conflict_test.py
@@ -54,6 +54,14 @@ '=======\n' 'parent\n' '>>>>>>>' + ) or f1.startswith( + # .gitconfig with [pull] rebase = preserve causes a rebase which + # flips parent / child + '<<<<<<< HEAD\n' + 'parent\n' + '=======\n' + 'child\n' + '>>>>>>>' ) assert os.path.exists(os.path.join('.git', 'MERGE_MSG')) yield @@ -85,7 +93,7 @@ repo2_f2.write('child\n') cmd_output('git', 'add', '--', repo2_f2.strpath) cmd_output('git', 'commit', '--no-gpg-sign', '-m', 'clone commit2') - cmd_output('git', 'pull', '--no-commit') + cmd_output('git', 'pull', '--no-commit', '--no-rebase') # We should end up in a pending merge assert repo2_f1.read() == 'parent\n' assert repo2_f2.read() == 'child\n'