2009-03-23(月) [長年日記]
■ git学習フラグが立ってしまった。またはCorkscrewでgitのproxy越え
昨日はGitHubのアカウントを取るなどしたものの、基本的にgitを真面目に使う気はなかった。職場のネットワークはHTTPしか通さないproxyが壁になって、「git:~」とか「svn+ssh:~」なんてリポジトリは使えないのだ。
などとつぶやいたら、「Corkscrew」というキーワードが降ってきた。トンネル掘削用のツールらしい。知らんかった。gitコマンドが持つproxy越え機能と連携できるようだ。壁の向こう側に特別な仕掛けがいらないということはたぶん、以前使ったconnect.cと似たようなものかな。ウチのproxyはポート制限は特に行っていないので、これでいけそうだ。参考サイトはgitをHTTP Proxy経由で利用したい場合の対処法。
まずはgitコマンドとcorkscrewコマンドのインストールなんだけど、Debian使いはここでまずつまづく。「git」だと同名の聞いたこともないファイラーが入ってしまうのだ。ここは「git-core」:
% sudo aptitude install git-core corkscrew
GitHubではgit 1.5以降のみサポートしているようで、1.4どまりなetchでは(バックポートを入れない限り)使えない。lennyにしろってことですね、わかります。
gitから使わせるcorkscrew用のコマンドを作成:
% cat ~/bin/git-proxy #!/bin/sh corkscrew YOUR_PROXY_HOST YOUR_PROXY_PORT $1 $2 % chmod u+x ~/bin/git-proxy
YOUR_PROXY_HOSTとYOUR_PROXY_PORTは環境に合わせて。あとは環境変数GIT_PROXY_COMMANDに上記コマンドを指定して、gitコマンドを実行すればいい。とりあえず角谷さんのtestable_tdiaryをcloneしてみた:
% export GIT_PROXY_COMMAND=git-proxy % git clone git://github.com/kakutani/testable_tdiary.git
ちゃんと成功したようなので今日はここまで。gitは他のSCMと比べて考え方が相当違うみたいなので、今までgitの話は避けてきたのに、これで学習フラグが立っちゃったなぁ。時間ねぇぇぇぇ。
つーかさー、たしかLinusがgitを作ったときは「これはLinuxカーネルのソース管理には向いているけど、他のプロジェクトには合わないだろう」とか言ってなかったっけ? なんでこんなに盛り上がってんの?
■ さくらインターネットにSubversionを入れたメモ
mixi2gmailをCodeReposに入れたはいいが、動かしてるさくらのサーバにsvnが入ってない件。とほほ。この同じサーバ上に各ユーザが入れたsvnがどんだけあるか考えたら悲しくなってくるね。
で、Web上にはいろんな手法があふれていて混乱するので、おれも混乱に拍車をかけることにする。
% wget http://subversion.tigris.org/downloads/subversion-1.6.0.tar.gz % tar zxf subversion-1.6.0.tar.gz % cd subversion-1.6.0 % wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-1.3.3.tar.gz % tar zxf apr-1.3.3.tar.gz % mv apr-1.3.3 apr % wget http://ftp.kddilabs.jp/infosystems/apache/apr/apr-util-1.3.4.tar.gz % tar zxf apr-util-1.3.4.tar.gz % mv apr-util-1.3.4 apr % http://www.webdav.org/neon/neon-0.28.4.tar.gz % tar zxf neon-0.28.4.tar.gz % mv neon-0.28.4 neon % ./configure --prefix=$HOME --with-ssl --without-berkeley-db % make && make install
sqlite3とかswigを入れてないけど動いてるからよし。
追記: 2009-03-24
kayakayaさんからもっと簡単な方法を紹介してもらった。レンタルサーバに入れるのならこれで十分なはず。おれもこれに入れ替えた。
分散SCMの本命不在の状況に突如現れたからでは。
サポートが無くなる可能性がほぼゼロだし。
ははは、たしかに本命がなかったですね。
でも使うの難しいよなぁ。デザイナさんに使わせようとはとても思えない……。
sqlite3とかswigとかは元から入っているはずですね。
どっちも入れてませんがtracもちゃんと動いてます。
むむ。sqlite3はあったけど、swigは見つからないなぁ。ホストによって違うのかしらん?
gitでNTLM認証Proxyを通過するのに苦労しました…。
GIT_PROXY_COMMANDだとどこへのアクセスもproxy経由になって、イントラにリポジトリ立てた時あまり都合がよくないです(gitはそれこそ頻繁にリポジトリ作りますし…)
git config core.gitproxy '"git-proxy" for github.com'
とすると特定のドメインへだけproxyを指示できます。あと全般的に設定したりリポジトリごとに設定したり。詳しくはcore.gitproxyを調べてみてください。
>りんね
あ、やっぱりgit-configでも指定できたんですね。さすがに環境変数はないだろうと思っていたのですが(笑)。あとでやってみます。
スイマセン、確かにswigはないですね。
trac入れるとき何か2つが不要だった印象があったので…。もひとつはpythonでした。
ここで空気を読まずに「Mercurialならhttpでアクセスできます」とか言ってみます
お待ちしてました(笑)。