Subject: Re: [PATCH v5 2/2] branch: add flags and config to inherit tracking

From: Junio C Hamano <[email-masked]>
Date: Tue, 07 Dec 2021 11:41:32 -0800

Josh Steadmon <[email-masked]> writes:

>  --no-track::
>  	Do not set up "upstream" configuration, even if the
> -	branch.autoSetupMerge configuration variable is true.
> +	branch.autoSetupMerge configuration variable is set.

I guess "inherit" is different from "true".
Nice to see an attention to the details.  

> diff --git a/branch.h b/branch.h
> index df0be61506..6484bda8a2 100644
> --- a/branch.h
> +++ b/branch.h
> @@ -10,7 +10,8 @@ enum branch_track {
>  	BRANCH_TRACK_REMOTE,
>  	BRANCH_TRACK_ALWAYS,
>  	BRANCH_TRACK_EXPLICIT,
> -	BRANCH_TRACK_OVERRIDE
> +	BRANCH_TRACK_OVERRIDE,
> +	BRANCH_TRACK_INHERIT
>  };

Unless INHERIT must stay to be at the end of the enumeration even
when we add more of these, let's leave a common at the end to help
future developers.

> -		if (value && !strcasecmp(value, "always")) {
> +		if (value && !strcmp(value, "always")) {

This is belatedly correcting the mistake we made 5 years ago, which
can break existing users who used "[branch]autosetupmerge=Always" in
their configuration files.

I'm OK to fix it to accept only lowercase as written here, see if
anybody screams, and tell them that the all-lowercase is the only
documented way to spell this word.

>  			git_branch_track = BRANCH_TRACK_ALWAYS;
>  			return 0;
> +		} else if (value && !strcmp(value, "inherit")) {
> +			git_branch_track = BRANCH_TRACK_INHERIT;
> +			return 0;
>  		}
>  		git_branch_track = git_config_bool(var, value);
>  		return 0;

Thanks.