Subject: Re: [PATCH v2] branch: reject --show-current with -v

From: Phillip Wood <[email-masked]>
Date: Sun, 22 Mar 2026 16:34:12 +0000

On 22/03/2026 06:07, K Jayatheerth wrote:
> The --show-current option doesn't know how to handle verbose
> logic. In such a case, we want the program to die when both flags
> are used together.

Is there any reason why --show-current couldn't be made to work with 
--verbose instead of dying?

> 
> Acked-by: Junio C Hamano <[email-masked]>
> Signed-off-by: K Jayatheerth <[email-masked]>
> ---
> I only changed the title of the commit message.
> The previous one (i.e remove unnecessary verbose flag) sounded
> like we are nuking the whole verbose flag.
> 
> The acked by tag exists here because this was supposed to be queued,

That's not what the Acked-by: tag means - you should remove it

> I am resending this to remind.
> The originial discussion however is here:
> https://lore.kernel.org/git/[email-masked]/T/#u
> 
>   builtin/branch.c  | 2 ++
>   t/t3200-branch.sh | 4 ++++
>   2 files changed, 6 insertions(+)
> 
> diff --git a/builtin/branch.c b/builtin/branch.c
> index a1a43380d0..cab22e1538 100644
> --- a/builtin/branch.c
> +++ b/builtin/branch.c
> @@ -861,6 +861,8 @@ int cmd_branch(int argc,
>   		ret = delete_branches(argc, argv, delete > 1, filter.kind, quiet);
>   		goto out;
>   	} else if (show_current) {
> +		if (filter.verbose)
> +			die(_("options '%s' and '%s' cannot be used together"), "--show-current", "-v");

It would be better to use die_for_incompatible_opt2() here so that the 
message is consistent with other commands.

>   		print_current_branch_name();
>   		ret = 0;
>   		goto out;
> diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh
> index c58e505c43..5bb49de9c2 100755
> --- a/t/t3200-branch.sh
> +++ b/t/t3200-branch.sh
> @@ -1716,4 +1716,8 @@ test_expect_success 'errors if given a bad branch name' '
>   	test_cmp expect actual
>   '
>   
> +test_expect_success 'git branch --show-current rejects -v' '
> +	test_must_fail git branch --show-current -v

This checks that the command fails but does not check _why_ in failed. 
It would be better to redirect stderr to a file and use test_grep to 
check the error message matches what we expect as well checking that the 
command fails.

Thanks

Phillip

> +'
> +
>   test_done