* RE: Trying to understand the web dav details
2013-01-06 4:19 ` Jeff King
@ 2013-01-06 4:49 ` Pyeron, Jason J CTR (US)
2013-01-06 5:38 ` Jeff King
0 siblings, 1 reply; 5+ messages in thread
From: Pyeron, Jason J CTR (US) @ 2013-01-06 4:49 UTC (permalink / raw)
To: 'git'
[-- Attachment #1: Type: text/plain, Size: 11629 bytes --]
> -----Original Message-----
> From: Jeff King
> Sent: Saturday, January 05, 2013 11:20 PM
>
> On Sat, Jan 05, 2013 at 08:32:09PM -0500, Jason Pyeron wrote:
>
> > When doing a clone by https (reverse proxied to http) the first
> request is
> >
> > GET /git/project/info/refs?service=git-upload-pack
> >
> > How does the ?service=xxxx get translated in to the action performed
> on the web
> > server?
>
> If you are using the git-http-backend CGI, it will interpret the
> service
No, using plain jane http and webdav. This server is not "allowed" to use cgi processes.
> tag and start smart-http. See "git help http-backend" for details on
> plugging it into Apache.
>
> Cloning/fetching does not use DAV at all; it is only for non-smart
> pushing (and I would not recommend setting it up; the smart protocol
> spoken by git-http-backend does pushing much more efficiently, and is
> better maintained).
>
> > I ask because I have 2 projects, one works the other does not.
Should have said I get a 404 versus 200, see below.
> >
> > I am using httpd-2.0.52-49.ent.centos4 and git-1.7.9.6-1.
> >
> > I am not even sure what to tell more about or where to look next.
>
> If you haven't set up git-http-backend, then git is just going to fetch
> the remote repo's data directly over http. So the usual advice for
> accessing something via http would apply (check the server's access and
> error logs, try hitting it with a web browser, etc).
>
> If you set GIT_CURL_VERBOSE=1 in your environment, git will spew a lot
That’s what I did before mailing out the first time. I tried to summarize the contents, but I will paste the relevant portions below.
> of debugging information about what http requests it is making. That
> might give you a clue (you haven't said anything about what does not
> work, so I can't be more specific).
Below are two traces, the first one is the one that does not work, the second does. I cannot see any differences on the web server for the two directory trees.
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
jason.pyeron@localhost ~/tmp
$ GIT_TRACE=1 GIT_CURL_VERBOSE=1 git clone https://server/git/project-x
trace: built-in: git 'clone' 'https://server/git/project-x'
Cloning into 'project-x'...
trace: run_command: 'git-remote-https' 'origin' 'https://server/git/project-x'
* Couldn't find host server in the .netrc file; using defaults
* About to connect() to proxy 214.36.0.135 port 8080 (#0)
* Trying 214.36.0.135...
* 0x80076a48 is at send pipe head!
* STATE: CONNECT => WAITCONNECT handle 0x8007f3c0; (connection #0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Establish HTTP proxy tunnel to server:443
> CONNECT server:443 HTTP/1.1
Host: server:443
User-Agent: git/1.7.9
Proxy-Connection: Keep-Alive
Pragma: no-cache
* STATE: WAITCONNECT => WAITPROXYCONNECT handle 0x8007f3c0; (connection #0)
* Multi mode finished polling for response from proxy CONNECT
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
* CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none
* STATE: WAITPROXYCONNECT => WAITCONNECT handle 0x8007f3c0; (connection #0)
* STATE: WAITCONNECT => PROTOCONNECT handle 0x8007f3c0; (connection #0)
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
* subject: C=US; ST=Maryland; O=PD Inc; OU=Intranet; CN=server; emailAddress=security@pdinc.us
* start date: 201
* expire date: 201
* issuer: C=U
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* STATE: PROTOCONNECT => DO handle 0x8007f3c0; (connection #0)
> GET /git/project-x/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.9
Host: server
Accept: */*
Pragma: no-cache
* STATE: DO => DO_DONE handle 0x8007f3c0; (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x8007f3c0; (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x8007f3c0; (connection #0)
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* The requested URL returned error: 404 Not Found
* Closing connection #0
* Couldn't find host server in the .netrc file; using defaults
* About to connect() to proxy 214.36.0.135 port 8080 (#0)
* Trying 214.36.0.135...
* 0x80076a48 is at send pipe head!
* STATE: CONNECT => WAITCONNECT handle 0x80139640; (connection #0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Establish HTTP proxy tunnel to server:443
> CONNECT server:443 HTTP/1.1
Host: server:443
User-Agent: git/1.7.9
Proxy-Connection: Keep-Alive
Pragma: no-cache
* STATE: WAITCONNECT => WAITPROXYCONNECT handle 0x80139640; (connection #0)
* Multi mode finished polling for response from proxy CONNECT
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
* CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none
* SSL re-using session ID
* STATE: WAITPROXYCONNECT => WAITCONNECT handle 0x80139640; (connection #0)
* STATE: WAITCONNECT => PROTOCONNECT handle 0x80139640; (connection #0)
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
* subject: C=US; ST=Maryland; O=PD Inc; OU=Intranet; CN=server; emailAddress=security@pdinc.us
* start date: 201
* expire date: 201
* issuer: C=U
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* STATE: PROTOCONNECT => DO handle 0x80139640; (connection #0)
> GET /git/project-x/info/refs HTTP/1.1
User-Agent: git/1.7.9
Host: server
Accept: */*
Pragma: no-cache
* STATE: DO => DO_DONE handle 0x80139640; (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x80139640; (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x80139640; (connection #0)
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* The requested URL returned error: 404 Not Found
* Closing connection #0
fatal: https://server/git/project-x/info/refs not found: did you run git update-server-info on the server?
**************************************************************************
**************************************************************************
**************************************************************************
**************************************************************************
jason.pyeron@localhost ~/tmp
$ GIT_TRACE=1 GIT_CURL_VERBOSE=1 git clone https://server/git/test
trace: built-in: git 'clone' 'https://server/git/test'
Cloning into 'test'...
trace: run_command: 'git-remote-https' 'origin' 'https://server/git/test'
* Couldn't find host server in the .netrc file; using defaults
* About to connect() to proxy 214.36.0.135 port 8080 (#0)
* Trying 214.36.0.135...
* 0x80076968 is at send pipe head!
* STATE: CONNECT => WAITCONNECT handle 0x8007f2c8; (connection #0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Establish HTTP proxy tunnel to server:443
> CONNECT server:443 HTTP/1.1
Host: server:443
User-Agent: git/1.7.9
Proxy-Connection: Keep-Alive
Pragma: no-cache
* STATE: WAITCONNECT => WAITPROXYCONNECT handle 0x8007f2c8; (connection #0)
* Multi mode finished polling for response from proxy CONNECT
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
* CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none
* STATE: WAITPROXYCONNECT => WAITCONNECT handle 0x8007f2c8; (connection #0)
* STATE: WAITCONNECT => PROTOCONNECT handle 0x8007f2c8; (connection #0)
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
* subject: C=US; ST=Maryland; O=PD Inc; OU=Intranet; CN=server; emailAddress=security@pdinc.us
* start date: 201
* expire date: 201
* issuer: C=U
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* STATE: PROTOCONNECT => DO handle 0x8007f2c8; (connection #0)
> GET /git/test/info/refs?service=git-upload-pack HTTP/1.1
User-Agent: git/1.7.9
Host: server
Accept: */*
Pragma: no-cache
* STATE: DO => DO_DONE handle 0x8007f2c8; (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x8007f2c8; (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x8007f2c8; (connection #0)
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* additional stuff not fine /usr/src/ports/curl/curl-7.27.0-1/src/curl-7.27.0/lib/transfer.c:1037: 0 0
* HTTP 1.1 or later with persistent connection, pipelining supported
< HTTP/1.1 200 OK
< Date: Sun, 06 Jan 2013 04:26:14 GMT
< Server: Apache/2.0.52 (CentOS)
< Last-Modified: Fri, 02 Nov 2012 05:05:55 GMT
< ETag: "714064-3b-172852c0"
< Accept-Ranges: bytes
< Content-Length: 59
< Content-Type: text/plain; charset=UTF-8
< Connection: close
<
* STATE: PERFORM => DONE handle 0x8007f2c8; (connection #0)
* Closing connection #0
* Couldn't find host server in the .netrc file; using defaults
* About to connect() to proxy 214.36.0.135 port 8080 (#0)
* Trying 214.36.0.135...
* 0x80076968 is at send pipe head!
* STATE: CONNECT => WAITCONNECT handle 0x801395e8; (connection #0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Connected to 214.36.0.135 (214.36.0.135) port 8080 (#0)
* Establish HTTP proxy tunnel to server:443
> CONNECT server:443 HTTP/1.1
Host: server:443
User-Agent: git/1.7.9
Proxy-Connection: Keep-Alive
Pragma: no-cache
* STATE: WAITCONNECT => WAITPROXYCONNECT handle 0x801395e8; (connection #0)
* Multi mode finished polling for response from proxy CONNECT
< HTTP/1.1 200 Connection established
<
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations:
* CAfile: /usr/ssl/certs/ca-bundle.crt
CApath: none
* SSL re-using session ID
* STATE: WAITPROXYCONNECT => WAITCONNECT handle 0x801395e8; (connection #0)
* STATE: WAITCONNECT => PROTOCONNECT handle 0x801395e8; (connection #0)
* SSL connection using DHE-RSA-AES256-SHA
* Server certificate:
* subject: C=US; ST=Maryland; O=PD Inc; OU=Intranet; CN=server; emailAddress=security@pdinc.us
* start date: 201
* expire date: 201
* issuer: C=U
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
* STATE: PROTOCONNECT => DO handle 0x801395e8; (connection #0)
> GET /git/test/HEAD HTTP/1.1
[-- Attachment #2: smime.p7s --]
[-- Type: application/x-pkcs7-signature, Size: 5615 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread