Subversionじゃダメな理由

CVSはともかく、Subversionで十分と思ってる人が実際のところ多数派じゃないでしょうか。ふとSubversionじゃダメな理由が仕事中に思いついたので書いてみます。

保守的なシステム開発の現場

システム開発の現場って保守的なところが多いと思うんです。極端な例を挙げますが、なにが不便かっていうと「コミットさせてくれない」ことです。あ、ちなみにこれは一度システムが完成した後の保守、または拡張機能の開発時の話です。
プログラマとしては、自分のタイミングでどんどんコミットして行きたいんだけど、リポジトリ管理者は厳格に管理したいらしく、気軽にコミットさせてくれません。こんなときのためにブランチというものがあると思うのですが、開発用ブランチも作ってくれなかったりします(一次請けがリポジトリを管理している場合、調整が面倒だからみたいです)。

解決策

こんな状況を解決してくれるのが、Gitなどの分散型バージョン管理システムです。分散型バージョン管理システムの特徴は、サーバだけではなく、ローカルにもリポジトリを持つという点です。プログラマはローカルのリポジトリに好きなタイミングでコミットできます。そして最終的にリリースしたいものだけをサーバのリポジトリにPush(Subversionでいうコミット)することで、真にコミットが完了ということになります。
これならば、プログラマは好きなだけバージョン管理できるし、リポジトリ管理者も本当に必要なものだけをプログラマにPushしてもらう(または自分で必要なものを選んでPushしてもいいです)が可能になるわけです。

まとめ

SubversionCVSの場合、現場の使い方次第ではバージョン管理システム本来の便利さが奪われてしまっています。分散型バージョン管理システムこそ、泥くさいシステム開発のニーズに合っているのではないでしょうか。

でも…

「ブランチも作ってくれない現場がGitなんか導入してくれるわけないだろ常識的に考えて」という話か。