| #!/bin/sh |
| |
| test_description='blaming trough history with topic branches' |
| . ./test-lib.sh |
| |
| # Creates the history shown below. '*'s mark the first parent in the merges. |
| # The only line of file.t is changed in commit B2 |
| # |
| # +---C1 |
| # / \ |
| # A0--A1--*A2--*A3 |
| # \ / |
| # B1-B2 |
| # |
| test_expect_success setup ' |
| test_commit A0 file.t line0 && |
| test_commit A1 && |
| git reset --hard A0 && |
| test_commit B1 && |
| test_commit B2 file.t line0changed && |
| git reset --hard A1 && |
| test_merge A2 B2 && |
| git reset --hard A1 && |
| test_commit C1 && |
| git reset --hard A2 && |
| test_merge A3 C1 |
| ' |
| |
| test_expect_success 'blame --reverse --first-parent finds A1' ' |
| git blame --porcelain --reverse --first-parent A0..A3 -- file.t >actual_full && |
| head -n 1 <actual_full | sed -e "s/ .*//" >actual && |
| git rev-parse A1 >expect && |
| test_cmp expect actual |
| ' |
| |
| test_done |