Я уверен, что это распространенная проблема, которую другие уже решали раньше, поэтому я призываю других разработчиков / руководителей проектов к помощи за помощью.
У меня есть несколько проектов:
- Применение
- WebApp
- ServerApp
- Dev Utils
- ORM
Все приложения / утилиты зависят от ORM. Когда ORM изменяется, его необходимо скомпилировать, а все приложения необходимо заново скомпилировать и затем развернуть. Прямо сейчас моя структура VCS беспорядочная:
- AppName
- Магистральные
- Применение
- WebApp
- ServerApp
- Dev Utils (около 4 папок сейчас, но растет)
- ORM
- разблокировка,
- ProjectName (будь то приложение или WebApp) version.number
- Филиалы
В идеале я хотел бы иметь корневую папку для каждого приложения (Application / WebApp / ORM и т. Д.), Каждый из которых имеет свои собственные Trunk / Branches / Releases и т. Д. Для их логического и физического разделения. Я рассуждаю так: из-за того, что над Приложением проделано много работы, и оно выпускается гораздо чаще, каждая ветвь выпуска имеет идентичные копии одних и тех же утилит и т. Д. Кроме того, проверка Trunk на работу всегда означает, что все остальные проекты идут вместе.
Однако разделение означало бы выделение определенных проектов из решений и одновременное изменение любых проектов - больший скачок между 2-3 IDE (особенно при внесении изменений в ORM).
Я думаю об этом, потому что очень скоро я собираю компьютер CI (будьте готовы к вопросам об этом через неделю или около того), и я пытаюсь найти способ автоматического создания релизов / развертывается. Как правило, приложение развертывается только посредством копирования сценариев на сервер, где все рабочие станции запускаются при запуске, но, как я уже говорил, если ORM изменяется / выпускается, все остальные приложения следует пересобрать и развернуть.
(Сегодня я сломал наш веб-сайт и 3 утилиты, потому что я изменил ORM и развернул его с обновленной версией Приложения, но забыл перестроить / развернуть другие приложения с новым ORM - упс.)