2005-08-02(火) [長年日記]
■ Subversion
やまだあきらさんがximapdのMLにもりもりパッチを投げまくっているので、「こりゃTrunk HEADに追従しないと乗り遅れるかも!」と焦り(←客観的には焦る必要なし)、重い腰を上げることに。ってつまり、Subversionを入れたってことなんだけど(おせー!)。
といっても、こんだけ:
% sudo apt-get install subversion
で、ximapdは職場で使っているので、proxyを通さないと社外のリポジトリは使えない。調べたところ、~/.subversion/serversを書き換えるらしい。設定はこんな感じ?:
[global] http-proxy-host = proxy.example.com http-proxy-port = 8080
で、coしてみたら、ダメなのだった:
% svn co http://projects.netlab.jp/svn/ximapd/trunk ximapd svn: REPORT リクエスト (相手: '/svn/ximapd/!svn/vcc/default') が失敗しました svn: REPORT (URL: '/svn/ximapd/!svn/vcc/default'): 400 Bad Request (http://projects.netlab.jp)
Status 400って……。proxyのいらない自宅サーバ上でやると問題ないから、svnの使い方は間違ってないんだよな(たぶん)。これは会社のproxyの設定に問題があるってことか?(→コレかな?) 上流のproxyにイチャモンつけるのは難しいなぁ……。自宅でsvn upして、それをscpかrsyncで取ってくることにするか。
……というわけで、ただいま先っぽに追従中。
■ Subversion(2)
せっかくなので真面目に使うテスト。自宅サーバのCVSリポジトリを変換してみよう。ブランチも切ってないから、素直にコンバートできるだろう。もっとも、CVSでも何も困ってないんだけど。
ツールはcvs2svnを使うらしい。保存形式には悪評高き(?)Berkeley DBじゃなくて、そろそろ安定してきたと言われているfsfsを使うことにする。
% sudo apt-get install cvs2svn % cvs2svn --fs-type=fsfs -s ~/svn /var/lib/cvs
うんうん考え込んだあと(マシンが遅いので)、コンバート完了。これを、ssh経由で職場のマシンからアクセスする。真面目に(といっても関係のありそうなところだけつまみ食いのように)マニュアルを読んでから:
% cd ~/tmp % svn co svn+ssh://tsukuba/home/sho/svn/trunk/www/komainu
ずらずらずら〜とcheckoutされてきた。成功だ。スムーズすぎて怖い(←珍しくちゃんとマニュアルを読んだからだと思われ)。
■ Subversion(3)
よそのレポジトリを職場からGETできるようにするには、自宅サーバに本家のコピーを持たせちゃえばいいんだよな。そうすればsvn+sshで取れるわけで。でもcvsの-dオプションみたいに、commit先のレポジトリを無理やり変更することはできないみたい……? svn switchが使えるかと思ったけど、違うようだし。
結局、ximapdについては、
- svn exportした本家の内容を自宅サーバのレポジトリにsvn add、svn ci
- 本家の内容を反映するときは上のディレクトリにsvn export --forceで強制上書きしてからsvn ci
って感じにしてみたが、スマートではないよなぁ。まぁこれだと、少なくとも自分で書いて追加したpluginなんかは問題ない。ファイルの追加や削除があったときには少し困る(が自動化は可能か?)。ローカルパッチがどうなるかは……そのときになってから考えよう(汗)。
自宅のサーバーでproxyを上げてそこをsvnのproxyにするってのはどうでしょう?
問題があるのは「うちの会社のproxy」なので、そんなことをしても何の解決にもならない気が……?
レポジトリ情報は .svn/entries の url に書いてあるようなので、これを手で修正しちゃうという技はどうでしょうか>レポジトリ位置の改変
それで上手く行くのかわかりませんが……。
または svk を使うとか。
そのsvkってぇのが、探していたものみたいです。あとで試します。
svn repo -- 家サーバ(http proxy) -- ssh tunnel -- svn client
って事っす
あー。それは考えなくもなかったんだけど、そのためだけにサーバ立てるのもなぁ……と。すでにメモリも厳しいし。
なるほど。
じゃぁ、webrickでお手軽proxy作ればいけるんじゃないかな?と思って試してみたのですけど
lib/net/http.rbが1.9 featureで"PROPPATCH, LOCK, UNLOCK, OPTIONS, PROPFIND, DELETE, MOVE, COPY, MKCOL"には対応してるけど
"REPORT MERGE MKACTIVITY CHECKOUT"には対応してなくてダメポ…
http://sho.tdiary.net/20050803.html#p01
ただのにっき
Subversion(4)
「CVSupのSubversion版みたいのが欲しいんだよね」と思ってイロイロ探してみたんだけど見つからなくて困っていたら、サクっと「それはsvkである」的なツッコミをもらったのであった。やっぱ人力検索(違)はすごい。まさか「分散」がキーワードになってるとは思わなかった。..
cvs -d相当の件は svn switch --relocateでいかが?
switch --relocateは、まったく出自の異なるリポジトリ間の移動には使えないみたいですよ
http://sho.tdiary.net/20050819.html#p02
ただのにっき
Subversion(6)
以前ためしにSubversionに移行してみたのに、その後うっかりしてCVS上で作業してしまったりしたので、またCVSの方が新しくなってしまった。運良くSubversion上のファイルは更新していなかったので、また作り直し。今度こそ真面目に移行する。 今回はこま犬の、今まで未管..
http://starfish.dyndns.org/y/index.php?/archives/369-Subversionaa.html
無関係な死
Subversion導入
CVSでちょっと新しいプロジェクトを作ろうと思ったけど、バイナリファイルを大量に含んでいるので、インポートのとき変になったりしないかということでSubversionを導入してみた。導入は
自分も自宅のSVN(WebDAV経由)レポジトリにアクセスしようと思ったら,大学のHTTPプロキシに400ブロックされてしまいアクセスでできませんでしたが,
HTTPS接続を用いてSSLを噛ましてやるとアクセスできるようになりました.
ご参考まで.