git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v4] rev-list: refuse --first-parent combined with --bisect

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 10, 2015, 22:09 UTC
Message-ID
<xmqqa8zkzeq5.fsf@gitster.dls.corp.google.com>
In-Reply-To
<1425934575-19581-1-git-send-email-me@ikke.info>
Kevin Daudt <me@ikke.info> writes:
Show 16 quoted lines
> 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@pobox.com>
> Helped-by: Eric Sunshine <sunshine@sunshineco.com>
> Signed-off-by: Kevin Daudt <me@ikke.info>
> ---
> 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?

Show 55 quoted lines
>
>  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
Previous: Kevin DaudtNext: Kevin Daudt
Message 14 of 32 in “[BUG] Segfault with rev-list --bisect”
  1. Troy MoureMar 3, 2015
  2. Jeff KingMar 4, 2015
  3. Junio C HamanoMar 4, 2015
  4. Troy MoureMar 5, 2015
  5. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 7, 2015
  6. Kevin DaudtMar 7, 2015
  7. Junio C HamanoMar 8, 2015
  8. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 8, 2015
  9. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 8, 2015
  10. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 8, 2015
  11. Eric SunshineMar 8, 2015
  12. Kevin DaudtMar 9, 2015
  13. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 9, 2015
  14. Junio C HamanoMar 10, 2015
  15. Kevin DaudtMar 10, 2015
  16. Junio C HamanoMar 10, 2015
  17. Kevin DaudtMar 11, 2015
  18. Junio C HamanoMar 11, 2015
  19. Kevin DaudtMar 16, 2015
  20. Junio C HamanoMar 16, 2015
  21. Philip OakleyMar 16, 2015
  22. Junio C HamanoMar 16, 2015
  23. Christian CouderMar 17, 2015
  24. Junio C HamanoMar 17, 2015
  25. Christian CouderMar 17, 2015
  26. Junio C HamanoMar 17, 2015
  27. Christian CouderMar 18, 2015
  28. Philip OakleyMar 19, 2015
  29. Scott SchmitMar 20, 2015
  30. rev-list: refuse --first-parent combined with --bisectKevin Daudt, Mar 19, 2015
  31. Junio C HamanoMar 19, 2015
  32. Kevin DaudtMar 21, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.