summaryrefslogtreecommitdiff
path: root/t/t6019-rev-list-ancestry-path.sh
diff options
context:
space:
mode:
authorLibravatar Brad King <brad.king@kitware.com>2011-08-25 12:49:13 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-08-25 16:40:48 -0700
commit81f4953120f021832a0023dc704a0d7eb0ddf475 (patch)
treee3b85a63293e17392b38987f4bde290f51bd128e /t/t6019-rev-list-ancestry-path.sh
parentrevision: Turn off history simplification in --ancestry-path mode (diff)
downloadtgif-81f4953120f021832a0023dc704a0d7eb0ddf475.tar.xz
rev-list: Demonstrate breakage with --ancestry-path --all
The option added by commit ebdc94f3 (revision: --ancestry-path, 2010-04-20) does not work properly in combination with --all, at least in the case of a criss-cross merge: b---bc / \ / a X \ / \ c---cb There are no descendants of 'cb' in the history. The command git rev-list --ancestry-path cb..bc correctly reports no commits. However, the command git rev-list --ancestry-path --all ^cb reports 'bc'. Add a test case to t6019-rev-list-ancestry-path demonstrating this breakage. Signed-off-by: Brad King <brad.king@kitware.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t6019-rev-list-ancestry-path.sh')
-rwxr-xr-xt/t6019-rev-list-ancestry-path.sh35
1 files changed, 35 insertions, 0 deletions
diff --git a/t/t6019-rev-list-ancestry-path.sh b/t/t6019-rev-list-ancestry-path.sh
index 76410293b3..aa4674f1df 100755
--- a/t/t6019-rev-list-ancestry-path.sh
+++ b/t/t6019-rev-list-ancestry-path.sh
@@ -70,4 +70,39 @@ test_expect_success 'rev-list --ancestry-patch D..M -- M.t' '
test_cmp expect actual
'
+# b---bc
+# / \ /
+# a X
+# \ / \
+# c---cb
+test_expect_success 'setup criss-cross' '
+ mkdir criss-cross &&
+ (cd criss-cross &&
+ git init &&
+ test_commit A &&
+ git checkout -b b master &&
+ test_commit B &&
+ git checkout -b c master &&
+ test_commit C &&
+ git checkout -b bc b -- &&
+ git merge c &&
+ git checkout -b cb c -- &&
+ git merge b &&
+ git checkout master)
+'
+
+# no commits in bc descend from cb
+test_expect_success 'criss-cross: rev-list --ancestry-path cb..bc' '
+ (cd criss-cross &&
+ git rev-list --ancestry-path cb..bc > actual &&
+ test -z "$(cat actual)")
+'
+
+# no commits in repository descend from cb
+test_expect_failure 'criss-cross: rev-list --ancestry-path --all ^cb' '
+ (cd criss-cross &&
+ git rev-list --ancestry-path --all ^cb > actual &&
+ test -z "$(cat actual)")
+'
+
test_done