コラム:他のバージョン管理システム(Git)について考える

日経ソフトウエア(2014年6月号)の特集3がバージョン管理システムの記事だったので読んでみました。

なお、私はGitは使用した事はありません。
・大きく2種類の方式がある。⇒集中型、分散型
・流行は分散型
・分散型のメリット/デメリット
という内容です。

書いてある事は理解できたので、改めて考えてみました。

大きく2種類の方式がある。

弊社のサイトで紹介しているSubversion(以下SVN)は集中型と呼ばれる管理方式です。
以下のような流れでソース管理を行っています。

ポイントはリポジトリがサーバーで集中管理されている点です。

分散型に代表されるGit(ギット)は以下の流れでソース管理を行います。
開発者単位にリポジトリを持っているところがポイントです。

流行は分散型

バージョン管理システムの歴史としては、CVS⇒SVN⇒Gitの流れではないでしょうか。

(例えば)Javaを用いたWebシステムでの開発では、コミットした内容は他の開発者が取込むことになります。

Webのシステムではプロジェクト単位でjarファイルが作られ、デプロイされます。
この時、単体テストが終わっていないプログラムを開発者がコミットしてしまったら、
場合によってはシステム全体に悪影響があるかもしれません。

なので開発者は、単体テストが終わるまではコミットしないことになります。

それに対して分散型では、ローカルにリポジトリを持っているので日々コミットすることが可能になります。
単体テストが終わったタイミングでプッシュすれば良いからです。

SVNで履歴管理が出来るのは、前回のコミット〜今回のコミットでの差分管理だけなので、開発者の日々の履歴管理はしてくれません。

「流行は分散型」の一つの理由だと思います。

分散型のメリット/デメリット

「集中型は任意のファイルを取り出して追加/修正ができるが、分散型はリポジトリを完全コピーするので任意のファイルだけを取り出すことができない」
「あるソースだけロックすることもできず、ロックもリポジトリ単位」なのだそうです。

改めて考えてみる

AS/400のプログラムはプログラム単体で稼働するので、コミットしたところで他の開発者に悪影響を与えることはありません。
(もちろん運用ルールとしてご法度でしょうが。)
そもそもコンパイルはAS/400で行われるので、やはり問題ありません。

以上の事を踏まえるとAS/400におけるバージョン管理はSVNでも問題ないと思った次第です。

なお、Gitを否定する記事ではありません。
あくまでも「AS/400におけるバージョン管理」視点での考えです。

時間があれば、Gitにもチャレンジしてみたいものです。

(記事を書いた日:2014/06/05)