summaryrefslogtreecommitdiff
path: root/t/t8009-blame-vs-topicbranches.sh
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-11-03 23:13:09 (GMT)
committerJunio C Hamano <gitster@pobox.com>2015-11-03 23:13:10 (GMT)
commit6784eb5ad93da15d24a5d111a3d6df618f98532f (patch)
tree1c0311803176e831745024d632c146dd21a9808e /t/t8009-blame-vs-topicbranches.sh
parenta59d1d8035a1a6d878274e97818c56bb691ac5c0 (diff)
parent700fd28e4f3ecd6e7b5f8f2098e62ffef9ab958b (diff)
downloadgit-6784eb5ad93da15d24a5d111a3d6df618f98532f.zip
git-6784eb5ad93da15d24a5d111a3d6df618f98532f.tar.gz
git-6784eb5ad93da15d24a5d111a3d6df618f98532f.tar.bz2
Merge branch 'mk/blame-first-parent'
"git blame" learnt to take "--first-parent" and "--reverse" at the same time when it makes sense. * mk/blame-first-parent: blame: allow blame --reverse --first-parent when it makes sense blame: extract find_single_final blame: test to describe use of blame --reverse --first-parent
Diffstat (limited to 't/t8009-blame-vs-topicbranches.sh')
-rwxr-xr-xt/t8009-blame-vs-topicbranches.sh36
1 files changed, 36 insertions, 0 deletions
diff --git a/t/t8009-blame-vs-topicbranches.sh b/t/t8009-blame-vs-topicbranches.sh
new file mode 100755
index 0000000..72596e3
--- /dev/null
+++ b/t/t8009-blame-vs-topicbranches.sh
@@ -0,0 +1,36 @@
+#!/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