のいじーメモ

勉強したことを忘れないうちにメモしていくためのブログ

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