我喜欢使用子模块的想法,但我担心我会把我的代码留在别人的手中。主要问题是每次我使用 capistrano 部署时,都会签出一个新的子模块副本,因为我正在使用:
set :git_enable_submodules, 1
那么如果有人提交了损坏的代码会发生什么?然后我在部署时应用中断。
除非您控制存储库,否则子模块通常是一个坏主意吗?
如果是这样,通常的做法是在本地存储库和 SCM 下保留每个插件的副本吗?
谢谢!
我喜欢使用子模块的想法,但我担心我会把我的代码留在别人的手中。主要问题是每次我使用 capistrano 部署时,都会签出一个新的子模块副本,因为我正在使用:
set :git_enable_submodules, 1
那么如果有人提交了损坏的代码会发生什么?然后我在部署时应用中断。
除非您控制存储库,否则子模块通常是一个坏主意吗?
如果是这样,通常的做法是在本地存储库和 SCM 下保留每个插件的副本吗?
谢谢!
是的,您应该保留所有可能在没有警告的情况下更新的本地副本(例如 git 子模块或 svn 外部)。在生产部署方面不要冒险!
有些人甚至认为您应该将 Rails 和所有纯 Ruby gem 冻结到vendor
目录中,以便它们仅在您需要时更新。您不必在部署到的每台服务器上安装所有依赖项。不过,现在 Rails 可以通过简单的 rake 任务轻松安装所有必需的 gem,这有点不重要了(rake gems:install
)。