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

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

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.

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

From: Sven Verdoolaege <hidden>
Date: 2016-06-15 22:43:08

On Sat, May 05, 2007 at 11:55:28PM -0700, Junio C Hamano wrote:
Sven Verdoolaege [off-list ref] writes:
quoted
+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()?
I more or less copy-pasted the way "index" is handled now.
I'll use mkstemp in the next round.
quoted
+	if (!prefixcmp(dest, "http://"))
+		return config_from_http(fn, dest);
+
Shouldn't this also work for other protocols we handle via curl?
I don't think I copied the required setup for https, but ftp should work.
quoted
+#ifdef USE_CURL_MULTI
+void (*fill_active_slots)(void) = NULL;
+#endif
+
I wonder if we could lose USE_CURL_MULTI around this one,...
I wondered about that too, but I wanted to make my changes as minimal
as possible.  I'll drop the #ifdef in the next round.

skimo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help