Linuxのソース・パッチ管理システム

Linuxの生みの親で、同OSの開発を指揮するLinus Torvaldsが、プロジェクトのソースコード管理用に「Git」と呼ばれる新しいツールを使い始めた。これまで使っていたシステムをめぐって論争が持ち上がったため、同氏はしばらく前からその使用をとりやめていた。

Linuxカーネルが,ずいぶん前からBitKeeperなるツールで多数のパッチを管理していることは知っていたが,このツールがどういうものか理解していなかったので,調べてみた.

まず,以下の文書がBitKeeperの概要をつかむのによい.

各ツリーはリポジトリであるので、すべての変更はローカルツリーへといれられる。変更がチェックインされるとき、すべての更新されたファイルは、論理的なまとまりでグループ化される。これが変更セットである。内部的には、開発の様々な集中と分岐ラインを表現するため、BKはこれらの変更セットをツリーにリンクしている。

CVSSubversionとの最大の違いは,以下の2点のようだ.

  • 一連の変更を変更セットと見なして,複数の変更セットをツリー状に管理する.
  • 同じ親を持つ変更セットをマージする.

変更セットをツリー状に管理するという方式は,cvssubversionでもブランチといった概念でおなじみだが,BitKeeperでは,それをクローンと呼んでいる.実際の使い方としては,パッチごとにクローンをどんどん作って,パッチをテスト及び修正を行う.その後,いいパッチを適用したクローンをどんどんマージしていって,またテストする.ちゃんと動作したら最後に親にマージする,というイメージだと思う.

あと,強力はGUIを備える,とか,分散環境への対応やオフラインでの操作性なども利点らしい.「The Kernel Hacker's Guide to Source Code Control | Linux Journal」という記事が,スクリーンショットもあって,もうすこししっかりとしたイメージがつかめると思う.

対抗馬のgitというのもダウンロードして試してみたが,BitKeeperとは,また少し違う使いここちのようだ.どうも,この分野もなかなか奥が深い.ちなみに,この作者(http://pasky.or.cz/)は,1985年生れとのこと.若い!

最後に,BitKeeperを使うのを止めた経緯については,以下のリンクが詳しい.要するに,「BitKeeperは本来有償のツールなのをLinuxのために無償で提供していた.ただし,ライセンスでリバースエンジニアリングを禁止していたが,OSDLに関連する開発者がリバースエンジニアリングをしてしまった.激怒したかどうかは知らないが,BitKeeperの提供元であるBitMoverは,Linuxも同罪と見なして,無償での提供がストップした」ということらしい.