Я разрабатываю и поддерживаю кучу кода клея perl для сторонних приложений, работающих на разных серверах. На каждом из серверов в настоящее время имеется репозиторий git для разработки кода, работающего там, и механизм push-to-deploy для смены изменений на соответствующие производственные серверы.Как отделить локальный от общего кода с помощью git repos
Хотя на разных серверах существуют разные сценарии, я заметил, что некоторые скрипты и модули perl полезны и необходимы на всех серверах. Я хочу вытащить их, поэтому у меня есть одно место, где я могу их поддерживать, все еще проверяя и развертывая их вместе с кодом, локальным для каждого сервера. Локальные скрипты и модули используют общие модули, общие скрипты используют совместно используемые модули, но нет зависимости от другой стороны.
Текущая структура хранилища:
Сервер 1 ~/USR/Dev:
localscript1.pl
sharedscript1.pl
perl-modules/localmodule1.pm
perl-modules/sharedmodule1.pm
Сервер 2:
localscript2.pl
sharedscript1.pl
perl-modules/localmodule2.pm
perl-modules/sharedmodule1.pm
Я хочу, чтобы вытащить sharedscript1.pl и sharedmodule1.pm в их собственное репо для управления версиями, но предпочли бы, чтобы все сценарии попадали в одну и ту же структуру папок в тестовых и производственных средах.
Моя нынешняя идея для реализации этого предполагает создание репо для общего кода и установку этого в качестве удаленного репо для локальных репозиториев.
Shared репо:
sharedscript1.pl
perl-modules/sharedmodule1.pm
я мог бы определить общий репозиторий в качестве удаленного для локальных операций РЕПО и тянуть коммиты оттуда в местный код. После тестирования и фиксации я могу использовать мой существующий процесс развертывания, чтобы подтолкнуть все к производству.
Это разумная установка для использования? Любые проблемы/подводные камни с таким подходом, о которых я должен знать? Есть ли лучший способ справиться с этим делом?
Примечание: Я хочу сохранить это довольно легким, окончательная сборка будет состоять из трех или четырех локальных серверов, возможно, с дюжиной скриптов и нескольких локальных модулей. Совместное репо в настоящее время имеет два сценария и один модуль, с потенциалом для еще нескольких.
Дополнительное примечание: Я бегу Git версии 1.6.0.2