转载自:
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的系统估计编译出来的文件不兼容