rev-list: refuse --first-parent combined with --bisect

rev-list --bisect is used by git bisect, but never together with
--first-parent. Because rev-list --bisect together with --first-parent
is not handled currently, and even leads to segfaults, refuse to use
both options together.

Because this is not supported, it makes little sense to use git log
--bisect --first parent either, because refs/heads/bad is not limited to
the first parent chain.

Helped-by: Junio C. Hamano <gitster@pobox.com>
Helped-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Kevin Daudt <me@ikke.info>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Kevin Daudt 2015-03-19 23:14:08 +01:00 коммит произвёл Junio C Hamano
Родитель 282616c72d
Коммит f88851c637
3 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -119,7 +119,8 @@ parents) and `--max-parents=-1` (negative numbers denote no upper limit).
because merges into a topic branch tend to be only about
adjusting to updated upstream from time to time, and
this option allows you to ignore the individual commits
brought in to your history by such a merge.
brought in to your history by such a merge. Cannot be
combined with --bisect.
--not::
Reverses the meaning of the '{caret}' prefix (or lack thereof)
@ -177,7 +178,7 @@ ifndef::git-rev-list[]
Pretend as if the bad bisection ref `refs/bisect/bad`
was listed and as if it was followed by `--not` and the good
bisection refs `refs/bisect/good-*` on the command
line.
line. Cannot be combined with --first-parent.
endif::git-rev-list[]
--stdin::
@ -558,7 +559,7 @@ outputs 'midpoint', the output of the two commands
would be of roughly the same length. Finding the change which
introduces a regression is thus reduced to a binary search: repeatedly
generate and test new 'midpoint's until the commit chain is of length
one.
one. Cannot be combined with --first-parent.
--bisect-vars::
This calculates the same as `--bisect`, except that refs in

Просмотреть файл

@ -2273,6 +2273,9 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
if (!revs->reflog_info && revs->grep_filter.use_reflog_filter)
die("cannot use --grep-reflog without --walk-reflogs");
if (revs->first_parent_only && revs->bisect)
die(_("--first-parent is incompatible with --bisect"));
return left;
}

Просмотреть файл

@ -73,4 +73,8 @@ test_expect_success 'symleft flag bit is propagated down from tag' '
test_cmp expect actual
'
test_expect_success '--bisect and --first-parent can not be combined' '
test_must_fail git rev-list --bisect --first-parent HEAD
'
test_done