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