2013-01-23 12 views
7

私はいくつかの変更をプッシュしようとしていますが、git pushがハングアップしています。 git pushを実行すると出力が表示されず、何も起きていないようです。 topには何も起こっておらず、何も起こっていません。HTTP/1.1の後にgit push(HTTP)がHTTP/1.1の後にhttpsでハングアップする

私はgitホスティングサービスを制御しません。私はHTTPS URLを使用しています。私はホスティングサービスがgitの "スマートHTTP"プロトコルではなく、ダムHTTPSを使用していると考えています。クライアント側では、Mac OS Xを使用しています。私はgit 1.8.1.1をHomebrew経由でインストールしています(ただし、Xcodeのコマンドラインツールに含まれるgitのバージョンを使用しても違いはありません)。ログアウトしてログインし直すことは役に立たないようです。別のLinuxボックスからこのホスティングサービス/リポジトリにプッシュしてプッシュすることができます。それだけで立ち往生だ:以下

は、クライアントが、PROPFIND要求を発行し、サーバからHTTP/1.1 100 Continue応答を取得した後、何も起こりません後git pushぶら下げを示し、いくつかのデバッグ出力です。

これはどのように機能しますか?私が試すことができるトラブルシューティングの手順はありますか?

$ GIT_CURL_VERBOSE=1 git push -v 
Pushing to https://secure2.svnrepository.com/redacted/redacted/ 
* About to connect() to secure2.svnrepository.com port 443 (#0) 
* Trying 67.228.18.88... 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* SSL connection using DHE-RSA-AES256-SHA 
* Server certificate: 
* subject: C=US; OU=Domain Control Validated; CN=secure2.svnrepository.com 
* start date: 2012-01-09 16:16:59 GMT 
* expire date: 2015-02-09 02:52:45 GMT 
* subjectAltName: secure2.svnrepository.com matched 
* issuer: O=AlphaSSL; CN=AlphaSSL CA - G2 
* SSL certificate verify ok. 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 401 Authorization Required 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< WWW-Authenticate: Basic realm="redacted" 
< Content-Length: 493 
< Content-Type: text/html; charset=iso-8859-1 
< 
* Ignoring the response-body 
* Connection #0 to host secure2.svnrepository.com left intact 
* Issue another request to this URL: 'https://secure2.svnrepository.com/redacted/redacted/info/refs?service=git-receive-pack' 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 200 OK 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< Last-Modified: Wed, 23 Jan 2013 03:00:40 GMT 
< ETag: "143802e-3b-e6374600" 
< Accept-Ranges: bytes 
< Content-Length: 59 
< Content-Type: text/plain; charset=UTF-8 
< 
* Connection #0 to host (nil) left intact 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> GET /redacted/redacted/HEAD HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Accept-Encoding: gzip 
Pragma: no-cache 

< HTTP/1.1 200 OK 
< Date: Wed, 23 Jan 2013 03:29:36 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< Last-Modified: Wed, 16 Jan 2013 21:05:31 GMT 
< ETag: "d1802c-17-3d0d7cc0" 
< Accept-Ranges: bytes 
< Content-Length: 23 
< Content-Type: text/plain; charset=UTF-8 
< 
* Connection #0 to host (nil) left intact 
* About to connect() to secure2.svnrepository.com port 443 (#0) 
* Trying 67.228.18.88... 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* Connected to secure2.svnrepository.com (67.228.18.88) port 443 (#0) 
* SSL connection using DHE-RSA-AES256-SHA 
* Server certificate: 
* subject: C=US; OU=Domain Control Validated; CN=secure2.svnrepository.com 
* start date: 2012-01-09 16:16:59 GMT 
* expire date: 2015-02-09 02:52:45 GMT 
* subjectAltName: secure2.svnrepository.com matched 
* issuer: O=AlphaSSL; CN=AlphaSSL CA - G2 
* SSL certificate verify ok. 
> PROPFIND /redacted/redacted/ HTTP/1.1 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Depth: 0 
Content-Type: text/xml 
Content-Length: 181 
Expect: 100-continue 

< HTTP/1.1 100 Continue 
* We are completely uploaded and fine 
< HTTP/1.1 401 Authorization Required 
< Date: Wed, 23 Jan 2013 03:29:37 GMT 
< Server: Apache/2.2.3 (Red Hat) 
< WWW-Authenticate: Basic realm="redacted" 
< Content-Length: 493 
< Content-Type: text/html; charset=iso-8859-1 
* the ioctl callback returned 0 
< 
* Ignoring the response-body 
* Connection #0 to host secure2.svnrepository.com left intact 
* Issue another request to this URL: 'https://secure2.svnrepository.com/redacted/redacted/' 
* Re-using existing connection! (#0) with host (nil) 
* Connected to (nil) (67.228.18.88) port 443 (#0) 
* Server auth using Basic with user 'redacted' 
> PROPFIND /redacted/redacted/ HTTP/1.1 
Authorization: Basic redacted= 
User-Agent: git/1.8.1.1 
Host: secure2.svnrepository.com 
Accept: */* 
Depth: 0 
Content-Type: text/xml 
Content-Length: 181 
Expect: 100-continue 

< HTTP/1.1 100 Continue 

その後、私は私のMac OS Xマシン上straceを持っていない、と私はdtrussがルートであることを私を必要とするため、それがぶら下がっている呼んシステムを参照するためにdtrussを使用する方法を見つけ出すことはできませんし、 git pushは違った動作をします。

アップデート:私はgit 1.8.1.4とstraceを備えたLinuxマシンでこれを再現しました。それがハングアップする前にstraceのを実行すると、次のようなものを示しています

sendto(4, <redacted>..., 314, 0, NULL, 0) = 314 
recvfrom(4, "\27\3\1\0000", 5, 0, NULL, NULL) = 5 
recvfrom(4, "E\202\271\21\236p\200\346\374\3641\355\t\275\rLi\202T)\326\271l/\351\f\357\2769Jb\22"..., 48, 0, NULL, NULL) = 48 
select(5, [4], [4], [], {0, 729000}) = 1 (out [4], left {0, 728997}) 
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=4, events=POLLOUT|POLLWRNORM}], 2, 0) = 1 ([{fd=4, revents=POLLOUT|POLLWRNORM}]) 
select(5, [4], [], [], {0, 729000}) = 0 (Timeout) 
poll([{fd=4, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) 
...last 2 lines repeat infinitely... 

だから、サーバーから何かを受け取ることを期待ぶら下がっているように見えます。

また、git 1.7.4.4を実行している古いLinuxボックスでGIT_CURL_VERBOSE=1 git push -vと同様のトレースを試みました。同じプレフィックスで始まり、そこから続けます。それは、すべての作業だ古いgitの、と古いマシンで

$ grep '^> [A-Z]' git-1.8.1.1-trace.stderr 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
> GET /redacted/redacted/info/refs?service=git-receive-pack HTTP/1.1 
> GET /redacted/redacted/HEAD HTTP/1.1 
> PROPFIND /redacted/redacted/ HTTP/1.1 
> PROPFIND /redacted/redacted/ HTTP/1.1 

:新しいgitのと壊れたマシン上で両方のマシン上の完全なトレースを見ると

$ grep '^> [A-Z]' git-1.7.4.4-trace.stderr 
> GET /g_wagner/c79-s13/info/refs?service=git-receive-pack HTTP/1.1 
> GET /g_wagner/c79-s13/info/refs?service=git-receive-pack HTTP/1.1 
> GET /g_wagner/c79-s13/HEAD HTTP/1.1 
> PROPFIND /g_wagner/c79-s13/ HTTP/1.1 
> PROPFIND /g_wagner/c79-s13/ HTTP/1.1 
> HEAD /g_wagner/c79-s13/info/refs HTTP/1.1 
> HEAD /g_wagner/c79-s13/objects/info/packs HTTP/1.1 
> MKCOL /g_wagner/c79-s13/info/ HTTP/1.1 
> LOCK /g_wagner/c79-s13/info/refs HTTP/1.1 
> GET /g_wagner/c79-s13/objects/info/packs HTTP/1.1 
... 
> UNLOCK /g_wagner/c79-s13/info/refs HTTP/1.1 

、私はできません問題のあるPROPFIND要求(2番目のPROPFIND)で送信されるものの違いを確認してください。User-Agent:ヘッダーを除いて、両方の要求が同一であるように見えます。

+0

' cjc343

+0

ありがとう、@ cjc343。それをさらにトラブルシューティングする方法に関するヒント?私は '〜/ .netrc'を認証に使用しています。私は'〜/ .netrc'が別の(Linux)マシン上の値と正確に同じであることを確認しました。また、私はこのマシンから正常にプルできるようになりました。これも認証資格証明を必要とするでしょう - それはすべて非常に困惑しています。 –

+0

これは確かに奇妙なことです...残念ながら、私はいつも認証のためにsshを使用してきたので、http/sを介してgitに慣れていません。誤って権限を引き出したままにしておくと、プッシュできないという意味がなくなり、 '.netrc'の権限があまりにも開いているか、リモートに含まれているユーザ名などの可能性がほとんどスローされますその場合は上記のように)、窓から出てください。あなたが含まれているユーザー名を持っているリモートを追加する場合、押しているときにパスワードを入力するように促すのですか?うまくいけば、誰かが間違っていることの良いアイデアを持っているといいです... – cjc343

答えて

2

同じ症状の問題があります(プロセスはHTTP/1.1 100 Continueでハングします)。

私はこの問題を解決するコミットを見つけました:http-push.c: make CURLOPT_IOCTLDATA a usable pointerGITリリースv2.0.3で利用可能です。

明らかに、ユーザーがサーバー上で正しく認証されていないように見えるのは、通信のようです。

同じGITバージョンがインストールされているマシンでは表示されませんが、私にとってはGITが1ヶ月以内に作業を停止してしまったため、何が原因なのか本当に言えません。

可能であれば、他のプロトコル(SSHまたはHTTPS)を許可するGITサービスプロバイダを使用してください。これらは、デバッグがはるかに優れています。 Windowsの場合


は、ここlibexec\git-core\git-http-push.exeを上書き/にコピーし、あなたのmsysGitインストールにバックポート、それを解凍し、msysGitのインストールフォルダにするには(msysGit project instructionsに基づく)git-http-push 2.1.0-rc2ビルド

が私の感想です。

問題はhereと報告されています。

更新

最新msysGit(Gitの-1.9.4-preview20140815)がバックポートバグ修正が含まれています。

関連する問題