如何在回购/项目中跟踪系统特定的配置文件?

时间:2010-01-28 13:56:37

标签: ruby git version-control

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

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

你如何用git解决这个问题?

1 个答案:

答案 0 :(得分:21)

我建议使用:

  • 模板配置文件(具有变量名称的文件代替主机和端口值)
  • 一个脚本,能够根据环境(由脚本检测到)用适当的值替换这些变量名称

Git解决方案是git attribute filter driver(另见GitPro book)。

  

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

这样,smudge引用的脚本(使用Git管理)可以通过environement特定值替换所有变量,而clean脚本将其内容恢复为未触及的配置文件。

clean smudge

当您在prod环境中签出Git仓库时,涂抹过程将在生成的工作树中生成类似prod的配置文件。