From: "Shawn O. Pearce" <spearce@spearce.org>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: git@vger.kernel.org
Subject: Re: Add Git-aware CGI for Git-aware smart HTTP transport
Date: Wed, 13 Aug 2008 07:53:41 -0700 [thread overview]
Message-ID: <20080813145341.GA3782@spearce.org> (raw)
In-Reply-To: <48A262B9.8020608@zytor.com>
[...added git ML back to thread...]
"H. Peter Anvin" <hpa@zytor.com> wrote:
> Shawn O. Pearce wrote:
>> The plan I've proposed requires wedging the CGI in between the HTTP
>> server and the repository files. Which means older dumb clients
>> get data by forking off the CGI, rather than letting the HTTP server
>> stream the file itself.
>
> Yeah, that's quite a bit unfortunate, because it means some potentially
> very expensive buffering in Apache. That's one reason to do some kind
> of redirection.
Hmm. So what if the "smart" protocol used a redirect to the CGI
and the dumb protocol didn't use any redirects at all? I say this
because I think the dumb protocol won't handle redirects well.
It will do them, but it would incur a redirect on every request
it makes.
So if we have the "smart" protocol perform detection by trying:
C: HEAD /path/to/repository.git/git-http-backend HTTP/1.0
S: HTTP/1.0 302 Found
S: Location: /git-http/path/to/repository.git
Under Apache this server configuration can be easily handled by a
mod_rewrite regex:
RewriteRule ^(/pub/scm/.*)/git-http-backend$ /git/$1 [R,L]
ScriptAlias /git/ /path/to/git-http-backend/
Individual users could also install the git-http-backend CGI
right into their repository, in which case the CGI if invoked with
no PATH_INFO can do a redirect back to itself to indicate where
GIT_DIR is:
C: HEAD /path/to/repository.git/git-http-backend HTTP/1.0
S: HTTP/1.0 302 Found
S: Location: /path/to/repository.git/git-http-backend/.
Individual operations can be selected by appending on the operation
name, so <Location ~ > style rules can be used to apply access
controls, such as:
# Disallow push to any smart repository via ScriptAlias
#
<Location ~ ^/git/.*/receive-pack$>
Order Deny,Allow
Deny from all
</Location>
# Disallow push to any smart repository with CGI in tree.
#
<Location ~ .*/git-http-backend/./receive-pack$>
Order Deny,Allow
Deny from all
</Location>
Setting this up on a server which doesn't have the power of mod_regex
available would be tricky, as you need to link the CGI into every
single repository you are serving. I don't know (or use) many other
HTTP servers beyond Apache so I'm not sure if they can do this.
--
Shawn.
next parent reply other threads:[~2008-08-13 14:54 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200808130326.m7D3Pr2V000918@terminus.zytor.com>
[not found] ` <20080813032812.GD5855@spearce.org>
[not found] ` <48A262B9.8020608@zytor.com>
2008-08-13 14:53 ` Shawn O. Pearce [this message]
2008-08-13 15:41 ` Add Git-aware CGI for Git-aware smart HTTP transport H. Peter Anvin
2008-08-03 2:56 More on git over HTTP POST Shawn O. Pearce
2008-08-03 7:25 ` [RFC 1/2] Add backdoor options to receive-pack for use in Git-aware CGI Shawn O. Pearce
2008-08-03 7:25 ` [RFC 2/2] Add Git-aware CGI for Git-aware smart HTTP transport Shawn O. Pearce
2008-08-03 22:16 ` Junio C Hamano
2008-08-04 3:59 ` Shawn O. Pearce
2008-08-04 9:53 ` Rogan Dawes
2008-08-04 14:48 ` Shawn O. Pearce
2008-08-05 1:03 ` H. Peter Anvin
2008-08-05 1:24 ` Shawn O. Pearce
2008-08-05 1:35 ` H. Peter Anvin
2008-08-05 1:57 ` Shawn O. Pearce
2008-08-05 2:02 ` H. Peter Anvin
2008-08-13 1:56 ` H. Peter Anvin
2008-08-13 2:37 ` Shawn O. Pearce
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080813145341.GA3782@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=hpa@zytor.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.