優れた技術的な質問は、通常、技術専門家からその経験に基づく深い洞察を引き出します。しかし、そのような質問に対する回答は、事実や標準、特定の専門知識ではなく、個人的な好みだけに基づいた感情的な表現に陥りやすいものでもあります。例えば、この記事のタイトルですが、もしあなたがSVNの支持者であるなら、逆に質問した方がいいかもしれません。
それはWindowsとLinuxのようなもので、必ずしも一方が他方より優れているとは言えません。stackexchangeでの最近の議論から多くのことを学びました。gitではなくSVNしか使えない場所があることを証明するために、簡単な例を挙げてみましょう。 Googleの検索ランキングアルゴリズムは、分散されたオープンなコードベースには入れられません。この場合、SVNによる集中管理は選択肢に入りません。ここでは、Subversion が git よりも適している環境を整理してみました。
[]
サブバージョンは一元管理されたデータウェアハウスです。
分散 git リポジトリには、スピードやマルチコピーといった明らかな利点があり、多くの人にとって魅力的なものです。たとえば、一部の人たちだけがアクセスできるようにしておきたいコアなコードがある場合、それを git に置くのはあまり好ましいことではありません。多くの組織ではコードを一元管理していますし、政府のプロジェクトではすべて、一元化されたデータウェアハウスとバージョン管理システムを使っていると思います。
転覆の哲学は従来の考え方と一致
つまり、多くの人はバージョン番号というものを習慣的に理解していて、開発というものは時間を通じて直線的な軌跡を描いていくものだと頭に刷り込まれているのです。言い訳をするわけではありませんが、Gitの恣意的な性質を理解するのは簡単なことではありません。お気づきかもしれませんが、Gitに関するどんな本でも、最初の章の最初のセクションで、頭の中にある伝統的な考えをすべて捨てて、再認識するように言います。
Subversionは一つの方法しか提供しません!
SVNはバージョン管理システムであり、その方法は1つしかなく、誰もが同じ方法を使います。これだけです。このため、SVNから他の一元管理されたVCSへのコードの移行や、その逆も簡単にできます。gitは単なるバージョン管理システムではなく、実際にはファイルシステムであり、さまざまな環境でコードリポジトリをどのようにセットアップするかをサポートするための多くのトポロジーを備えています。異なる環境でのコード・リポジトリの設定方法をサポートするために、多くのトポロジーを持つファイルシステムです。 正しいトポロジーを選択するのは難しいことです。
他にも利点があります:
- SVN空のディレクトリのサポート
- SVNはWindowsプラットフォームのサポートが向上
- SVNサブツリーをチェックアウト/クローンできます。
- SVNは特権アクセス制御svn lockをサポートしており、マージが難しいファイルを扱うときに非常に便利です。
- SVNはバイナリファイルをサポートしているため、大きなファイルを扱うのが簡単です。
- プル/プッシュ操作がないため、ファイルのコミットは比較的簡単で、ローカルでの変更は svn update によって自動的に実行され、コードが同期されます。