平衡点
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
とか書いておくと良い.