轉載自:
http://www.linuxeden.com/html/develop/20090723/66951.html
http://mysuperbaby.iteye.com/blog/935741
經常有使用SCM下載源碼的必要,尤其是軟體開發人員。但偶們的網路環境經常逼得我們不得不使用代理,或者是因為速度,或者是因為直連根本就不通。而且源碼通常是零零碎碎的幾千幾萬個小檔案,不像一般的軟體是單個的檔案,一個下載工具即可搞定。
1,CVS
CVS使用代理非常麻煩,似乎不能用http代理(如果偶錯了請提醒),而socks代理相當難找。好在這個東東已經慢慢變成了昨日黃花,我們不討論它。
2,SVN
SVN比較方便,編輯~/.subversion/servers檔案即可:
[global]
http-proxy-host = <代理的ip或網域名稱>
http-proxy-port = <代理連接埠>
http-proxy-username = <使用者名稱,如果需要的話>
http-proxy-password = <密碼,如果需要的話>
3,HG
HG更簡單,因為它使用的是http協議,一個命令解決:
export http_proxy=http://<使用者名稱>:<密碼>@<ip>:<連接埠>
4,Git
Git可以使用兩種協議,git協議和http,如果是後者,那麼辦法跟HG一樣,如果是git,比較麻煩,但也不是不可解決:
先去下載一個協議轉換小工具:http://www.meadowy.org/~gotoh/ssh/connect.c
編譯之:gcc -o connect connect.c
將產生的connect放到可執行檔路徑中,如/usr/bin
然後建立一個使用代理的指令碼,假設是http-proxy-gw,注意加上可執行屬性,內容如下:
#!/bin/sh
# Filename: ~/bin/http-proxy-gw
# This script connects to an HTTP proxy using connect.c
connect -H http://yourproxyaddress:proxyport $@
最後,配置git:
git config --global core.gitproxy "http-proxy-gw for xxx.yyy"
後面的xxx.yyy是網域名稱尾碼,比如,下載linux源碼就可以是設定為kernel.org
2012 7.25添加:
以上方法,我只實驗了在公司內二級代理的情況下git的下載,it works fine
1、編譯出 connect
2、寫一個指令碼 gitproxy.sh(記得這兩個檔案都要 chmod+x許可權)
gitproxy.sh內容如下
#!/bin/sh
# Filename: ~/bin/socks-gw
# This script connects to a SOCKS proxy using connect.c
/home/<youraccount>/bin/connect -Hproxyserver:port$@
解釋:
<youraccount>就是 你的賬戶
proxyserver:port就是填寫你的代理IP及連接埠
3、將這兩個檔案拷入/home/<youraccount>/bin下,如果你的賬戶更目錄下沒喲的話那就建立一個
4、配置GIT參數,制定使用代理指令碼
git config --global core.gitproxy "${HOME}/bin/gitproxy.sh"
5、git chone *** 大功告成
本人補充20120801 GIT 配置代理問題
今天遇到一個新的情況,有台伺服器剛裝的ubuntu,將我之前編譯產生的connect執行檔案以及執行指令碼直接拷貝過去,每次運行都報錯
syntax error
後來將connect.c 拷貝過來GCC重新編譯了一下,問題解決了,該問題後來知道原來我之前的是64bit的ubuntu,而這台是32bit的系統估計編譯出來的檔案不相容