Gitを触ってみるよ その5「分散型バージョン管理システムによる開発って生物の進化っぽい」
Gitの仕組みを勉強するにつれて思っていた事なんですが、分散型のバージョン管理システムで進める開発って、何だか生物の進化みたいだなと。今回はそんなお話です。
分散型バージョン管理システムって?
本編の前にまずはおさらいという事で、「分散型バージョン管理システムって、何ぞや?」というところから。本シリーズで散々Gitを使ってきているので今更なんですが、自分的なまとめの意味も込めて、改めて…。
今のところ本シリーズでは、どちらかと言うとSubversion的な集中管理型の使い方をしてきました。
こんな感じですね。
分散型になるとどうなるかというと、こんな感じになります。
開発の流れとしては以下のような感じですね。
- Aさんが自分のローカルリポジトリ上で開発を進める。
- 公開したくなったタイミングで公開リポジトリにpushする。
- Aさんの公開リポジトリを見て気になったBさんが、自分のローカルリポジトリにソースコードをcloneしてくる。
- Bさんは自分のローカルリポジトリ上で適宜ソースコードを弄る。
- Bさんは自分が修正した分をAさんに取り込んでもらいたくなったら、修正分をパッチでAさんに送る、またはAさんにBさんの公開リポジトリからpullしてもらう。
こういう流れにより、AさんはAさんで自分の好きなように開発を進めて、Bさんのように公開されているソースコードを見て気になった人は、自分の環境にソースコードを持ってきて自由に弄り倒して、本家に取り込んでもらいたい修正があれば、Aさんにお願いして取り込んでもらう事もできます。
それぞれがローカルリポジトリと公開リポジトリの両方を持っているのがミソで、ローカルリポジトリ上で好きなだけcommitしても他の人に一切影響を与えないので、開発をガンガン進めていく事ができるというのがポイントです。
Gitが元々Linuxの開発の為に作られたという事もありますが、分散型バージョン管理システムはオープンソースの開発に非常に適した作りになっていますよね。
進化していくソースコード
そして、本題。
分散型バージョン管理システムだと、ソースコードは次のような変遷を辿ります。
カッコ内に書いたように、それぞれの流れがちょうど生物の進化みたいだなと思うんですが、いかがなもんでしょうか?
こういった事が可能になる為には、
というような条件が必要になると思うんですが、GitHubが提供している場がまさにこれらを満たしている訳で、ソースコードが生物のごとく進化していく場としてGitHubは非常に可能性を秘めたサービスだと思います。*2
こんな思いもあって、Gitのこれからには非常に注目しております…が、まずは自分で使いこなせるようにならないといかんですな。(^^;ゞ
P.S.
Gitに関する書籍って無いのかなと思って調べてみたら、5月に洋書でOreilly本が出るようですな。
- 作者: Jon Loeliger
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2009/06/01
- メディア: ペーパーバック
- 購入: 1人 クリック: 35回
- この商品を含むブログ (6件) を見る