我有一个ruby项目,数据库主机和端口在开发和生产方面可能不同。我需要一种方法来为这两个环境获取不同的值到我的脚本中。
项目应该是完整的 - 所以应该有一些方法来指定默认值。我不希望克隆丢失配置文件。完全忽略它们是行不通的。
你如何用git解决这个问题?
答案 0 :(得分:21)
我建议使用:
Git解决方案是git attribute filter driver(另见GitPro book)。
过滤器驱动程序由
clean
命令和smudge
命令组成,其中任何一个都可以不指定。
在checkout
时,当指定smudge
命令时,命令从其标准输入中提供blob对象,其标准输出用于更新工作树文件。
同样,clean
命令用于在签入时转换worktree文件的内容。
这样,smudge引用的脚本(使用Git管理)可以通过environement特定值替换所有变量,而clean脚本将其内容恢复为未触及的配置文件。
当您在prod环境中签出Git仓库时,涂抹过程将在生成的工作树中生成类似prod的配置文件。