保护 git 个特定于部署的文件
Protecting git deployment-specific files
这是一个关于 git 的非常普遍的问题 - 考虑以下示例的服务器应用程序。
上下文:假设你的repo中有几个分支,其中'staging'和'deploy'。要开发应用程序,您可以使用具有特定开发配置文件的私有机器。您的应用程序即将部署到 public 台机器上。但是 public 机器需要不同的配置文件(例如,它必须访问特定的数据库)。
问题: 如果我在 'staging' 中提交我的配置文件,做一些更改,然后合并到 'deploy',它将覆盖我的部署配置文件,这是不正确的。如果我不跟踪我的配置文件,我随时可能会丢失它们。
问题:我怎样才能保护两个分支中的两个文件,以便任何时候都不会丢失?如何将这些文件分配给它们所属的分支机构?有没有办法透明地完成这一切,这样我就可以使用 git 的常用机制而不必考虑这些文件?
谢谢!
根据我的经验,分支不是正确的方法。尝试将开发和部署分离到单独的存储库中。您的应用程序存储库不应包含用于生产部署的配置文件。可用于本地部署的默认配置通常很好。
出于以下原因,其他任何内容都应保留在源代码存储库之外:
- Branching/merging 您上面提到的问题。
- 您不知道在所有情况下您的应用程序将部署到哪些服务器。在许多组织中,runtime/production 环境的部署和操作将由不同的团队处理 - 他们最了解您的应用程序将 运行 在哪些服务器上,您不需要在其中提供此信息你的源代码仓库。
如果您仍想跟踪配置(通常这是个好主意),
- 创建一个单独的配置 repo 并使用上面评论中描述的命名方法 (
file-uat.config
, file-production.config
) - 你也可以在同一个 repo 中使用目录,所以一个目录包含所有uat 文件,一个所有的生产文件,等等。或者
- 为每个部署环境创建一个单独的存储库,例如
myapp-config-uat
、myapp-config-production
。
这些方法中的任何一种都应该与脚本解决方案配合使用,脚本解决方案将自动 cloning/updating 配置文件到相关环境中。
这是一个关于 git 的非常普遍的问题 - 考虑以下示例的服务器应用程序。
上下文:假设你的repo中有几个分支,其中'staging'和'deploy'。要开发应用程序,您可以使用具有特定开发配置文件的私有机器。您的应用程序即将部署到 public 台机器上。但是 public 机器需要不同的配置文件(例如,它必须访问特定的数据库)。
问题: 如果我在 'staging' 中提交我的配置文件,做一些更改,然后合并到 'deploy',它将覆盖我的部署配置文件,这是不正确的。如果我不跟踪我的配置文件,我随时可能会丢失它们。
问题:我怎样才能保护两个分支中的两个文件,以便任何时候都不会丢失?如何将这些文件分配给它们所属的分支机构?有没有办法透明地完成这一切,这样我就可以使用 git 的常用机制而不必考虑这些文件?
谢谢!
根据我的经验,分支不是正确的方法。尝试将开发和部署分离到单独的存储库中。您的应用程序存储库不应包含用于生产部署的配置文件。可用于本地部署的默认配置通常很好。
出于以下原因,其他任何内容都应保留在源代码存储库之外:
- Branching/merging 您上面提到的问题。
- 您不知道在所有情况下您的应用程序将部署到哪些服务器。在许多组织中,runtime/production 环境的部署和操作将由不同的团队处理 - 他们最了解您的应用程序将 运行 在哪些服务器上,您不需要在其中提供此信息你的源代码仓库。
如果您仍想跟踪配置(通常这是个好主意),
- 创建一个单独的配置 repo 并使用上面评论中描述的命名方法 (
file-uat.config
,file-production.config
) - 你也可以在同一个 repo 中使用目录,所以一个目录包含所有uat 文件,一个所有的生产文件,等等。或者 - 为每个部署环境创建一个单独的存储库,例如
myapp-config-uat
、myapp-config-production
。
这些方法中的任何一种都应该与脚本解决方案配合使用,脚本解决方案将自动 cloning/updating 配置文件到相关环境中。