По моему опыту, проблематично иметь два независимых проекта, ссылающихся на одни и те же исходные файлы, потому что я могу добавить или изменить код в общем файле для удовлетворения потребностей одного проекта только для того, чтобы сломать другую сборку.
Кажется, что хитрость заключается в том, чтобы позволить каждому проекту продвигаться независимо, поэтому, как бы вы ни настраивали свои репозитории, вы хотите стабилизировать общий код так, чтобы он изменялся только тогда, когда вы этого хотите.
Например, если общий код находится в двух ветвях / папках одного и того же репозитория, или если он проверен отдельно в двух разных репозиториях, или если он живет в третьем репозитории сам по себе, вы хотите выполнить шаг обновления этого кусок кода, который должен быть ручным, без побочных эффектов, который можно изолировать, отлаживать и исправлять.
Я поместил этот код в третий репозиторий, а затем периодически переносил этот код в свои зависимые репозитории проектов в качестве внутренних этапов выпуска и обновления; Мои отдельные проекты затем имеют ревизию, которая выглядит как «Обновленный до версии 4.3.345 Shared.App.dll», которая включает в себя все изменения, необходимые для работы с этой версией.
Если общий код является частью одного и того же хранилища, что и два зависимых проекта, то для каждого изменения используйте его отдельную копию и используйте слияния хранилища для распространения ваших изменений.