Библиотеки (субрепозитории) у каждого проекта свои (как любит
Скрипач). Но внешний репозиторий библиотек у всех проектов один.
Через него и идет обмен. Например при реализации нового проекта нашли ошибку в библиотеке. Исправление будет только в новом проекте, в его локальном субрепозитории.
Потом проталкиваем изменение во внешний репозиторий библиотеки, и забираем его в локальный субрепозиторий другого проекта.
!!!!!!!!!!!!!!!! Проблемы "общего кода" для разных проектов не существует. Благодаря использованию системы контроля версий. !!!!!!!!!!!!!!!!!!!!!!!!!!!
Можно даже обходиться без внешнего репозитория, использовать один репозиторий библиотеки, и вставлять в проекты символьные ссылки на данный экземпляр репозитория. Результат будет точно такой-же, с несколькими мелкими нюансами:
- нужно учитывать нюансы работы своей системы контроля версий с символьными ссылками (попробовать на практике).
- при переключении с одного проекта на другой не забывать обновлять рабочую директорию библиотеки до актуального состояния у данного проекта.