Как правильно организовать структуру хранения и контроль версий проекта?
Здравствуйте!
Занимаюсь оптимизацией процессов разработки, а также внедрением практик CI/CD, использую gitlab и его систему автосборки, у меня в разработке проект на (qt, С++, но я думаю это не важно), использующий библиотеки, которые по факту тоже являются отдельными подпроектами, которые реализуют определённый функционал, без них основной проект не работает и не собирается!
Как правильно организовать хранение и сборку проектов и подпроектов, должны ли исходники для сборки библиотек лежать в отдельных репозиториях, сейчас всё хранится в одной куче - раздельная компиляция позволяет не пересобирать проект полностью, но мне кажется правильно раскидать подпроекты по разным репозиториям и собирать отдельно, есть основной проект и есть библиотеки, для каждой либы отдельно завести репозиторий и внедрять контроль версий, автотесты, плюс удобно вести трудозатраты и отслеживать изменения, потому что сейчас там чёрт ногу сломит?
Напишите о своей практике управления и организации проектами!
Если дело обстоит "куча либ (dll) и один проект" то я делаю у себя так:
Для каждой либы отдельный репозиторий, такая либа знать не знает в каких проектах её будут использовать, она просто выдает по версиям свои dll, кто какую версию хочет - такую и берет
Проекты которые используют эти либы хранят их у себя в папке libs
Выходит:
1) Вы создаете проект
2) Берете нужные либы и копируете их dll прямо в папку проекта (я лично не люблю когда проект начинает доставать каждый раз либы неизвестно от куда, источники могут умереть или изменится)
3) Готово
Система такая же как если бы эти либы были не ваши, а от стороннего разработчика. У таких разработчиков иногда есть репозитории, и есть готовые dll. Как вы поступаете в таком случае? Подключаете репозиторий и компилируете? Просто копируете dll в проект? Делайте так же и с вашими либами
В visual studio, кстати, есть так называемые "решения", которые собирают вместе проекты и компилируют их
Вы правильно говорите, у меня есть локальное файловое хранилище где лежат уже собранные библиотеки и пакетные сборки (работаю под Linux), которые при деплое устанавливаются и копируются.
Вопрос был именно в организации хранения исходников, если я правильно понял, вы поддерживаете идею, разделить проект, вынести либы в отдельные репозитории, которые, если требуется компилировать отдельно?
Просто сейчас всё куче!