發現按照git push 卡住去google,能搜到不少之前同行發的blog有提到,但貌似沒有解決的。這個問題在msysgit的最新版已經解決了,希望這個solution擴散出去。讓更多的程序猿同學看到。
=====================
啊啊啊,研究了兩天,終於找到solution了。。先仰天長嘯一會兒
=====================
項目組使用的server掛掉了,硬盤損毀,svn等好多內容不再可用,恢復無望。
雖然我們的代碼之前並未怎么在上面放,但是前車之鑒,這個時候就體現除了git的高大上了。於是准備拋棄之前搭建的svn,搞個git。
在閑置的mac server上使用gitosis搭建,跑起了git daemon。使用ssh-gen來checkin,覺得好方便有木有!!!高大上有木有!!!
直到我在windows里面掛掉了。。。
大概是這樣的(從原帖copy的):
git clone git://xxx.xxx/xxx.git
然后添加文件,編輯,git add,commit,然后push,結果:
[master 9447645] test
1 file changed, 1 insertion(+)
Counting objects: 20, done.
Compressing objects: 100% (12/12), done.
Writing objects: 100% (18/18)
就此卡住不動,變更也沒有push進去。。。。進不去。。。不去。。。去。。。
還以為是自己打開的方式不對,各種重試,重試,重試,換個姿勢,重試。。。結果,google吧(順便鄙視百度,毛也搜不出來),翻遍互聯網終於等到你~還好我沒放棄。
windows的git工具,甭管是gui還是command tool,統統是基於msysgit的。而msysgit在實現上,有一點兒小瑕疵,查了萬千資料,發現這個問題,由於開源的貢獻者們太少太忙太不容易,耽誤了4年沒解決。據說是對什么side-bind-64bit的支持不好導致的。what the hell! 誰曉得那是個啥。。。
搜遍了各種solution,有牛人在server端修改git的binary文件,據說可以糊弄過關。但我不是在linux里面搭建的git server,而是mac;也沒在binary文件里面找到那個要修改的string。
最后終於發現開源大牛們給出了一個解決辦法(為毛早沒發現啊,足足兩天啊。。。),在msysgit的最新版本1.9.4里,可以通過一個設置來擺平:
在git的config里面添加:
git config --global sendpack.sideband false
對我來講,it works fine.
從此git任我行。怎么push怎么酷炫。
媽媽再也不用擔心我的server掛掉了。一行代碼費了兩天牛勁,雖然感覺好像被耍了;但還是覺得挺充實的。
以上。
順便附上這個問題曠日持久的討論:
https://github.com/msysgit/git/issues/101#
再次感謝開源的大牛們
哦,對了,他們絕大部分看不懂中文: A BIG BIG THANK TO THE GUYS WHO IS WORKING FOR THE OPEN SOURCE PROJECTS!