Сценарий:
Различные продукты составляли комбинации небольших проектов. Несколько разных версий каждого продукта в dev, release и maintennace (ошибки / исправления / второстепенные выпуски).
Большинство разработчиков используют различные сторонние инструменты и библиотеки для разработки и выпуска (наиболее распространенными являются 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 ). Все сторонние элементы должны быть в папке ThirdParty, чтобы гарантировать, что разработчики не нужно иметь несколько копий этих библиотек для каждого проекта.
Мой вопрос такой:
Если они реализуют Mercurial, следует реализовать схожую стратегию (большое репо) и клон / ветвь здесь, или они должны разбить репозиторий, скажем, на уровне проекта и клонировать / ветвить их. В последнем случае они будут иметь продукт / версию филиала / репо? Я знаю, что они предпочли бы распределенную модель, если она будет работать лучше в долгосрочной перспективе, даже если изначально тяжело изучать новый рабочий процесс.
Я прочитал http://nvie.com/posts/a-successful-git-branching-model/ и ряд статей, но я все еще не уверен, как организовать.