Поскольку вы не можете использовать какие-либо инструменты сторонних разработчиков, рассматривали ли вы использование Team Foundation Server (по крайней мере, компонента управления версиями), а не VSS? Из моего опыта TFS - достойная система контроля версий. С TFS у вас есть приятная функциональность редактирования-слияния, а не эксклюзивная проверка, которая делает разработку более чем одним человеком намного приятнее. Кроме того, ветвление и слияние в TFS намного лучше, чем в VSS.
Существует бесплатная лицензия рабочей группы для TFS, которая дает вам до 5 именованных пользователей, после 5 пользователей или, если вы хотите аутентификацию / авторизацию Active Directory, вы должны использовать стандартную версию. В зависимости от вашего уровня льгот MS Partner ваша компания может уже иметь лицензию на TFS.
Кроме того, все клиенты должны иметь клиентскую лицензию (и установленный Team Explorer). Из моего понимания MS Licensing не требуется, чтобы у всех, кто будет иметь доступ к серверу TFS, был Team SKU Visual Studio, и чтобы вы могли продолжать использовать VS Pro и приобрести TFS CAL (которая поставляется с Team Explorer). Я реализовал это точное решение у предыдущего работодателя.
В TFS я бы настроил ваше решение следующим образом (я только показал Trunk как полностью расширенный и (частичный) ответвление функции):
$/Project1/
Branches/
/Spike1/
BusinessObject/
BusinessObject.sln
BusinessObjectProject1/
BusinessObjectProject2/
WebService/
WebService.sln
WebServiceProject1/
WebServiceProject2/
<etc>
Tags/
Trunk/
BusinessObject/
BusinessObject.sln
BusinessObjectProject1/
BusinessObjectProject2/
WebService/
WebService.sln
WebServiceProject1/
WebServiceProject2/
Proxy/
Proxy.sln
ProxyProject1/
ProxyProject2/
Web/
Web.sln
WebProject1/
WebProject2/
$/Project2/
Branches/
Tags/
Trunk/
BusinessObject/
BusinessObject.sln
BusinessObjectProject1/
BusinessObjectProject2/
Proxy/
Proxy.sln
ProxyProject1/
ProxyProject2/
Web/
Web.sln
WebProject1/
WebProject2/
Папка Branches позволяет легко реализовать стандартное ветвление и слияние, особенно потому, что TFS позволяет выполнять только операции ветвления / слияния между ветвью и ее прямым предком и прямым потомком. Идея состоит в том, что большинство повседневных разработок происходит в Trunk, и когда вам нужно временно изолировать изменения для работы над основной функцией или шипом, вы берете ветку из Trunk в Branches, которую затем можете объединить обратно в Trunk, когда вы будете готовы интегрировать (а также продолжать объединять текущие изменения из магистрали в вашу функциональную ветвь).
Папка «Теги» позволяет вам как переходить к тегу, когда вы готовы сделать снимок определенной версии вашего кода, так и использовать эту папку для сборки и развертывания. Для сборки и развертывания вы создаете ветку из Trunk в / Tags / Test и из / Tags / Test в / Tags / Production, а затем объединяете свои изменения из / Trunk в / Tags / Test, когда вы готовы продвигать свои изменения в тестовая среда. Вы можете иметь либо непрерывную интеграционную сборку, работающую в / Tags / test, либо сборку по требованию, которая выполнит сборку из этой ветви и скопирует необходимые артефакты в соответствующие местоположения. Вы можете иметь аналогичные функции в ветке / Tags / Production, чтобы при объединении изменений из Test в Production вы продолжали выполнять автоматическую сборку и развертывание.
В дополнение к лучшему контролю исходного кода, с TFS вы также получаете такие вещи, как сервер сборки OK CI (с использованием Team Build и сборкой на коробке TFS или выделенном сервере сборки), отслеживание рабочих элементов (что довольно хорошо и приятно настраиваемый) и достойный проектный портал с использованием интеграции SharePoint с TFS. Все эти дополнительные функции также очень привлекательны, и я рекомендую взглянуть на некоторые другие отличные материалы TFS, доступные в Интернете, для получения более подробной информации.