【发布时间】:2015-09-14 09:46:28
【问题描述】:
我正在为运行在不同服务器上的第三方应用程序开发和维护一堆 perl 胶水代码。目前,每台服务器都有一个 git 存储库,用于开发在其中运行的代码,以及一个推送部署机制,用于将更改推出到各自的生产服务器。
虽然通常在不同的服务器上运行不同的脚本,但我现在注意到一些 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 提取到他们自己的 repo 中以进行源代码控制,但希望所有脚本在测试和生产环境中都位于相同的文件夹结构中。
我目前实现这一点的想法包括为共享代码创建一个 repo,并将其设置为本地 repos 的远程 repo。
共享仓库:
sharedscript1.pl
perl-modules/sharedmodule1.pm
然后我可以将共享存储库定义为本地存储库的远程,并将提交从那里拉到本地代码中。在那里测试并提交后,我可以使用我现有的部署流程将所有内容推送到生产环境。
这是一个合理的设置吗?我应该注意这种方法的任何问题/陷阱?有没有更好的方法来处理这种情况?
注意:我想保持这个相当轻量级,最终构建将是三到四个本地服务器,每个可能有十几个脚本和几个本地模块。共享存储库目前将有两个脚本和一个模块,可能还会有更多。
补充说明:我正在运行 git 版本 1.6.0.2
【问题讨论】: