|  | #!/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 |