Mar*_*unt 39 git config github
我仍然是所有git的新手,并且想知道什么是配置文件的最佳实践.我的本地开发服务器需要不同的配置值到我的实时服务器,所以如何阻止它推/拉这些文件?
Ala*_*ith 42
使用符号链接.
举个例子,你有一个名为"config.ini"的配置文件.在git repo的工作目录中,您将执行以下操作:
创建一个名为"config-sample.ini"的配置文件版本.这是您将完成所有工作的文件.
在"config.ini"和"config-sample.ini"之间创建一个符号链接.
ln -s config-sample.ini config.ini
Run Code Online (Sandbox Code Playgroud)
这个让你的所有代码都指向"config.ini",即使你真的在维护"config-sample.ini".
更新.gitignore以防止存储"config.ini".也就是说,添加一个"config.ini"行:
echo "config.ini" >> .gitignore
Run Code Online (Sandbox Code Playgroud)(可选,但强烈建议)使用"config.ini export-ignore"行创建.gitattributes文件.
echo "config.ini export-ignore" >> .gitattributes
Run Code Online (Sandbox Code Playgroud)做一些编码和部署....
将代码部署到生产环境后,将"config-sample.ini"文件复制到"config.ini".您需要进行必要的调整才能进行生产设置.您只需在首次部署时以及每次更改配置文件的结构时执行此操作.
这样做的一些好处:
配置文件的结构在repo中维护.
可以为开发和生产之间相同的任何配置选项维护合理的默认值.
每当您将新版本推向生产时,您的"config-sample.ini"都会更新.这样可以更轻松地发现您需要在"config.ini"文件中进行的任何更改.
您永远不会覆盖"config.ini"的生产版本.(带有.gitattributes文件的可选步骤4添加了额外的保证,即使您不小心将其添加到存储库中,也永远不会导出"config.ini"文件.)
(这在Mac和Linux上对我很有用.我猜测在Windows上可能有相应的解决方案,但其他人必须对此发表评论.)
joe*_*dle 11
有多种选择:
将文件添加default.conf到您的Git存储库.
您的应用首先查找,app.conf但如果不存在,则使用default.conf.
想要非默认配置的用户可以复制default.conf到app.conf然后进行编辑.
用户不应该提交app.conf到存储库,因为不同的用户可能需要该文件中的不同设置.(所以你应该投入app.conf你的.gitignore.)
您的应用程序始终加载,default.conf但如果app.conf存在,则它将从设置中复制设置.app.confdefault.conf
这种扭曲有几个优点:
app.conf 只需要保持与默认值的差异,使其更小,更容易维护.
当应用程序更改时,添加到的新默认值default.conf将可供应用程序使用,用户无需将其复制到其中app.conf.
这个解决方案非常类似于上面的Alan W. Smith的答案,但有一点不同:如果应用程序可以在没有
app.conf文件存在的情况下启动,那么它将开箱即用.但是,它确实为应用程序的启动代码增加了一些复杂性.这个建议是Linus Torvalds在git或内核邮件列表上做的一些建议之一,但我今天无法找到它.
您可以使用环境变量将应用指向特定的配置文件.您可以像这样启动您的应用:
CONFIG_FILE=test.conf ./start-app
Run Code Online (Sandbox Code Playgroud)
或者:
./start-app --config=test.conf
Run Code Online (Sandbox Code Playgroud)
这意味着您可以拥有多个配置文件development.conf,staging.conf以及production.conf.当您启动应用程序时,您可以告诉它使用哪个配置文件.
想要尝试不同配置的开发人员可以指向他们自己的文件,例如custom.conf.
您还可以使用环境变量或命令行参数来覆盖特定设置:
./start-app --config=default.conf --db-url=... --debug-level=5
Run Code Online (Sandbox Code Playgroud)
您可以在主分支中保留默认配置.
为您的每个不同环境分叉不同的分支.
每个分支都可以根据需要修改默认配置文件.
当主分支更新时,从主服务器合并到您的特定分支.
就个人而言,我不推荐这种方法.我认为维护起来比较困难.
Git将忽略您未明确添加的文件,因此检查不同的分支只会将它们留在目录结构中的位置,因为其他文件会在它们周围发生变化.如果您将配置文件添加到repo根目录中的.gitignore文件中(可能需要创建它,此处有更多信息),那么您仍然可以执行所有文件命令
git add .
Run Code Online (Sandbox Code Playgroud)
如果你想,而不是担心它.