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

Sea*_*ess 12 ruby git version-control

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

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

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

Von*_*onC 21

我建议使用:

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

然后Git解决方案是git属性过滤器驱动程序(另请参阅GitPro书籍).

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

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

干净的污迹

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

  • @Tarocco实际上,有一个模板目录,如果所有团队成员通过可访问的网络路径共享该目录,则可以使用该模板目录来初始化新的Git存储库,包括它们的配置:/sf/answers/3176403401/。另请参阅 /sf/answers/1145453291/ 及下文。 (2认同)