Это тот подход, который я применил в аналогичном проекте. Это особенно полезно, если количество настроек довольно велико и включает много файлов.
У меня есть такая структура папок (здесь перечислены не все файлы и папки, а только важные):
core/
.git
app/
config/
database/
public -> ../design/public/
resources -> ../design/resources/
routes/
.gitignore
design/
.git
public/
resources/
.gitignore
Итак, у меня есть две основные папки core
и design
. Папка core
имеет символические ссылки на public
и resources
, расположенные в папке design
. Обе папки имеют собственное хранилище git. Вам даже не нужно исключать public
и resources
из .gitignore
папки core
, потому что git будет просто отслеживать символические ссылки, а не их содержимое.
Конечно вы также можете перемещать отдельные файлы, такие как специальные контроллеры, конфигурации, начальные числа базы данных и т. д. c. в папку design
, если они не являются частью основных компонентов вашего приложения.
На вашем сервере (ах) вы развертываете приложение в той же структуре папок. Вы извлекаете один репозиторий в папку core
, а другой - в папку design
. Вы можете свободно работать с репозиторием core
и обновлять sh для всех серверов. И если у вас есть design
обновлений для сайтов, вы можете работать с репозиторием дизайна и sh с этим для определенного сайта.
Надеюсь, вы следуете моим объяснениям - для меня этот сценарий работает очень хорошо!