0

当Capistrano部署Rails应用程序时,它会创建一个shared/目录来存储应该在发行版间共享的文件,并且不会每次都重新导出。在我的应用程序中,我在shared/目录中有几件事情很少发生变化(因此它们属于那里,而不是在应用程序树中),但我仍然希望它们在执行更改时受版本控制。Capistrano:共享文件的版本控制/

什么是最好的方式来处理版本控制这些文件,但保持他们从存储库分开卡皮斯特拉诺出口?

回答

3

/shared目录确实用于未版本化的数据。例如,您可能会储存捆绑的宝石,这样您就不必在每个版本中重新安装所有的宝石。您还可以将日志存储在那里,以便每次部署时不会覆盖它们。您可以在其中存储pid文件,以便在部署期间不会丢失关键流程的进程标识。您甚至可以将用户生成或部分处理的数据存储在此处,以便在发布期间不会将其删除。如果一个文件的版本是有版本的,并且有可能改变,我建议将它保留在其他文件中并且不在共享目录中。也就是说,您总是可以编写部署脚本来预先填充共享目录中的数据,例如数据库配置文件。这些脚本将在每个部署中运行,并且可以完全自定义。例如,如果您的数据库配置脚本不存在,那么您的数据库配置脚本可能只会写入配置文件。

+0

这很有道理。我将把需要更改的文件移动到源代码树中。谢谢! – jrdioko 2011-02-07 23:34:32

0

共享目录的另一种常见用途是用于配置文件。配置文件的版本控制和源代码控制是一个非常好的主意,但应该在系统配置管理工具中进行管理。在我的环境中,我使用Capistrano管理代码版本以及使用Puppet进行系统配置。这样,配置文件仍然有源代码控制,但它们与代码部署过程保持不同。反过来,代码部署过程保持独立于系统配置。