Linux Kernel Watch

5月版 BitKeeperからgitへ、ソースコード管理ツール大変更

上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2005/5/31

linux-kernelメーリングリスト(以下LKML)かいわいで起きた出来事を毎月お伝えするLinux Kernel Watch。さて、4月のLinux開発の現場はどうだったでしょうか。

ソースコード管理ツールgitの登場

 Linus Torvaldsは、「Kernel SCM saga..」と題したメールで、

  • BitKeeper(編注)が使用できなくなったこと
  • Linuxの開発のために新しいSCM(ソースコード管理)ツールを探していること

を宣言しました。そのメールには、「ふさわしいツールが何も見つからなかったら困るので、“git”というツールを作っている」ことも追記されていました。

編注:Linuxのソースコード管理に活用されていたツール。BitKeeperの採用については、Linuxカーネル2.5 最新開発動向を参照。

 これを受けて、まず「どのようなツールが必要か」「どのようなツールが存在するのか」という議論が続きました。議論の中で、Linusは最初「monotoneが有力だ」と提案しました。しかし、実際に試用してみたところ、monotoneは遅くて改善が必要であるという結論に達しました。monotoneの動作速度について、Linusは以下のようなメール(抜粋)を書いています。

1つのパッチを適用するのに30秒かかるツールでは、250のパッチを適用するのに2時間もかかってしまうじゃないか。そのうえ途中でパッチの適用が失敗したりしたら最悪だ。

(1秒に3パッチくらい処理してくれるならまだよい。全部のパッチが適用できたかを1分以内に知らせてくれるなら、まだ手動で対応できる。だからレイテンシが重要なんだ)

 「svkがよいんじゃないか」「darcsはどうか」などのメールが大量に流れ、LKMLはしばしSCMツール専用メーリングリストの様相を呈していました。その後gitメーリングリストが別途立ち上がり、以降はそちらで議論が継続しました。

 Linusにいわせるとgitは、コマンドラインツールとしては「plumbing(配管工事のような現場の仕事)」に十分なインターフェイスのみを持つ、ということです。直接利用するのには不便なので、インターフェイスはそれぞれ開発してください、というスタンスです。Linusが利用している、メールに添付されているパッチを取り込むツールなどは、git-toolsとして公開されています。

 gitを一般的に利用するためのインターフェイスを開発しているグループもあります。いま最も広く使われているのは、Petr Baudisが中心となって開発しているcogito(最初はgit-paskyという名称だった)でしょう。cogitoは、git上にBitKeeperやCVSなどのコマンドラインインターフェイスに似たインターフェイスを実装しています。

 gitはまだ若いツールですが、実用本位で何とか使えるものになっているようです。

参考リンク:
  git ftp://kernel.org/pub/software/scm/git/
  cogito ftp://kernel.org/pub/software/scm/cogito/
  gitのWebインターフェイス http://www.kernel.org/git/

gitベースによる初のカーネルリリース、今後は?

 git管理になって以来、初めてLinusのツリーがリリースになったのは、4月20日に出た2.6.12-rc3です。ChangeLogの形式が変更されたこともあり、このリリースは反響を呼びました。

 Greg Kroah-Hartman(以下Greg K-H)やRussel KingとLinusが、このリリースの前後にLKMLで「gitはどうやって使うんだ?」「どうやってマージするのだ?」というやりとりを交わしていました。そして、Linusがgitでツリーのマージを実装し、マージできることを確認した時点でリリースにこぎ着けたという形になります。

 こうしてgitでも無事リリースが行われましたが、gitのパフォーマンスについてはまだ未知数な点が残っています。

 linux-ia64メーリングリストで、Linusが

rsync ends up being the easiest way to fetch the data (and I like the irony of using a tool that Tridge helped write ;)

データの転送には、結局rsyncが一番簡単な方法だよ(Tridgeが作成にかかわったツールを利用する皮肉も僕は好きだ ;)

とコメントしていたように、gitはrsyncを利用してデータの転送を行います。

 問題はサーバです。gitを使うことにより、従来bkbits.netでホスティングされていた部分もkernel.orgで提供することになります。git導入前の情報を含めるとリポジトリが3Gbytesになってサーバに負担を掛けるため、gitのリポジトリにはgit導入前の履歴は含まないことにした、とLinusはChangeLogに書いています。

 ちょうど4月に、kernel.orgは新規のHP DL585 quad Opteron、24Gbytesのメモリ、10Tbytesのストレージを持つサーバを導入しました。マシンスペックは向上しましたが、今後はサーバに対して直接rsyncを利用する量が増えることになります。このサーバがrsyncの負荷に耐えられるか、gitリポジトリに変更履歴が蓄積されてもパフォーマンスを維持できるのか、注目です。

参考リンク:
  2.6.12-rc3のChangeLog http://www.kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.12-rc3

1/2

Index
Linux Kernel Watch 5月版
 BitKeeperからgitへ、ソースコード管理ツール大変更
Page 1
 ソースコード管理ツールgitの登場
 gitベースによる初のカーネルリリース、今後は?
  Page 2
 FUSEをユーザー権限でどう扱う?
 2.6.11.yツリーに適用すべきパッチとは?
 カーネルの割り込み頻度を動的に
 モジュールじゃなくても機能のオン/オフ

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間