Принципиальным отличием является правило композиции .
В истинном компонентном подходе вы определяете конфигурацию , то есть:
Список меток (коммитов SHA1 для Git), которые необходимы вашему проекту для «работы» (то есть «разработки», «компиляции», «развертывания», ...).
Каждый коммит, на который есть ссылка в конфигурации, помогает вам получить точные версии всех деревьев.Здесь нет исключений.Каждый файл этого дерева имеет точную версию, указанную в указанной вами конфигурации.
Примечание для git1.8.2
«Подмодуль git» начал изучать новый режим интеграции с кончиком удаленной ветви (в отличие от интеграции с записанным коммитом).в гиперссылке суперпроекта).
Так скоро (март 2013 г.) подмодуль может ссылаться на верхний HEAD, а не только на фиксированный SHA1.
(до 1.8.2) Может быть только одна метка / SHA1 на модуль.Из одного общего родительского репо вы не можете определить модуль в модуле.
(Но модуль, который является просто ссылкой на внешнее репозиторий Git, может иметь свое собственное определение подмодулей: родительское репо будет ссылаться только на первыйподмодуль уровня, который, в свою очередь, будет ссылаться на любые подмодули, которые он зафиксировал внутри себя)
Нет, так в SVN 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
Результатом является не конфигурация (одна ссылка на 'calc
'), а композиция правил выбора, которые определяют точную "заплатку", которая вам нужна в каталоге "calc
'
Короче говоря, вы не можете "вычислить" один SHA1 для подмодуля' calc
', который был бы точным эквивалентом группы svn:external
свойств в' calc
'Каталог SVN.