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

Re: [PATCH] branch: optionally setup branch.*.merge from upstream local branches

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Feb 18, 2008, 18:47 UTC
Message-ID
<alpine.LSU.1.00.0802181839400.30505@racer.site>
In-Reply-To
<1203342817-19653-1-git-send-email-jaysoffian@gmail.com>
Hi,
On Mon, 18 Feb 2008, Jay Soffian wrote:
Show 16 quoted lines
> diff --git a/branch.c b/branch.c
> index 1fc8788..64f0a4a 100644
> --- a/branch.c
> +++ b/branch.c
> @@ -49,8 +49,12 @@ static int setup_tracking(const char *new_ref, const char *orig_ref)
>  	memset(&tracking, 0, sizeof(tracking));
>  	tracking.spec.dst = (char *)orig_ref;
>  	if (for_each_remote(find_tracked_branch, &tracking) ||
> -			!tracking.matches)
> -		return 1;
> +			!tracking.matches) {
> +		if (!always)
> +			return 1;
> +		tracking.matches = 1;
> +		tracking.src = xstrdup(orig_ref);
> +	}
I think you need to split this into
	if (for_each_remote(...))
		return 1;
	if (!tracking.matches && !always)
			return 1;

because an error in for_each_remote() is a proper error, and should not be ignored (speaking of which, the return value is unchecked...). And then, later,

        if (tracking.matches == 1) {
                sprintf(key, "branch.%s.remote", new_ref);
                git_config_set(key, tracking.remote ?  tracking.remote : ".");
                sprintf(key, "branch.%s.merge", new_ref);
-               git_config_set(key, tracking.src);
+               git_config_set(key, tracking.src ? tracking.src : orig_ref);
                free(tracking.src);
Show 6 quoted lines
> @@ -130,7 +135,7 @@ void create_branch(const char *head,
>  	   automatically merges from there.  So far, this is only done for
>  	   remotes registered via .git/config.  */
>  	if (real_ref && track)
> -		setup_tracking(name, real_ref);
> +		setup_tracking(name, real_ref, (track == BRANCH_TRACK_ALWAYS));

It is a matter of taste, I guess, but I would remove the parens around the boolean expression.

FWIW a very good argument in favour of your patch is IMHO that now, "--track" works as a user would expect, even for local branch-offs.

And of course that you were very responsive, and really put in a lot of effort.

Thanks, Dscho

Previous: Jay SoffianNext: Junio C Hamano
Message 4 of 5 in “branch: optionally setup branch.*.merge from upstream local branches”
  1. branch: optionally setup branch.*.merge from upstream local branchesJay Soffian, Feb 18, 2008
  2. Johannes SchindelinFeb 18, 2008
  3. Jay SoffianFeb 18, 2008
  4. Johannes SchindelinFeb 18, 2008
  5. Junio C HamanoFeb 18, 2008

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.