* [PATCH] remote-curl: ensure that URLs do not have a trailing slash @ 2010-04-07 14:51 Tay Ray Chuan 2010-04-07 15:12 ` Junio C Hamano 0 siblings, 1 reply; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-07 14:51 UTC (permalink / raw) To: Git Mailing List; +Cc: Shawn O. Pearce, Junio C Hamano Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> --- remote-curl.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/remote-curl.c b/remote-curl.c index 0782756..0f21f8a 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -101,7 +101,8 @@ static struct discovery* discover_refs(const char *service) return last; free_discovery(last); - strbuf_addf(&buffer, "%s/info/refs", url); + end_url_with_slash(&buffer, url); + strbuf_addstr(&buffer, "info/refs"); if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { is_http = 1; if (!strchr(url, '?')) @@ -120,7 +121,8 @@ static struct discovery* discover_refs(const char *service) strbuf_reset(&buffer); proto_git_candidate = 0; - strbuf_addf(&buffer, "%s/info/refs", url); + end_url_with_slash(&buffer, url); + strbuf_addstr(&buffer, "info/refs"); refs_url = strbuf_detach(&buffer, NULL); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); @@ -511,7 +513,8 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) rpc->out = client.out; strbuf_init(&rpc->result, 0); - strbuf_addf(&buf, "%s/%s", url, svc); + end_url_with_slash(&buf, url) + strbuf_addf(&buf, "%s", svc); rpc->service_url = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); -- 1.7.0.20.gcb44ed ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-curl: ensure that URLs do not have a trailing slash 2010-04-07 14:51 [PATCH] remote-curl: ensure that URLs do not have a trailing slash Tay Ray Chuan @ 2010-04-07 15:12 ` Junio C Hamano 2010-04-07 15:57 ` Tay Ray Chuan 0 siblings, 1 reply; 10+ messages in thread From: Junio C Hamano @ 2010-04-07 15:12 UTC (permalink / raw) To: Tay Ray Chuan; +Cc: Git Mailing List, Shawn O. Pearce, Junio C Hamano Tay Ray Chuan <rctay89@gmail.com> writes: > Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> > --- > remote-curl.c | 9 ++++++--- > 1 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/remote-curl.c b/remote-curl.c > index 0782756..0f21f8a 100644 > --- a/remote-curl.c > +++ b/remote-curl.c > @@ -101,7 +101,8 @@ static struct discovery* discover_refs(const char *service) > return last; > free_discovery(last); > > - strbuf_addf(&buffer, "%s/info/refs", url); > + end_url_with_slash(&buffer, url); > + strbuf_addstr(&buffer, "info/refs"); > if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { > is_http = 1; > if (!strchr(url, '?')) > @@ -120,7 +121,8 @@ static struct discovery* discover_refs(const char *service) > strbuf_reset(&buffer); > > proto_git_candidate = 0; > - strbuf_addf(&buffer, "%s/info/refs", url); > + end_url_with_slash(&buffer, url); > + strbuf_addstr(&buffer, "info/refs"); > refs_url = strbuf_detach(&buffer, NULL); > > http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); > @@ -511,7 +513,8 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) > rpc->out = client.out; > strbuf_init(&rpc->result, 0); > > - strbuf_addf(&buf, "%s/%s", url, svc); > + end_url_with_slash(&buf, url) > + strbuf_addf(&buf, "%s", svc); > rpc->service_url = strbuf_detach(&buf, NULL); > > strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); The code does not look like it is making sure things do not have a trailing slash. For example, if svc has trailing slash, either %s/%s or strbuf_addf() would have the last character of svc in rpc->service_url. You are fixing something else. The new code avoids duplicated slashes in the middle if "url" can but does not necessarily end with a slash. Is that what you are trying to fix? I wonder if it makes more sense to make sure "url" always ends with a slash at the calling sites where it is obtained from either the end user or from the running environment... ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] remote-curl: ensure that URLs do not have a trailing slash 2010-04-07 15:12 ` Junio C Hamano @ 2010-04-07 15:57 ` Tay Ray Chuan 2010-04-07 15:58 ` [PATCH v2 1/2] http: make end_url_with_slash() public Tay Ray Chuan 2010-04-07 16:01 ` [PATCH v2 resend " Tay Ray Chuan 0 siblings, 2 replies; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-07 15:57 UTC (permalink / raw) To: Junio C Hamano; +Cc: Git Mailing List, Shawn O. Pearce Hi, On Wed, Apr 7, 2010 at 11:12 PM, Junio C Hamano <gitster@pobox.com> wrote: > The code does not look like it is making sure things do not have a > trailing slash. For example, if svc has trailing slash, either %s/%s or > strbuf_addf() would have the last character of svc in rpc->service_url. > > You are fixing something else. > > The new code avoids duplicated slashes in the middle if "url" can but does > not necessarily end with a slash. Is that what you are trying to fix? the commit message is misleading, yes. I'll have another go at it. > I > wonder if it makes more sense to make sure "url" always ends with a slash > at the calling sites where it is obtained from either the end user or from > the running environment... Good idea. -- Cheers, Ray Chuan ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v2 1/2] http: make end_url_with_slash() public 2010-04-07 15:57 ` Tay Ray Chuan @ 2010-04-07 15:58 ` Tay Ray Chuan 2010-04-07 16:01 ` [PATCH v2 resend " Tay Ray Chuan 1 sibling, 0 replies; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-07 15:58 UTC (permalink / raw) To: Git Mailing List; +Cc: Shawn O. Pearce, Junio C Hamano --- http.c | 2 +- http.h | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/http.c b/http.c index 51253e1..07a03fd 100644 --- a/http.c +++ b/http.c @@ -720,7 +720,7 @@ static inline int hex(int v) return 'A' + v - 10; } -static void end_url_with_slash(struct strbuf *buf, const char *url) +void end_url_with_slash(struct strbuf *buf, const char *url) { strbuf_addstr(buf, url); if (buf->len && buf->buf[buf->len - 1] != '/') diff --git a/http.h b/http.h index 2dd03e8..37a6a6a 100644 --- a/http.h +++ b/http.h @@ -117,6 +117,7 @@ extern void append_remote_object_url(struct strbuf *buf, const char *url, int only_two_digit_prefix); extern char *get_remote_object_url(const char *url, const char *hex, int only_two_digit_prefix); +extern void end_url_with_slash(struct strbuf *buf, const char *url); /* Options for http_request_*() */ #define HTTP_NO_CACHE 1 -- 1.6.6.1368.g82eeb >From 38c2aba1e77591d9cd57790d9a993f59659496ae Mon Sep 17 00:00:00 2001 From: Tay Ray Chuan <rctay89@gmail.com> Date: Wed, 7 Apr 2010 23:44:01 +0800 Subject: [PATCH v2 2/2] remote-curl: ensure that URLs have a trailing slash --- remote-curl.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/remote-curl.c b/remote-curl.c index 0782756..ae14137 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -9,6 +9,10 @@ #include "sideband.h" static struct remote *remote; + +/* At assignment-time, we append a trailing slash; always use this as + * if it ends with a slash. + */ static const char *url; struct options { @@ -101,7 +105,7 @@ static struct discovery* discover_refs(const char *service) return last; free_discovery(last); - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { is_http = 1; if (!strchr(url, '?')) @@ -120,7 +124,7 @@ static struct discovery* discover_refs(const char *service) strbuf_reset(&buffer); proto_git_candidate = 0; - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); refs_url = strbuf_detach(&buffer, NULL); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); @@ -511,7 +515,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) rpc->out = client.out; strbuf_init(&rpc->result, 0); - strbuf_addf(&buf, "%s/%s", url, svc); + strbuf_addf(&buf, "%s%s", url, svc); rpc->service_url = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); @@ -800,11 +804,13 @@ int main(int argc, const char **argv) remote = remote_get(argv[1]); if (argc > 2) { - url = argv[2]; + end_url_with_slash(&buf, argv[2]); } else { - url = remote->url[0]; + end_url_with_slash(&buf, remote->url[0]); } + url = strbuf_detach(&buf, NULL); + http_init(remote); do { -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 resend 1/2] http: make end_url_with_slash() public 2010-04-07 15:57 ` Tay Ray Chuan 2010-04-07 15:58 ` [PATCH v2 1/2] http: make end_url_with_slash() public Tay Ray Chuan @ 2010-04-07 16:01 ` Tay Ray Chuan 2010-04-07 16:01 ` [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan 1 sibling, 1 reply; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-07 16:01 UTC (permalink / raw) To: Git Mailing List; +Cc: Shawn O. Pearce, Junio C Hamano --- http.c | 2 +- http.h | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/http.c b/http.c index 51253e1..07a03fd 100644 --- a/http.c +++ b/http.c @@ -720,7 +720,7 @@ static inline int hex(int v) return 'A' + v - 10; } -static void end_url_with_slash(struct strbuf *buf, const char *url) +void end_url_with_slash(struct strbuf *buf, const char *url) { strbuf_addstr(buf, url); if (buf->len && buf->buf[buf->len - 1] != '/') diff --git a/http.h b/http.h index 2dd03e8..37a6a6a 100644 --- a/http.h +++ b/http.h @@ -117,6 +117,7 @@ extern void append_remote_object_url(struct strbuf *buf, const char *url, int only_two_digit_prefix); extern char *get_remote_object_url(const char *url, const char *hex, int only_two_digit_prefix); +extern void end_url_with_slash(struct strbuf *buf, const char *url); /* Options for http_request_*() */ #define HTTP_NO_CACHE 1 -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash 2010-04-07 16:01 ` [PATCH v2 resend " Tay Ray Chuan @ 2010-04-07 16:01 ` Tay Ray Chuan 2010-04-07 23:15 ` Junio C Hamano 2010-04-08 2:15 ` [PATCH v3 1/3] t5541-http-push: add test for URLs with " Tay Ray Chuan 0 siblings, 2 replies; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-07 16:01 UTC (permalink / raw) To: Git Mailing List; +Cc: Shawn O. Pearce, Junio C Hamano --- remote-curl.c | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff --git a/remote-curl.c b/remote-curl.c index 0782756..ae14137 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -9,6 +9,10 @@ #include "sideband.h" static struct remote *remote; + +/* At assignment-time, we append a trailing slash; always use this as + * if it ends with a slash. + */ static const char *url; struct options { @@ -101,7 +105,7 @@ static struct discovery* discover_refs(const char *service) return last; free_discovery(last); - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { is_http = 1; if (!strchr(url, '?')) @@ -120,7 +124,7 @@ static struct discovery* discover_refs(const char *service) strbuf_reset(&buffer); proto_git_candidate = 0; - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); refs_url = strbuf_detach(&buffer, NULL); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); @@ -511,7 +515,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) rpc->out = client.out; strbuf_init(&rpc->result, 0); - strbuf_addf(&buf, "%s/%s", url, svc); + strbuf_addf(&buf, "%s%s", url, svc); rpc->service_url = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); @@ -800,11 +804,13 @@ int main(int argc, const char **argv) remote = remote_get(argv[1]); if (argc > 2) { - url = argv[2]; + end_url_with_slash(&buf, argv[2]); } else { - url = remote->url[0]; + end_url_with_slash(&buf, remote->url[0]); } + url = strbuf_detach(&buf, NULL); + http_init(remote); do { -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash 2010-04-07 16:01 ` [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan @ 2010-04-07 23:15 ` Junio C Hamano 2010-04-08 2:15 ` [PATCH v3 1/3] t5541-http-push: add test for URLs with " Tay Ray Chuan 1 sibling, 0 replies; 10+ messages in thread From: Junio C Hamano @ 2010-04-07 23:15 UTC (permalink / raw) To: Tay Ray Chuan; +Cc: Git Mailing List, Shawn O. Pearce You didn't explain what it is for, nor sign-off this patch, but is this a clean-up? Is this a bugfix? Is this an RFC? ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH v3 1/3] t5541-http-push: add test for URLs with trailing slash 2010-04-07 16:01 ` [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan 2010-04-07 23:15 ` Junio C Hamano @ 2010-04-08 2:15 ` Tay Ray Chuan 2010-04-08 2:15 ` [PATCH v3 2/3] http: make end_url_with_slash() public Tay Ray Chuan 1 sibling, 1 reply; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-08 2:15 UTC (permalink / raw) To: Git Mailing List; +Cc: Junio C Hamano Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> --- t/t5541-http-push.sh | 29 ++++++++++++++++++++++++++++- 1 files changed, 28 insertions(+), 1 deletions(-) diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index 795dc2b..e94ac78 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -34,8 +34,34 @@ test_expect_success 'setup remote repository' ' mv test_repo.git "$HTTPD_DOCUMENT_ROOT_PATH" ' -test_expect_success 'clone remote repository' ' +cat >exp <<EOF +GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 +POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 +EOF +test_expect_failure 'no empty path components' ' + # In the URL, add a trailing slash, and see if git appends yet another + # slash. cd "$ROOT_PATH" && + git clone $HTTPD_URL/smart/test_repo.git/ test_repo_clone && + + sed -e " + s/^.* \"// + s/\"// + s/ [1-9][0-9]*\$// + s/^GET /GET / + " >act <"$HTTPD_ROOT_PATH"/access.log && + + # Clear the log, so that it does not affect the "used receive-pack + # service" test which reads the log too. + # + # We do this before the actual comparison to ensure the log is cleared. + echo > "$HTTPD_ROOT_PATH"/access.log && + + test_cmp exp act +' + +test_expect_success 'clone remote repository' ' + rm -rf test_repo_clone && git clone $HTTPD_URL/smart/test_repo.git test_repo_clone ' @@ -68,6 +94,7 @@ test_expect_success 'create and delete remote branch' ' ' cat >exp <<EOF + GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 GET /smart/test_repo.git/info/refs?service=git-receive-pack HTTP/1.1 200 -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 2/3] http: make end_url_with_slash() public 2010-04-08 2:15 ` [PATCH v3 1/3] t5541-http-push: add test for URLs with " Tay Ray Chuan @ 2010-04-08 2:15 ` Tay Ray Chuan 2010-04-08 2:15 ` [PATCH v3 3/3] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan 0 siblings, 1 reply; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-08 2:15 UTC (permalink / raw) To: Git Mailing List; +Cc: Junio C Hamano Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> --- http.c | 2 +- http.h | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/http.c b/http.c index 51253e1..07a03fd 100644 --- a/http.c +++ b/http.c @@ -720,7 +720,7 @@ static inline int hex(int v) return 'A' + v - 10; } -static void end_url_with_slash(struct strbuf *buf, const char *url) +void end_url_with_slash(struct strbuf *buf, const char *url) { strbuf_addstr(buf, url); if (buf->len && buf->buf[buf->len - 1] != '/') diff --git a/http.h b/http.h index 2dd03e8..37a6a6a 100644 --- a/http.h +++ b/http.h @@ -117,6 +117,7 @@ extern void append_remote_object_url(struct strbuf *buf, const char *url, int only_two_digit_prefix); extern char *get_remote_object_url(const char *url, const char *hex, int only_two_digit_prefix); +extern void end_url_with_slash(struct strbuf *buf, const char *url); /* Options for http_request_*() */ #define HTTP_NO_CACHE 1 -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v3 3/3] remote-curl: ensure that URLs have a trailing slash 2010-04-08 2:15 ` [PATCH v3 2/3] http: make end_url_with_slash() public Tay Ray Chuan @ 2010-04-08 2:15 ` Tay Ray Chuan 0 siblings, 0 replies; 10+ messages in thread From: Tay Ray Chuan @ 2010-04-08 2:15 UTC (permalink / raw) To: Git Mailing List; +Cc: Junio C Hamano Previously, we blindly assumed that URLs passed to the remote-curl helper did not end with a trailing slash. Use the convenience function end_url_with_slash() from http.[ch] to ensure that URLs have a trailing slash on invocation of the remote-curl helper, and use the URL as one with a trailing slash throughout. It is possible for users to pass a URL with a trailing slash to remote-curl, by, say, setting it in remote.<name>.url in their git config. The resulting requests have an empty path component (//) and may break implementations of the http git protocol. Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> --- remote-curl.c | 16 +++++++++++----- t/t5541-http-push.sh | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/remote-curl.c b/remote-curl.c index 0782756..ae14137 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -9,6 +9,10 @@ #include "sideband.h" static struct remote *remote; + +/* At assignment-time, we append a trailing slash; always use this as + * if it ends with a slash. + */ static const char *url; struct options { @@ -101,7 +105,7 @@ static struct discovery* discover_refs(const char *service) return last; free_discovery(last); - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); if (!prefixcmp(url, "http://") || !prefixcmp(url, "https://")) { is_http = 1; if (!strchr(url, '?')) @@ -120,7 +124,7 @@ static struct discovery* discover_refs(const char *service) strbuf_reset(&buffer); proto_git_candidate = 0; - strbuf_addf(&buffer, "%s/info/refs", url); + strbuf_addf(&buffer, "%sinfo/refs", url); refs_url = strbuf_detach(&buffer, NULL); http_ret = http_get_strbuf(refs_url, &buffer, HTTP_NO_CACHE); @@ -511,7 +515,7 @@ static int rpc_service(struct rpc_state *rpc, struct discovery *heads) rpc->out = client.out; strbuf_init(&rpc->result, 0); - strbuf_addf(&buf, "%s/%s", url, svc); + strbuf_addf(&buf, "%s%s", url, svc); rpc->service_url = strbuf_detach(&buf, NULL); strbuf_addf(&buf, "Content-Type: application/x-%s-request", svc); @@ -800,11 +804,13 @@ int main(int argc, const char **argv) remote = remote_get(argv[1]); if (argc > 2) { - url = argv[2]; + end_url_with_slash(&buf, argv[2]); } else { - url = remote->url[0]; + end_url_with_slash(&buf, remote->url[0]); } + url = strbuf_detach(&buf, NULL); + http_init(remote); do { diff --git a/t/t5541-http-push.sh b/t/t5541-http-push.sh index e94ac78..17e1bdc 100755 --- a/t/t5541-http-push.sh +++ b/t/t5541-http-push.sh @@ -38,7 +38,7 @@ cat >exp <<EOF GET /smart/test_repo.git/info/refs?service=git-upload-pack HTTP/1.1 200 POST /smart/test_repo.git/git-upload-pack HTTP/1.1 200 EOF -test_expect_failure 'no empty path components' ' +test_expect_success 'no empty path components' ' # In the URL, add a trailing slash, and see if git appends yet another # slash. cd "$ROOT_PATH" && -- 1.6.6.1368.g82eeb ^ permalink raw reply related [flat|nested] 10+ messages in thread
end of thread, other threads:[~2010-04-08 2:15 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-04-07 14:51 [PATCH] remote-curl: ensure that URLs do not have a trailing slash Tay Ray Chuan 2010-04-07 15:12 ` Junio C Hamano 2010-04-07 15:57 ` Tay Ray Chuan 2010-04-07 15:58 ` [PATCH v2 1/2] http: make end_url_with_slash() public Tay Ray Chuan 2010-04-07 16:01 ` [PATCH v2 resend " Tay Ray Chuan 2010-04-07 16:01 ` [PATCH v2 resend 2/2] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan 2010-04-07 23:15 ` Junio C Hamano 2010-04-08 2:15 ` [PATCH v3 1/3] t5541-http-push: add test for URLs with " Tay Ray Chuan 2010-04-08 2:15 ` [PATCH v3 2/3] http: make end_url_with_slash() public Tay Ray Chuan 2010-04-08 2:15 ` [PATCH v3 3/3] remote-curl: ensure that URLs have a trailing slash Tay Ray Chuan
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.