我如何跟踪回购/项目中的系统特定的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文件。