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>
This commit is contained in:
Brad King 2011-08-25 12:49:13 -04:00 committed by Junio C Hamano
parent cb7529e13b
commit 81f4953120

View file

@ -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