代码之家  ›  专栏  ›  技术社区  ›  erenon

如何实用地控制配置文件的版本?

  •  29
  • erenon  · 技术社区  · 15 年前


    如果此配置文件:

    database_password=secret
    foo=bar
    

    变成

    database_password=*
    foo=bar
    

    vcs的其他用户也可以自行设置密码。忽略该文件不是一个好方法,如果配置文件发生更改,开发人员应该知道。

    本地版本:

    database_password=own_secret
    foo=bar
    

    数据库密码=*
    

    database_password=*
    foo=bar
    baz=foo
    

    对于每个开发人员,本地版本将成为:

    database_password=own_secret
    foo=bar
    baz=foo
    

    这是我的解决方案。我怎样才能做到这一点?如何存储配置文件?有没有办法做到这一点,或者我应该破解一些东西?

    9 回复  |  直到 12 年前
        1
  •  27
  •   Community Erin Dees    7 年前

    不需要对实际配置文件进行版本控制,您可以将模板或默认文件置于版本控制中,并将脚本置于版本控制中,该脚本将请求DB信息和凭据以生成真实的配置文件,该配置文件将从版本控制中排除(即被忽略)。签出时,开发人员可以运行此脚本以获得一个工作环境。此脚本也可以作为应用程序使用的任何安装过程的一部分进行调用。

    阿尔索 see my answer 他回答了一个类似的问题。

        2
  •  10
  •   Paolo    15 年前

    您有一个主配置,其中包含公共配置和虚拟用户名/密码(或者将它们全部省略)。然后,每个开发人员使用其特定的用户名/密码创建一个本地override.config(或任何内容)。主配置受源代码控制,而开发人员(或计算机)本地覆盖不受控制。

    我在.NET中做过,但不是PHP,所以我不知道这有多容易。

        3
  •  5
  •   Robert Groves    15 年前

    例如,创建一个名为local_overrides.php的文件,其中包含以下内容:

    $local_password = 'qUzaEAFK13uK2KHy';
    

    $overrides = 'local_overrides.php';
    
    if (file_exists($overrides)) {
       #include_once($overrides);
       $db_password = $local_password;
    } else {
       // perform appropriate action: set default? echo error message? log error?    
       $db_password = 'l1m1t3d!'
    }
    

    源代码管理永远不必查看本地覆盖文件。

        4
  •  3
  •   James    15 年前

    或者理想情况下,完全不用密码,使用openssh或类似工具,并为每个用户进行公钥/私钥身份验证。

        5
  •  2
  •   Andrew Coleson    15 年前

    使用预提交钩子来清空敏感字段怎么样?当然,这假设您首先可以通过网络发送文件。


    要处理更新,您可能需要强制手动合并敏感文件,或者修改本地生成过程以使用本地/私有/忽略文件中的内容覆盖敏感行。

        6
  •  1
  •   Polichism    15 年前

    之后,我将复制并更改扩展名,让版本控制系统忽略此文件。

    因此,当您在配置文件中进行更改时,只需更新它的txt版本。 这是我能想到的唯一选择,也是逻辑(在我看来)

        7
  •  1
  •   Community Erin Dees    7 年前

    我已经回答了一个类似的问题,并提供了一个完整的示例,说明如何在Visual Studio中执行此操作:
    how to ignore files in kiln/mercurial using tortoise hg "that are part of the repository"

        8
  •  0
  •   dfilkovi    15 年前

    在我的项目中,我使用一个目录来保存这些类型的文件,但它并没有上传到服务器,所以我的db配置文件就在那个目录中,它是为放置项目的服务器配置的。 如果有人更改配置文件,他将更改服务器配置文件,任何更新版本的人都将看到该文件中的更改,并且需要手动更改其本地配置。

    我看不出比这更好的方法。如果你发现不同的方法,请分享。

        9
  •  0
  •   Noufal Ibrahim    15 年前