Kevin Daudt <me@xxxxxxxxx> writes: > 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. > > Suggested-by: Junio C. Hamano <gitster@xxxxxxxxx> > Helped-by: Eric Sunshine <sunshine@xxxxxxxxxxxxxx> > Signed-off-by: Kevin Daudt <me@xxxxxxxxx> > --- > Changes since v3: > > * Added an ifdef::git-rev-list[] guard around the warning in the > --first-parent section so that it only shows up in `man git-rev-list` > and not in `man git log` > > * Added the warning also to the --bisect section. I wonder what "git log --first-parent --bisect A..B" should do, though. Wouldn't the rejection belong to revision.c::setup_revisions(), where we reject combined use of (--reverse, --walk-reflogs) and (--children, --parents), to apply this to all commands in the "log" family that uses the revision walker machinery? > > Documentation/rev-list-options.txt | 4 ++++ > builtin/rev-list.c | 3 +++ > t/t6000-rev-list-misc.sh | 4 ++++ > 3 files changed, 11 insertions(+) > > diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt > index 4ed8587..a148672 100644 > --- a/Documentation/rev-list-options.txt > +++ b/Documentation/rev-list-options.txt > @@ -124,6 +124,9 @@ parents) and `--max-parents=-1` (negative numbers denote no upper limit). > 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. > +ifdef::git-rev-list[] > + Cannot be combined with --bisect. > +endif::git-rev-list[] > > --not:: > Reverses the meaning of the '{caret}' prefix (or lack thereof) > @@ -567,6 +570,7 @@ 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. > +Cannot be combined with --first-parent. > > --bisect-vars:: > This calculates the same as `--bisect`, except that refs in > diff --git a/builtin/rev-list.c b/builtin/rev-list.c > index ff84a82..f5da2a4 100644 > --- a/builtin/rev-list.c > +++ b/builtin/rev-list.c > @@ -291,6 +291,9 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) > if (revs.bisect) > bisect_list = 1; > > + if (revs.first_parent_only && revs.bisect) > + die(_("--first-parent is incompattible with --bisect")); > + > if (DIFF_OPT_TST(&revs.diffopt, QUICK)) > info.flags |= REV_LIST_QUIET; > for (i = 1 ; i < argc; i++) { > diff --git a/t/t6000-rev-list-misc.sh b/t/t6000-rev-list-misc.sh > index 2602086..1f58b46 100755 > --- a/t/t6000-rev-list-misc.sh > +++ b/t/t6000-rev-list-misc.sh > @@ -96,4 +96,8 @@ test_expect_success 'rev-list can show index objects' ' > 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html