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

Re: [PATCH] branch --track: code cleanup and saner handling of local branches

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 9, 2007, 21:05 UTC
Message-ID
<7v4pkduw2f.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<Pine.LNX.4.64.0707091228290.5546@racer.site>
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
Show 50 quoted lines
> @@ -349,125 +345,111 @@ static void print_ref_list(int kinds, int detached, int verbose, int abbrev,
>  	free_ref_list(&ref_list);
>  }
>  
> -static char *config_repo;
> -static char *config_remote;
> -static const char *start_ref;
> +static struct {
> +	const char *ref;
> +	int ref_len;
> +	char *remote;
> +	char *merge;
> +	int matches;
> +} tracking;
>  
> -static int get_remote_branch_name(const char *value)
> +static int tracking_config(const char *key, const char *value)
>  {
>  	const char *colon;
> +	int key_len, value_len, match_len;
> +	char *merge = NULL;
>  
> -	colon = strchr(value, ':');
> -	if (!colon)
> +	/* we want: remote.<nick>.fetch = <merge>:<ref> */
> +	if (prefixcmp(key, "remote.") || (key_len = strlen(key)) < 6 ||
> +			strcmp(key + key_len - 6, ".fetch") ||
> +			!(colon = strchr(value, ':')))
>  		return 0;
>  
> -	end = value + strlen(value);
> +	if (*value == '+')
> +		value++;
>  
>  	/*
> -	 * Try an exact match first.  I.e. handle the case where the
> -	 * value is "$anything:refs/foo/bar/baz" and start_ref is exactly
> -	 * "refs/foo/bar/baz". Then the name at the remote is $anything.
> +	 * A remote.<name>.fetch value can have two forms:
> +	 *
> +	 * - exact:
> +	 *
> +	 *	refs/heads/gnu:refs/heads/my-upstream
> +	 *
> +	 * - wildcard:
> +	 *
> +	 *	refs/heads/ *:refs/remotes/gnu/ *
> +	 *
> +	 * try exact match first:
>  	 */

It strikes me a bit odd if Daniel's remote.[ch] infrastructure does not give you easy access to this kind of information...

Previous: Johannes SchindelinNext: Johannes Schindelin
Message 9 of 23 in “git-branch: default to --track”
  1. git-branch: default to --trackJohannes Schindelin, Jul 6, 2007
  2. Junio C HamanoJul 8, 2007
  3. branch.autosetupmerge: allow boolean values, or "all"Johannes Schindelin, Jul 8, 2007
  4. Junio C HamanoJul 8, 2007
  5. Johannes SchindelinJul 8, 2007
  6. Paolo BonziniJul 9, 2007
  7. Junio C HamanoJul 9, 2007
  8. branch --track: code cleanup and saner handling of local branchesJohannes Schindelin, Jul 9, 2007
  9. Junio C HamanoJul 9, 2007
  10. Johannes SchindelinJul 9, 2007
  11. Junio C HamanoJul 9, 2007
  12. 1/2 Add for_each_remote() function, and extend remote_find_tracking()Johannes Schindelin, Jul 10, 2007
  13. Daniel BarkalowJul 10, 2007
  14. Johannes SchindelinJul 10, 2007
  15. Junio C HamanoJul 10, 2007
  16. Daniel BarkalowJul 10, 2007
  17. 1/2 Add for_each_remote() function, and extend remote_find_tracking()Johannes Schindelin, Jul 10, 2007
  18. Junio C HamanoJul 10, 2007
  19. Johannes SchindelinJul 10, 2007
  20. Daniel BarkalowJul 10, 2007
  21. 2/2 branch --track: code cleanup and saner handling of local branchesJohannes Schindelin, Jul 10, 2007
  22. 2/2 branch --track: code cleanup and saner handling of local branchesJohannes Schindelin, Jul 10, 2007
  23. Johannes SchindelinJul 9, 2007

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.