Кратко, как правильно организуется работа. В репозитории существуют
зафисированные версии в виде отдельных "ветвей". Версия представлет
собой по сути самостоятельный проект, снимок всего, что относится к
проекту, втч библиотек, полностью самостоятельную отдельную ветвь
разработки. Когда ведется ретроспективная доработка старой версии,
код версии вместе со всеми библиотеками и ресурсами либо
извлекается в свой, полностью отдельный каталог, где с кодом версии
производится
работа как с отдельным проектом, идут коммиты, итд. Либо, если проект огромный и держать на HDD несколько версий затратно, переключение между версиями выполняется средствами системы контроля версий и так и называется, свитч, "свитчнуться". Важно то, что у версии зафиксированы свои версии библиотек (на их версии разработки), ресурсов, итд. После завершения работы с версией (поправки багов, итд) создается под-версия версии (откуда и идет нумерация вида ver 2.3.11).
Эволюция продукта, новые фичи продукта разрабатываются в точности так же. В репозитории создается новая "версия" (ветвь, по сути проект) и над ней идет работа.
(Вместе с версией всех либ, всех зависимостей)
Это же дает ответ почему во многих больших проектах внутри можно наблюдать слитые и зафиксированные версии библиотек - причины комплексные, но основная - фиксация версий эволюционирующих внешних либ.
Разные доработки перемещаются из версии в версию. Иногда например в ходе ретроспективой доработки удается исправить какой-то баг.
Делается diff между было и стало, и этот diff впиливается в текущую версию или (опционально) в старые версии.
Ключевым отличием и важным моментом для понимания является отсутствие некой общей постепенной эволюции проекта в trunk'е. Вместо этого - существуют снапшоты-версии, и вся работа ведется во-первых в них, во-вторых правки из них перетягиваются в другие снапшоты-версии, как ретроспективные, так и "текущую" разработку aka новую версию, хотя при таком способе работы понятие "текущая разработка" размывается, иногда в больших проектах случается что старая версия разрабатывается больше/быстрее даже чем текущая и идет параллельная работа в разных ветках.