Windows Server 2012 R2でGitサーバーを構築した時のトラブルシューティング
リモートリポジトリからgit cloneができない。
サーバー側で正常に動いているのに外部からできないのはネットワーク周りが原因だろうという予測のもと、もう一度clone時のパケットをwiresharkで覗いているとやはりcloneの途中(upload-pack.exe実行時?)でRSTが返されている。
これについて調べていると、TCPReplayをというツールを間にかませることで解決できたという記事を見かけたので試したところトラブルの解決に至った。
Gitのupload-packの通信方法が原因っぽい?
以下git daemonの立ち上げ順序です
git daemon を立ち上げる
git daemon --verbose --export-all --enable=receive-pack --base-path=C:¥Users¥Administrator¥Desktop --port=9417
TCPReplayを実行
cd C:¥Users¥Administrator¥Desktop¥TCPRelay-master¥bin¥Debug
TCPRelay.exe 0.0.0.0 9418 127.0.0.1 9417
TCPReplayのビルド方法(.NET Framework2.0必須)まず.NET Framework2.0の導入
コントロールパネル→プログラム→Windowsの機能の有効化または無効化
.NET Framework 3.5 Featuresにチェック
インストール
TCPReplayのダウンロード
https://github.com/HiraokaHyperTools/TCPRelay
C:¥Windows¥Microsoft.NET¥Framework64¥v2.0.50727¥MSBuild.exe C:¥Users¥Administrator¥Desktop¥TCPRelay-master¥TCPRelay.csproj /t:build
MSBuildのパスとTCPReplayのパスは自分の環境に合わせる
コンパイル後の実行ファイルはここらへんにあるはず
C:¥Users¥Administrator¥Desktop¥TCPRelay-master¥bin¥Debug
git push時に
Writing objects: 100%
くらいまで出た後止まる場合(windowsのGitのバグらしい)
git config --global sendpack.sideband false