解決すべき課題
2002年、Linuxカーネル——数千人の貢献者と数千の並行する変更の流れ——は、バージョン管理のためにプロプライエタリなBitKeeperを採用していた。2005年、カーネルコミュニティとBitKeeperの開発元との関係が破綻し、ツールの無償提供が取り消され、世界最大の協調ソフトウェアプロジェクトは中核の作業ツールを失った。
着想
速度と数千の並行ブランチのために作られた分散型VCS——すべてのクローンが完全なリポジトリであり、カーネル自身のデータ構造のように設計された。
仕組み
トーバルズ自身が最初のバージョンを書いた。最初のコミットは2005年4月7日に着地し、メッセージは「Initial revision of "git", the information manager from hell」——7つのコマンドを公開する少数のCファイルだった。BitKeeperの教訓から引き出された設計目標は、速度、単純な設計、非線形開発への強力な支援、そして完全な分散だった。2005年7月26日に彼はメンテナンスを濱野純に引き渡し、Git 1.0は2005年12月21日に出荷された。
もたらしたもの
Gitはほとんどの開発者が使うバージョン管理システムになった。2022年までに、ほぼ95%の開発者が主要なVCSとしてGitを挙げ、主要なソフトウェアフォージ——GitHub、GitLab、Bitbucket——はGitを中心に構築されている。一つのプロジェクトのワークフローのために書かれた内部ツールが、世界中の協調ソフトウェア開発の基盤となった。
背景
Linuxカーネルは数千人の貢献者によって数千の並行する変更を伴って開発されており、バージョン管理を並外れて困難にしている。2002年、プロジェクトはプロプライエタリな分散システムであるBitKeeperを採用し、その開発元は無償利用を認めていた。2005年にその関係が破綻し無償提供が取り消され、カーネルコミュニティ——とりわけリーナス・トーバルズ——は、すべての作業を支えていたツールを置き換えなければならなくなった。
トーバルズの答えは、代替品を自分で書くことだった。2005年4月7日の最初のコミットは、冗談めかして自らを告げる。「Initial revision of "git", the information manager from hell」。それは7つの低レベルコマンドを公開する小さなCファイル群で、カーネルと同じ思想——速度第一、単純な設計、非線形開発のための安価なブランチ、そしてリポジトリのすべてのコピーが完全な履歴を持つ完全な分散——を中心に構築されていた。
それはすぐに私的なツールではなくなった。濱野純は数週間のうちに加わり、2005年7月26日にメンテナンスを引き継いだ——トーバルズはそれを永遠に世話するつもりはなかった——そしてGit 1.0は2005年12月21日に出荷された。そこからそれはカーネルを完全に離れた。2022年までにほぼ95%の開発者がGitを主要なバージョン管理システムとして挙げ、現代のオープンソースを組織するフォージ——その中でもGitHubやGitLab——は、その中核においてGitサービスである。
なぜ定着したか
それはバージョン管理を性能の問題として扱った。速度が第一の目標だった。なぜなら、人が待たされるツールは、人が迂回するツールだからだ。
完全な分散は、すべての開発者が履歴全体を携えることを意味した——単一障害点もなく、アイデアとローカルの実験の間に許可の関門もない。
ブランチは高価な副作用ではなく第一級の操作だったので、並行する作業の流れは、試すための安価で普通の方法になった。
それは市場平均ではなく、利用可能な最も困難な実作業——カーネルの規模——に対して構築された。まさにそれが、これほどよく一般化した理由である。
依存しているツールを失うことは贈り物になり得る。トーバルズは自分自身の最も困難なケース——巨大な履歴、数千の並行ブランチ——のために構築し、最も困難なケースに適合する設計は、たいてい誰にでも適合する。
その後
濱野純は2005年7月の引き継ぎ以来Gitのメンテナーであり、トーバルズも依然として貢献している。20年後、GitLabの2025年の最初のコミットに関する回顧は、「地獄から来た情報マネージャー」という一節を、それが何であるか——ほとんどすべてのソフトウェアが今やその上を走るインフラ層の創設の冗談——と呼んでいる。BitKeeper自体は2016年にオープンソース化され、脚注となった。Gitが既定である。カーネルプロジェクトの危機対応は、採用の面で、これまでに作られた最も成功した内部ツールであることが判明した。
出典をたどる
出典
- A Short History of Git Pro Git book (git-scm.com) · git-scm.com
- A journey through Git's 20 year history GitLab blog · about.gitlab.com ·
- Git Wikipedia · en.wikipedia.org