平衡点
2012/09/16
_ VCS用の proxy の設定アレコレ
VCS 毎に設定方法が違うのでメモ. というか 面倒すぎてアレ. なにかを一括変換したら, 全てに反映してくれる, とかだと良いのに.
http_proxy のみで良いなら良いのになぁ...
CVS
困った事に CVS には(Official には)proxy に関するサポートが 無い. Debian パッケージで提供されている CVS - qa.debian.org には proxyサポート 用のパッチが当たって, 環境変数 http_proxy を見てくれるけれども, それを当てにするのもちょっとどうなんだ, という.
結論から言えば, 結構絶望的. 「今時 CVS なんてm9(^Д^)プギャー」という話は置いておいて. 結構困るなぁ...
Subversion
~/.subversion/servers に
[global] # http-proxy-exceptions = *.localhost http-proxy-host = proxy.example.com http-proxy-port = 8080 # http-proxy-username = defaultusername # http-proxy-password = defaultpassword
とか書いておくと良い
Git
netcat, socat, corkscrew のいずれかを導入しておく. たとえば
# source: sh
#!/bin/sh
#
# License: WTFPL
#---------------------------------------------------------------
#
# search $http_proxy
#
if ! test $http_proxy ; then
echo "set \$http_proxy !"
exit 1
fi
_proxy_server=`echo $http_proxy | cut -d':' -f2 | sed 's/\/\///g'`
_proxy_port=`echo $http_proxy | cut -d':' -f3`
#
# search executable command
#
if `which corkscrew 2>&1 > /dev/null` ; then
EXEC=`which corkscrew`
elif `which socat 2>&1 > /dev/null` ; then
EXEC=`which socat`
elif `which nc 2>&1 > /dev/null`; then
EXEC=`which nc`
else
echo "no proxy command"
exit 1
fi
#
# execute Git via proxy
#
case $EXEC in
*corkscrew)
exec $EXEC $_proxy_server $_proxy_port $1 $2
;;
*socat)
exec $EXEC STDIO PROXY:$_proxy_server:$1:$2,proxyprot=$_proxy_port
;;
*nc)
exec $EXEC -X 5 -x$_proxy:$_proxy_port $*
*)
echo "NO proxy command"
;;
esac
なんて物を git-proxy.sh とか言う名前で用意しておいて, 環境変数で
http_proxy=proxy.example.net:8080 GIT_PROXY_COMMAND=~/bin/git-proxy.sh
なんて .
bazaar
環境変数 http_proxy を見てくれるので, これを設定しておくと良い.
mercurial
~/.hgrc に
[http_proxy] host = proxy.exameple.com:8080
とか書いておくと良い.
[ツッコミを入れる]