我如何跟踪回购/项目中的系统特定的configuration文件?

我有一个ruby项目,数据库主机和端口可能是不同的开发和生产。 我需要一种方法为这两种环境的脚本获取不同的值。

该项目应该是完整的 – 所以应该有一些方法来指定默认值。 我不希望克隆错过configuration文件。 所以完全忽略它们是行不通的。

你怎么用git解决这个问题?

我会build议使用:

  • 模板configuration文件(具有variables名称的文件代替主机和端口值)
  • 一个脚本,能够取决于环境(由脚本检测到),用适当的值replace这些variables名称,

Git解决scheme然后是一个git属性filter驱动程序 (另请参阅GitPro书 )。

filter驱动程序由一个clean命令和一个smudge命令组成,其中任何一个都可以不指定。
checkout ,当smudge命令被指定时,命令从标准input中inputblob对象,其标准输出用于更新工作树文件。
同样, clean命令用于在检入时转换工作文件的内容。

这样,由污迹引用的脚本(由Gitpipe理)可以用环境特定的值replace所有的variables,而干净的脚本会将其内容恢复到未触摸的configuration文件。

干净的污迹

当你在产品环境中签出你的Git仓库时,涂抹过程会在生成的工作树中生成一个prod-likeconfiguration文件。