基本的な違いは合成規則です。
真のコンポーネントベースのアプローチでは、構成を定義します。つまり
、プロジェクトが「機能する」ために必要なラベル (Git の SHA1 コミットのリスト) (つまり、「開発」、「コンパイル」、「デプロイ」、 ...)。
構成で参照される各コミットは、すべてのツリーの正確なバージョンを取得するのに役立ちます。例外はありません。そのツリーの各ファイルは、定義した構成によって指定された正確なバージョンです。
git1.8.2 に関する注意
「git サブモジュール」は、(スーパープロジェクトの gitlink に記録されたコミットとの統合ではなく) リモート ブランチの先端と統合するための新しいモードの学習を開始しました。
すぐに (2013 年 3 月)、サブモジュールは、修正された SHA1 だけでなく、上流の HEAD を参照できるようになりました。
(1.8.2 より前) モジュールごとに 1 つのラベル/SHA1 しか存在できません。1 つの共通の親リポジトリから、モジュール内でモジュールを定義することはできません。
(ただし、外部 Git リポジトリへの単なる参照であるモジュールは、独自のサブモジュール定義を持つことができます。親リポジトリは、第 1 レベルのサブモジュールのみを参照し、それ自体でコミットされたサブモジュールを参照します)
SVN externalではそうではありません: ディレクトリ externals とファイル external を、明示的なリビジョンの有無にかかわらず定義できます。さまざまな外部プロパティを構成
できます。例えば:
$ svn propget svn:externals calc
third-party/sounds http://svn.example.com/repos/sounds
third-party/skins -r148 http://svn.example.com/skinproj
third-party/skins/toolkit -r21 http://svn.example.com/skin-maker
結果は構成 (' ' の 1 つの参照) ではなく、ディレクトリ ' 'calc
で必要な正確な「パッチワーク」を定義する選択規則の構成です。calc
要するに、' ' サブモジュールの 1 つの SHA1 を「計算」することはできません。これは、' ' SVN ディレクトリの一連のプロパティとcalc
まったく同じです。svn:external
calc