# [PATCH 3/3 v2] git-http-fetch: not a builtin

3 messages from 2009-07-28 to 2009-07-28. Participants: Daniel Barkalow, Johannes Schindelin.
Thread: https://gitlist.dev/t/20258

## Daniel Barkalow, 2009-07-28 06:08

Subject: [PATCH 3/3 v2] git-http-fetch: not a builtin
Message-ID: <alpine.LNX.2.00.0907280207480.2147@iabervon.org>
URL: https://gitlist.dev/e/alpine.LNX.2.00.0907280207480.2147%40iabervon.org

```
From: Linus Torvalds <torvalds@linux-foundation.org>

This splits up git-http-fetch so that it isn't built-in.

It also removes the general dependency on curl, because it is no
longer used by any built-in code.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
---
 Makefile                             |    8 ++++----
 git.c                                |    3 ---
 builtin-http-fetch.c => http-fetch.c |    5 ++++-
 3 files changed, 8 insertions(+), 8 deletions(-)
 rename builtin-http-fetch.c => http-fetch.c (95%)

diff --git a/Makefile b/Makefile
index d3dd2ed..3425336 100644
--- a/Makefile
+++ b/Makefile
@@ -979,10 +979,7 @@ else
 	else
 		CURL_LIBCURL = -lcurl
 	endif
-	BUILTIN_OBJS += builtin-http-fetch.o
-	PROGRAMS += git-shim-curl$X
-	EXTLIBS += $(CURL_LIBCURL)
-	LIB_OBJS += http.o http-walker.o
+	PROGRAMS += git-shim-curl$X git-http-fetch$X
 	curl_check := $(shell (echo 070908; curl-config --vernum) | sort -r | sed -ne 2p)
 	ifeq "$(curl_check)" "070908"
 		ifndef NO_EXPAT
@@ -1487,6 +1484,9 @@ git-imap-send$X: imap-send.o $(GITLIBS)
 
 http.o http-walker.o http-push.o transport.o: http.h
 
+git-http-fetch$X: revision.o http.o http-push.o $(GITLIBS)
+	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
+		$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
 git-http-push$X: revision.o http.o http-push.o $(GITLIBS)
 	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 		$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
diff --git a/git.c b/git.c
index 807d875..c1e8f05 100644
--- a/git.c
+++ b/git.c
@@ -309,9 +309,6 @@ static void handle_internal_command(int argc, const char **argv)
 		{ "get-tar-commit-id", cmd_get_tar_commit_id },
 		{ "grep", cmd_grep, RUN_SETUP | USE_PAGER },
 		{ "help", cmd_help },
-#ifndef NO_CURL
-		{ "http-fetch", cmd_http_fetch, RUN_SETUP },
-#endif
 		{ "init", cmd_init_db },
 		{ "init-db", cmd_init_db },
 		{ "log", cmd_log, RUN_SETUP | USE_PAGER },
diff --git a/builtin-http-fetch.c b/http-fetch.c
similarity index 95%
rename from builtin-http-fetch.c
rename to http-fetch.c
index f3e63d7..e8f44ba 100644
--- a/builtin-http-fetch.c
+++ b/http-fetch.c
@@ -1,8 +1,9 @@
 #include "cache.h"
 #include "walker.h"
 
-int cmd_http_fetch(int argc, const char **argv, const char *prefix)
+int main(int argc, const char **argv)
 {
+	const char *prefix;
 	struct walker *walker;
 	int commits_on_stdin = 0;
 	int commits;
@@ -18,6 +19,8 @@ int cmd_http_fetch(int argc, const char **argv, const char *prefix)
 	int get_verbosely = 0;
 	int get_recover = 0;
 
+	prefix = setup_git_directory();
+
 	git_config(git_default_config, NULL);
 
 	while (arg < argc && argv[arg][0] == '-') {
-- 
1.6.4.rc2.13.ga9762.dirty

```

## Johannes Schindelin, 2009-07-28 13:23

Subject: Re: [PATCH 3/3 v2] git-http-fetch: not a builtin
Message-ID: <alpine.DEB.1.00.0907281520150.8306@pacific.mpi-cbg.de>
URL: https://gitlist.dev/e/alpine.DEB.1.00.0907281520150.8306%40pacific.mpi-cbg.de
In-Reply-To: <alpine.LNX.2.00.0907280207480.2147@iabervon.org>

```
Hi,

On Tue, 28 Jul 2009, Daniel Barkalow wrote:

> From: Linus Torvalds <torvalds@linux-foundation.org>
> 
> This splits up git-http-fetch so that it isn't built-in.
> 
> It also removes the general dependency on curl, because it is no
> longer used by any built-in code.
> 
> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
> ---

I think there is something missing that was not needed in Linus' original 
patch:

> diff --git a/Makefile b/Makefile
> index d3dd2ed..3425336 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -979,10 +979,7 @@ else
>  	else
>  		CURL_LIBCURL = -lcurl
>  	endif
> -	BUILTIN_OBJS += builtin-http-fetch.o
> -	PROGRAMS += git-shim-curl$X
> -	EXTLIBS += $(CURL_LIBCURL)
> -	LIB_OBJS += http.o http-walker.o
> +	PROGRAMS += git-shim-curl$X git-http-fetch$X

So now, http is all excluded from libgit.a.  Okay.

> @@ -1487,6 +1484,9 @@ git-imap-send$X: imap-send.o $(GITLIBS)
>  
>  http.o http-walker.o http-push.o transport.o: http.h
>  
> +git-http-fetch$X: revision.o http.o http-push.o $(GITLIBS)
> +	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
> +		$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)

And git-http-fetch is linked to libcurl.  But why is git-shim-curl not 
linked to libcurl?  I can only guess (as I am running out of time) that 
git-shim-curl (in addition to having a doubly horrible name) has _no idea_ 
about curl?  So why does it exist in the first place?  Should not rather 
"git http-fetch" be turned _into_ that helper (albeit with a much better 
name)?

Ciao,
Dscho

```

## Daniel Barkalow, 2009-07-28 18:05

Subject: Re: [PATCH 3/3 v2] git-http-fetch: not a builtin
Message-ID: <alpine.LNX.2.00.0907281400100.2147@iabervon.org>
URL: https://gitlist.dev/e/alpine.LNX.2.00.0907281400100.2147%40iabervon.org
In-Reply-To: <alpine.DEB.1.00.0907281520150.8306@pacific.mpi-cbg.de>

```
On Tue, 28 Jul 2009, Johannes Schindelin wrote:

> Hi,
> 
> On Tue, 28 Jul 2009, Daniel Barkalow wrote:
> 
> > From: Linus Torvalds <torvalds@linux-foundation.org>
> > 
> > This splits up git-http-fetch so that it isn't built-in.
> > 
> > It also removes the general dependency on curl, because it is no
> > longer used by any built-in code.
> > 
> > Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
> > Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>
> > ---
> 
> I think there is something missing that was not needed in Linus' original 
> patch:
> 
> > diff --git a/Makefile b/Makefile
> > index d3dd2ed..3425336 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -979,10 +979,7 @@ else
> >  	else
> >  		CURL_LIBCURL = -lcurl
> >  	endif
> > -	BUILTIN_OBJS += builtin-http-fetch.o
> > -	PROGRAMS += git-shim-curl$X
> > -	EXTLIBS += $(CURL_LIBCURL)
> > -	LIB_OBJS += http.o http-walker.o
> > +	PROGRAMS += git-shim-curl$X git-http-fetch$X
> 
> So now, http is all excluded from libgit.a.  Okay.
> 
> > @@ -1487,6 +1484,9 @@ git-imap-send$X: imap-send.o $(GITLIBS)
> >  
> >  http.o http-walker.o http-push.o transport.o: http.h
> >  
> > +git-http-fetch$X: revision.o http.o http-push.o $(GITLIBS)
> > +	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
> > +		$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
> 
> And git-http-fetch is linked to libcurl.  But why is git-shim-curl not 
> linked to libcurl?

It is linked to libcurl. Like git-http-push, it was already not relying on 
EXTLIBS including -lcurl.

	-Daniel
*This .sig left intentionally blank*

```
