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:
parent
cb7529e13b
commit
81f4953120
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user