我的问题是关于维护分支和环境特定的配置文件的最佳方法。我看到了类似问题的答案here和here,但都不太令人满意。主要的两种方法似乎是a)使用.gitignore排除将配置文件留在git之外,或b)编写反映环境感知代码,例如根据主机名确定要使用的数据库凭据。我对a)的问题在于它只允许一个配置文件集存在于代码库中(与当前分支无关),因此其他环境的配置文件会丢失。另一方面,b)似乎只需要以一种与应用程序功能无关的方式修改代码库。
是否有任何使用 git 完成此操作的方法?
感谢您的考虑!
我的问题是关于维护分支和环境特定的配置文件的最佳方法。我看到了类似问题的答案here和here,但都不太令人满意。主要的两种方法似乎是a)使用.gitignore排除将配置文件留在git之外,或b)编写反映环境感知代码,例如根据主机名确定要使用的数据库凭据。我对a)的问题在于它只允许一个配置文件集存在于代码库中(与当前分支无关),因此其他环境的配置文件会丢失。另一方面,b)似乎只需要以一种与应用程序功能无关的方式修改代码库。
不确定为什么有些人认为他们可以不使用任何安装工具。Git 是用于追踪源代码的,而不是用于部署的。你应该仍然需要一个“make install”类型的工具,从你的 Git 存储库到实际部署中,这个工具可能会执行各种操作,例如模板扩展或选择备选文件。
例如,你可能在 Git 中检入了“config.staging”和“config.production”文件,在部署到暂存环境时,安装工具将选择将“config.staging”复制到“config”中。或者你可能只有一个“config.template”文件,在部署时它将被拓展生成“config”文件。
我假设通常情况下,master
分支只包含已经在 staging
分支中的提交。如果你在 master
分支上添加了一个额外的提交,其中包含两个分支之间配置的差异,那么将这个提交在从 staging
拉取的内容之上进行变基操作应该可以保持配置不变。虽然这并不像“将 staging 合并到 master 中不会以任何方式影响 master 的配置文件”那样简单,但是由于在这种情况下会出现合并冲突,因此它可能已经足够接近了。