Git配置文件的最佳实践等

Mar*_*unt 39 git config github

我仍然是所有git的新手,并且想知道什么是配置文件的最佳实践.我的本地开发服务器需要不同的配置值到我的实时服务器,所以如何阻止它推/拉这些文件?

Ala*_*ith 42

使用符号链接.

举个例子,你有一个名为"config.ini"的配置文件.在git repo的工作目录中,您将执行以下操作:

  1. 创建一个名为"config-sample.ini"的配置文件版本.这是您将完成所有工作的文件.

  2. 在"config.ini"和"config-sample.ini"之间创建一个符号链接.

    ln -s config-sample.ini config.ini
    
    Run Code Online (Sandbox Code Playgroud)

    这个让你的所有代码都指向"config.ini",即使你真的在维护"config-sample.ini".

  3. 更新.gitignore以防止存储"config.ini".也就是说,添加一个"config.ini"行:

    echo "config.ini" >> .gitignore
    
    Run Code Online (Sandbox Code Playgroud)
  4. (可选,但强烈建议)使用"config.ini export-ignore"行创建.gitattributes文件.

    echo "config.ini export-ignore" >> .gitattributes
    
    Run Code Online (Sandbox Code Playgroud)
  5. 做一些编码和部署....

  6. 将代码部署到生产环境后,将"config-sample.ini"文件复制到"config.ini".您需要进行必要的调整才能进行生产设置.您只需在首次部署时以及每次更改配置文件的结构时执行此操作.

这样做的一些好处:

  • 配置文件的结构在repo中维护.

  • 可以为开发和生产之间相同的任何配置选项维护合理的默认值.

  • 每当您将新版本推向生产时,您的"config-sample.ini"都会更新.这样可以更轻松地发现您需要在"config.ini"文件中进行的任何更改.

  • 您永远不会覆盖"config.ini"的生产版本.(带有.gitattributes文件的可选步骤4添加了额外的保证,即使您不小心将其添加到存储库中,也永远不会导出"config.ini"文件.)

(这在Mac和Linux上对我很有用.我猜测在Windows上可能有相应的解决方案,但其他人必须对此发表评论.)


joe*_*dle 11

有多种选择:

1.提交默认配置文件,但允许本地配置文件

将文件添加default.conf到您的Git存储库.

您的应用首先查找,app.conf但如果不存在,则使用default.conf.

想要非默认配置的用户可以复制default.confapp.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或内核邮件列表上做的一些建议之一,但我今天无法找到它.

2.使用环境变量和/或命令行参数

您可以使用环境变量将应用指向特定的配置文件.您可以像这样启动您的应用:

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)

3.不同的分支

您可以在主分支中保留默认配置.

为您的每个不同环境分叉不同的分支.

每个分支都可以根据需要修改默认配置文件.

当主分支更新时,从主服务器合并到您的特定分支.

就个人而言,我不推荐这种方法.我认为维护起来比较困难.


Mat*_*son 5

Git将忽略您未明确添加的文件,因此检查不同的分支只会将它们留在目录结构中的位置,因为其他文件会在它们周围发生变化.如果您将配置文件添加到repo根目录中的.gitignore文件中(可能需要创建它,此处有更多信息),那么您仍然可以执行所有文件命令

git add .
Run Code Online (Sandbox Code Playgroud)

如果你想,而不是担心它.