Как: a ветка поставщика , как правило, хороший подход
Когда (третьи стороны) : для минимизации количества задействованных ссылок: вы можете добавить эти библиотеки в отдельную внешнюю ссылку (например, Maven), но это означает, что вам нужен доступ к этой дополнительной ссылке для каждой вашей среды (разработка - интеграция - омологация - подготовка производства - производство)
Когда (код) : для управления сложностью изменений, когда вы знаете, что необходимы обновления и исправления для текущих версий, запущенных в производство , в то время как новые разработки в процессе.
Почему (сохраните оба) : для развертывание причина: вы можете управлять полной конфигурацией (список элементов вам нужно) в одной ссылке и запросить его, где и когда вам нужно для:
- разработка (вы запрашиваете, что вам нужно для разработки и исполнения вашего кода, включая сторонние компоненты, необходимые для компиляции / выполнения)
- тесты (интеграция, омологация): вы запрашиваете точные теги, которые хотите обновить в своем рабочем пространстве тестирования, с помощью
- производство: вы точно указываете, что идет в производство из одного источника: вашего SCM.
Для тестовых и производственных сред это также означает, что ваш собственный продукт ( упакованный результат того, что вы создаете) также должен входить в SCM (только официальные выпуски, а не промежуточные, используемые внутри) .
Если другие проекты зависят от вашего продукта, они будут создавать свой собственный проект для вашей упакованной версии, хранящейся в SCM, а не для вашего исходного кода, который они каким-то образом перекомпилировали.
Почему это важно?
Потому что, в конце концов, то, что будет запущено в производство, - это упакованная версия вашего продукта, а не ваш "перекомпилированный исходный код". Следовательно, важно сделать все ваши тесты с целевой конечной формой вашего продукта, четко сохраненной и помеченной в вашем SCM.
Мартин Лазар поднимает законную точку в своем ответе
Контроль источника называется контролем источника, поскольку предполагается, что он управляет источниками.
Хотя это могло быть исторически верно, все нынешние RCS развивались в сторону SCM ( Управление исходным кодом ), который не только контролирует источники, но и управляет изменениями в документах, программах и другой хранимой информации. как компьютерные файлы.
Затем двоичные файлы могут быть сохранены (даже сохранены с бинарной дельтой)
Плюс, что позволяет некоторым из этих SCM предлагать функцию S "C" M (как в Источник Конфигурация Управление ).
Эта SCM (конфигурация) хранит не только «набор файлов», но также их отношения (или зависимости ) между этими наборами, чтобы вы могли запросить один набор файл и «вытягивать» все остальные поставки, от которых зависит этот набор (для сборки, развертывания или запуска)