git: Linux Kernelのためのバージョン管理システム(VCS)

おしらせ

このページは2005年4月ころ、Git登場当初の情報を整理するために作成しました。現時 点では古い情報が中心になっています。2008年3月現在の情報をまとめ た資料として、Software Design 誌に「Git 入門」記事を寄稿しました のでそちらをご覧ください。

はじめに

従来LinuxカーネルのメンテナンスにはBitKeeperを使っていましたが, いろいろな問題があり,結局2005年4月4日くらいからLinusは新しい バージョン管理システム(VCSとかSCMとかいう)を導入することになりました. その選択の過程で最悪の場合を想定して開発をはじめたgit. 結局2005年4月21日,LinusはgitでこれからLinus Kernelを管理することを発表しました. それ以降の Linux カーネルの開発はgitで行われています. 2005年7月ころにLinusはgitのメンテナンスをJunio Hamanoに移管しました.

ちなみに,'git'は英国俗語由来だそうです,そうであれば発音は'ギット'です.

資料

2005年9月17日時点でのgitの説明をYLUG カーネル読書会にて実施しました.そのときの資料はPDF形式でここにおいてあります.

2005年4月20日の時点でのgitの説明は 4月20日 YLUGカーネル読書会向けに作成した資料(PDF 200K)を御覧ください. bitkeeperの代替として使われているgitがどういうものか,cvs や monotone や arch とどのようにちがうのか,という点について説明しています.

発表資料作成後の4月28日にcogito 0.7がリリースされ, 大幅にcogitoコマンドラインインタフェースと,cogitoがgitを扱う方法が変わりました. ありがたいことに,基本的な操作は簡単になっています.

バックエンドのデータについては,2005年7月くらいからpackedフォーマットというのが導入されました. 試験的に一時的にdelta形式(各リビジョンの差分を保持)を利用していた場合はそのデータは利用できなくなったようです. 通常のフォーマットでは各ファイルはsha1で計算したファイル名で.git/objects/以下に保存されていますが, i-nodeの消費量とファイルシステムブロックの消費量,またレプリケーションの際の効率を考えて 複数のファイルの複数のリビジョンをまとめたpacked形式というのが現在利用できます.

使用例

cogito 0.15でLinusのツリーをチェックアウトする方法. (cogito のgitレポジトリから生成したcogitoで確認)

cg-clone http://kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git/
    

ツリーをアップデートするには,ワーキングディレクトリにて:

cg-update
    

参考

歴史的な参考


Junichi Uekawa

$Id: 200504-git.html.ja,v 1.30 2008/03/22 06:08:44 dancer Exp $