Я разрабатываю проект в .NET (точнее, используя C #).
Использование Visual Studio в качестве IDE.
Использование Mercurial для контроля версий.
Я буду использовать сторонние библиотеки:
ThirdParty.Foo.dll
ThirdParty.Bar.dll
ThirdParty.Baz.dll
И некоторые внутренние библиотеки:
Company.A
Company.B
Company.C
Company.D (Ссылки на сторонние библиотеки)
Company.E (Справочная Компания.A)
Сам проект будет иметь следующие компоненты:
Project.Core
Project.DataModel (ссылки на собственные / сторонние библиотеки)
Project.GUI (ссылается на Core, DataModel и собственные / сторонние библиотеки)
Project.PluginOne (ссылается на Core, DataModel и собственные / сторонние библиотеки)
Project.PluginTwo (ссылается на Core, DataModel и собственные / сторонние библиотеки)
* может быть произвольным количеством плагинов *
Я довольно новичок в Mercurial, поэтому я не знаю, как лучше структурировать свои репозитории для такого проекта,
с большим количеством взаимосвязанных компонентов.
Внутренние библиотеки довольно различны, поэтому я бы сказал, что у каждой из них должен быть свой собственный репозиторий. Однако некоторые из них используют функциональность, предоставленную другими. Как управлять этими зависимостями?
Плагины проекта должны отличаться друг от друга, поэтому я думаю, что у каждого будет свой репозиторий. Как следует управлять зависимостями от внутренних / сторонних библиотек и остальной части проекта (Project.DataModel и Project.Core) с учетом схемы решения и схемы хранилища?
Итак, для проекта, подобного этому, каков наилучший способ структурирования?
(а) мои визуальные студийные решения
(б) мой исходный репозиторий / репозитории