#!/bin/sh # Based on a test case submitted by Björn Steinbrink. test_description='git blame on conflicted files' . ./test-lib.sh test_expect_success 'setup first case' ' # Create the old file echo "Old line" > file1 && git add file1 && git commit --author "Old Line <ol@localhost>" -m file1.a && # Branch git checkout -b foo && # Do an ugly move and change git rm file1 && echo "New line ..." > file2 && echo "... and more" >> file2 && git add file2 && git commit --author "U Gly <ug@localhost>" -m ugly && # Back to master and change something git checkout master && echo " bla" >> file1 && git commit --author "Old Line <ol@localhost>" -a -m file1.b && # Back to foo and merge master git checkout foo && if git merge master; then echo needed conflict here exit 1 else echo merge failed - resolving automatically fi && echo "New line ... ... and more bla Even more" > file2 && git rm file1 && git commit --author "M Result <mr@localhost>" -a -m merged && # Back to master and change file1 again git checkout master && sed s/bla/foo/ <file1 >X && rm file1 && mv X file1 && git commit --author "No Bla <nb@localhost>" -a -m replace && # Try to merge into foo again git checkout foo && if git merge master; then echo needed conflict here exit 1 else echo merge failed - test is setup fi ' test_expect_success \ 'blame runs on unconflicted file while other file has conflicts' ' git blame file2 ' test_expect_success 'blame does not crash with conflicted file in stages 1,3' ' git blame file1 ' test_done