保护git特定于部署的文件

时间:2015-02-18 09:29:55

标签: git server

这是关于git的一个非常普遍的问题 - 想想下面例子的服务器应用程序。

上下文:假设您的仓库中有一些分支,其中包括“暂存”和“部署”。要开发应用程序,请使用具有特定开发配置文件的专用计算机。您的应用即将部署在公共计算机上。但是,公共机器需要不同的配置文件(例如,它必须访问特定的数据库等)。

问题:如果我在'staging'中提交配置文件,进行一些更改,然后合并到'deploy',它将覆盖我的部署配置文件,这将是不正确的。如果我不跟踪我的配置文件,我可能会在任何时候丢失它们。

问题:如何保护两个分支中的两个文件,以便在任何时候都不会丢失?如何将这些文件分配给它们所拥有的分支机构?有没有办法透明地完成所有这些,这样我就可以使用git的常用机制而无需考虑这些文件?

谢谢!

1 个答案:

答案 0 :(得分:3)

根据我的经验,分支机构不是正确的方法。尝试将开发和部署分离到单独的存储库中。您的应用程序仓库不应包含用于生产部署的配置文件。可以用于本地部署的默认配置通常很好。

由于以下原因,其他任何内容都应保留在源代码仓库之外:

  • 您在上面提到的分支/合并问题。
  • 在所有情况下,您都不知道应用程序将部署到哪些服务器。在许多组织中,运行时/生产环境的部署和操作将由不同的团队处理 - 他们最了解您的应用将运行哪些服务器,并且您不需要在源代码仓库中包含此信息

如果您仍想跟踪配置(一般来说这是一个好主意),

  • 创建一个单独的配置仓库并使用上面评论中描述的命名方法(file-uat.configfile-production.config) - 您也可以在同一个仓库中使用目录,因此一个目录包含所有的uat文件,所有生产文件等等。或者
  • 为每个部署环境创建一个单独的repo,例如myapp-config-uatmyapp-config-production

这些方法中的任何一种都应该适用于脚本解决方案,该解决方案可以自动将配置文件克隆/更新到相关环境中。