From: Ilari Liusvaara Date: Wed, 9 Dec 2009 15:26:34 +0000 (+0200) Subject: Remove special casing of http, https and ftp X-Git-Tag: v1.7.0-rc0~62^2~5 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=28ca0c90080ec933d82b0f7d050ea5fde2816c57;p=git.git Remove special casing of http, https and ftp HTTP, HTTPS and FTP are no longer special to transport code. Also add support for FTPS (curl supports it so it is easy). Signed-off-by: Ilari Liusvaara Signed-off-by: Junio C Hamano --- diff --git a/.gitignore b/.gitignore index ac02a580d..aa7a8ac19 100644 --- a/.gitignore +++ b/.gitignore @@ -107,6 +107,10 @@ /git-relink /git-remote /git-remote-curl +/git-remote-http +/git-remote-https +/git-remote-ftp +/git-remote-ftps /git-repack /git-replace /git-repo-config diff --git a/Makefile b/Makefile index 2ad7e366e..87fc7ff47 100644 --- a/Makefile +++ b/Makefile @@ -424,6 +424,16 @@ BUILT_INS += git-stage$X BUILT_INS += git-status$X BUILT_INS += git-whatchanged$X +ifdef NO_CURL +REMOTE_CURL_PRIMARY = +REMOTE_CURL_ALIASES = +REMOTE_CURL_NAMES = +else +REMOTE_CURL_PRIMARY = git-remote-http$X +REMOTE_CURL_ALIASES = git-remote-https$X git-remote-ftp$X git-remote-ftps$X +REMOTE_CURL_NAMES = $(REMOTE_CURL_PRIMARY) $(REMOTE_CURL_ALIASES) +endif + # what 'all' will build and 'install' will install in gitexecdir, # excluding programs for built-in commands ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) @@ -1097,7 +1107,7 @@ else else CURL_LIBCURL = -lcurl endif - PROGRAMS += git-remote-curl$X git-http-fetch$X + PROGRAMS += $(REMOTE_CURL_NAMES) git-http-fetch$X curl_check := $(shell (echo 070908; curl-config --vernum) | sort -r | sed -ne 2p) ifeq "$(curl_check)" "070908" ifndef NO_EXPAT @@ -1676,7 +1686,13 @@ 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) -git-remote-curl$X: remote-curl.o http.o http-walker.o $(GITLIBS) +$(REMOTE_CURL_ALIASES): $(REMOTE_CURL_PRIMARY) + $(QUIET_LNCP)$(RM) $@ && \ + ln $< $@ 2>/dev/null || \ + ln -s $< $@ 2>/dev/null || \ + cp $< $@ + +$(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o $(GITLIBS) $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ $(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT) @@ -1852,6 +1868,7 @@ endif ifneq (,$X) $(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_PROGRAMS) $(BUILT_INS) git$X)), test '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p' -ef '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p$X' || $(RM) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p';) endif + bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \ execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \ { test "$$bindir/" = "$$execdir/" || \ @@ -1865,6 +1882,12 @@ endif ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \ cp "$$execdir/git$X" "$$execdir/$$p" || exit; \ done; } && \ + { for p in $(REMOTE_CURL_ALIASES); do \ + $(RM) "$$execdir/$$p" && \ + ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ + ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \ + cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \ + done; } && \ ./check_bindir "z$$bindir" "z$$execdir" "$$bindir/git-add$X" install-doc: diff --git a/transport.c b/transport.c index a7d67eba8..652bf0bd8 100644 --- a/transport.c +++ b/transport.c @@ -918,14 +918,6 @@ struct transport *transport_get(struct remote *remote, const char *url) data->conn = NULL; data->got_remote_heads = 0; - } else if (!prefixcmp(url, "http://") - || !prefixcmp(url, "https://") - || !prefixcmp(url, "ftp://")) { - /* These three are just plain special. */ - transport_helper_init(ret, "curl"); -#ifdef NO_CURL - error("git was compiled without libcurl support."); -#endif } else { /* Unknown protocol in URL. Pass to external handler. */ int len = external_specification_len(url);