我有一个
ruby项目,数据库主机和端口可能在开发和生产上有所不同.我需要一种方式来为这两种环境的脚本获得不同的值.
项目应该是完整的 – 所以应该有一些方法来指定默认值.我不希望克隆丢失配置文件.所以完全忽视他们将不会奏效.
你如何用git解决这个问题?
解决方法
我建议使用:
>一个模板配置文件(具有变量名称的文件代替主机和端口值)
>一个脚本,可以根据环境(由脚本检测)替换那些具有适当值的变量名称
那么Git解决方案就是git attribute filter driver(另见GitPro book).
A filter driver consists of a
clean
command and asmudge
command,either of which can be left unspecified.
Uponcheckout
,when thesmudge
command is specified,the command is fed the blob object from its standard input,and its standard output is used to update the worktree file.
Similarly,theclean
command is used to convert the contents of worktree file upon check-in.
这样,由smudge引用的脚本(由Git管理)可以通过特定于环境的值替换所有变量,而clean脚本将其内容还原到未触摸的配置文件.