darcs agitate

This entry was posted by on Thursday, 14 September, 2006
>「CVS は小学生まで」発言とかを見て、「subversionは中学生まで」といったアジを考えた。ちゃんとした人は、ちゃんと分散バージョン管理を使うものだ。 darcs とか。 > >まあそれはアジなんで本心はさておき、いや、 darcs はほんとに良いのですよ。何が良いかといってスジが良い。以前は subversion を使っていたけど、自分個人としてはもう完全に darcs に移行してしまったですよ。 > >分散バージョン管理システムは darcs 以外に触ったことがないので、ほかのがどれくらい良いのか、というのはよくわからない。では darcs のスジの良さは何かというと「バージョン管理とはパッチの管理である」という視点を一貫して持っていることにある。 > >べつにファイルのバージョンを管理しようがパッチの管理をしようが、ふつうに管理する際にはどうでも良い。ところがこれが分散するとどうでも良くなくなる。レポジトリ間のやりとりというのは、バージョン間の差分であって、それはつまりパッチのやりとりだからだ。 darcs では、ファイルのブランチであるとか、同一起源を持つかどうかといったような問題は一切考慮しない。単にパッチと、パッチ間の依存関係を持っているだけだ。やろうと思えば、全然別の起源を持つ2つのレポジトリをマージしてひとつのレポジトリとして提供することもできてしまう。これはお手軽お気楽極楽でたいへん心地良い。サブコマンドはいっぱいあるが、 cvs や subversion にイマイチ使ったことのないサブコマンドがあるように、覚えなければならないものはほとんどない。 > >darcs の主な弱点は2つ。 > >第一に、遅いこと。個人レベルの、あるいは小規模のものであれば大した問題はないのだが、 darcs の「パッチのやりとり」では、パッチひとつひとつがファイルになっていて(gzip圧縮しているが)それを受け渡しするので、膨大なパッチを有するレポジトリを持ってこようとすると、ファイルのやりとりに時間がかかるようになる。これの対処として –partial とか、複数のパッチをまとめて一つのパッチにする機能とかがあるみたいなんだが、いまいち有効に機能しているとは言いがたい感じ。 > >第二に、認証系が弱い。個人レベルだと、 ssh 経由でコミットする方式が用意されているので楽勝だが、それ以外の仕組みがいささかメンドくさくて、たとえば、 subversion みたいなサーバは用意されていない。ただこれは、余計な認証機能を組込まなくて済むっていう意味ではシステム管理者にとってある意味で楽な面もあるだろう(だいたい個人レベルの subversion ユーザはほとんど svn+ssh を使ってると思うし)。また、マニュアルにはいろんな技術との組合せレシピが載っていて、パッチがメールで送られたときに(パッチをメールで送る機能 – darcs send – がある)うまく処理する procmail のレシピとか、そういうのもある。でも、まあ、弱いなぁとは思う。アドホックで個別対応的になっちゃうから。 > >ほかにもフックスクリプトの機能がないとか、多言語対応が弱いといった小さな問題もある。フックスクリプトについては、自動でテストを実行して失敗したらコミットを拒絶する(make test に通らないパッチは受け付けない)という機能があったりはするので、そんな問題にはならないんじゃないかと思う。ちなみに、テストスクリプトの機能は下手を打つと危険なのでデフォルトは何もしません。多言語対応については、デフォルトの動作だと 8bit 文字はエスケープしてしまうので、 darcs whatsnew とかやると凄いことになってしまうことがあるという問題で、これは環境変数を設定すれば直る。 > >というわけで弱点はあるけれども、個人レベルのユーザにとって大した問題はぜんぜんないです。 darcs、オススメですよ。 >

Comments are closed.