Сценарий: различные продукты представляют собой комбинации небольших проектов. Несколько разных версий каждого продукта в разработке, выпуске и обслуживании (ошибки / исправления / второстепенные выпуски).
Большая часть команды использует различные сторонние инструменты и библиотеки для разработки и для выпуска (обычно два - XUnit для разработчиков и AutoMapper в продукте). Они фанаты версий, управляющих этими инструментами / библиотеками там, где это имеет смысл.
Кажется, я не могу понять, как лучше всего организовать структуру в Mercurial. В центральном стиле SVN я бы организовал, имея сторонние инструменты в качестве их собственных проектов, а затем создавая небольшие сборки для проектов, которые будут захватывать выходные данные других проектов, а затем проект выпуска, который будет построен из построенные проекты. Все было бы в иерархии,
(ветка разработчика)
Root/dev/ProjectX/
Root/dev/ProjectY/
Root/dev/ThirdParty/XXX -- could be a 3rd party lib
Root/dev/ThirdParty/YYY -- could be a 3rd party lib
(ветвь 1)
Root/release1/ProjectX/
Root/release1/ProjectY/
Root/release1/ThirdParty/XXX
Root/release1/ThirdParty/YYY
(ветвь 2)
Root/release2/ProjectX/
Root/release3/ProjectY/
Root/release2/ThirdParty/XXX
Root/release2/ThirdParty/YYY
и Т. Д.
Проблема заключается в том, что разработчики постоянно обновляют свои машины (с помощью диспетчера пакетов NUGET). Все элементы party должны находиться в папке ThirdParty, чтобы разработчикам не приходилось иметь несколько копий этих библиотек для каждого проекта.
У меня такой вопрос:
Если они реализуют mercurial, они должны реализовать аналогичную стратегию (большое репо) и клонировать / ветвиться здесь, или они должны разбить репозиторий, скажем, на уровне проекта и клонировать / ветвить их. В последнем случае будет ли у них ветка продукта / версии / репо? Я знаю, что они предпочли бы распределенную модель, если она будет работать лучше в долгосрочной перспективе, даже если изначально сложно изучить новый рабочий процесс.
Я прочитал http://nvie.com/posts/a-successful-git-branching-model/ и ряд статей, но я все еще не уверен, как это организовать.