diff options
author | Brad King <brad.king@kitware.com> | 2011-08-25 12:49:13 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-25 16:40:48 -0700 |
commit | 81f4953120f021832a0023dc704a0d7eb0ddf475 (patch) | |
tree | e3b85a63293e17392b38987f4bde290f51bd128e /t/t6019-rev-list-ancestry-path.sh | |
parent | revision: Turn off history simplification in --ancestry-path mode (diff) | |
download | tgif-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-x | t/t6019-rev-list-ancestry-path.sh | 35 |
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 |