Re: [PATCH] git-config: read remote config files over HTTP
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:08
Sven Verdoolaege [off-list ref] writes:
quoted hunk
diff --git a/Makefile b/Makefile index 0185386..b782111 100644 --- a/Makefile +++ b/Makefile
Very nicely done.
quoted hunk
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()?
quoted hunk
@@ -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?
quoted hunk
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,...
quoted hunk
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.