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

Re: [PATCH] git-config: read remote config files over HTTP

From
Junio C Hamano <junkio@cox.net>
Date
May 6, 2007, 06:55 UTC
Message-ID
<7virb6fnkv.fsf@assigned-by-dhcp.cox.net>
In-Reply-To
<11782757671933-git-send-email-skimo@liacs.nl>
Sven Verdoolaege <skimo@liacs.nl> writes:
> diff --git a/Makefile b/Makefile
> index 0185386..b782111 100644
> --- a/Makefile
> +++ b/Makefile
Very nicely done. 
Show 25 quoted lines
> diff --git a/config.c b/config.c
> index 0da74e0..36e3b97 100644
> --- a/config.c
> +++ b/config.c
> @@ -7,6 +7,7 @@
>   */
>  #include "cache.h"
>  #include "pkt-line.h"
> +#include "http_config.h"
>  
>  #define MAXNAME (256)
>  
> @@ -395,6 +396,16 @@ int git_config_from_file(config_fn_t fn, const char *filename)
>  	return ret;
>  }
>  
> +static int config_from_http(config_fn_t fn, char *dest)
> +{
> +	static char *config_temp = "config.temp";
> +	if (git_http_fetch_config(dest, config_temp))
> +		return 1;
> +	git_config_from_file(fn, config_temp);
> +	unlink(config_temp);
> +	return 0;
> +}
Not mkstemp()?
Show 7 quoted lines
> @@ -403,6 +414,9 @@ int git_config_from_remote(config_fn_t fn, char *dest)
>  	static char var[MAXNAME];
>  	static char value[1024];
>  
> +	if (!prefixcmp(dest, "http://"))
> +		return config_from_http(fn, dest);
> +
Shouldn't this also work for other protocols we handle via curl?
Show 12 quoted lines
> diff --git a/http.c b/http.c
> index ae27e0c..3e1ccce 100644
> --- a/http.c
> +++ b/http.c
> @@ -25,6 +25,10 @@ long curl_low_speed_limit = -1;
>  long curl_low_speed_time = -1;
>  int curl_ftp_no_epsv = 0;
>  
> +#ifdef USE_CURL_MULTI
> +void (*fill_active_slots)(void) = NULL;
> +#endif
> +
I wonder if we could lose USE_CURL_MULTI around this one,...
Show 22 quoted lines
>  struct curl_slist *pragma_header;
>  
>  struct active_request_slot *active_queue_head = NULL;
> @@ -394,7 +398,8 @@ void step_active_slots(void)
>  	} while (curlm_result == CURLM_CALL_MULTI_PERFORM);
>  	if (num_transfers < active_requests) {
>  		process_curl_messages();
> -		fill_active_slots();
> +		if (fill_active_slots)
> +			fill_active_slots();
>  	}
>  }
>  #endif
> @@ -459,7 +464,8 @@ void release_active_slot(struct active_request_slot *slot)
>  		slot->curl = NULL;
>  	}
>  #ifdef USE_CURL_MULTI
> -	fill_active_slots();
> +	if (fill_active_slots)
> +		fill_active_slots();
>  #endif
>  }
... and especially this one.

The fill_active_slots variable may happen to stay at NULL under !USE_CURL_MULTI, because the only code that sets the variable would be in #ifdef USE_CURL_MULTI.

Previous: Sven VerdoolaegeNext: Sven Verdoolaege
Message 6 of 8 in “Initial support for cloning submodules”
  1. Sven VerdoolaegeMay 4, 2007
  2. Add dump-configSven Verdoolaege, May 4, 2007
  3. git-config: add --remote option for reading config from remote repoSven Verdoolaege, May 4, 2007
  4. http.h: make fill_active_slots a function pointerSven Verdoolaege, May 4, 2007
  5. git-config: read remote config files over HTTPSven Verdoolaege, May 4, 2007
  6. Junio C HamanoMay 6, 2007
  7. Sven VerdoolaegeMay 6, 2007
  8. git-clone: add --submodules for cloning submodulesSven Verdoolaege, May 4, 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.