代码之家  ›  专栏  ›  技术社区  ›  Jonathan Parker

防止数据库密码意外签入公共SVN

  •  1
  • Jonathan Parker  · 技术社区  · 17 年前

    有人知道阻止某人(我)的方法吗?意外地将包含公共数据库连接字符串的文件提交到Google代码。我需要从本地计算机上对数据库运行一些单元测试(以更新DB模式),但我担心我会忘记我已经将连接更改为指向公共DB,然后将代码检查到SVN中。

    当然,这不太可能是第一次,但可能是在5到10次之后。

    最简单的方法是什么?

    4 回复  |  直到 17 年前
        1
  •  1
  •   Peter Parker    17 年前

    我第二 埃米尔H 增加一个提案: 你应该忽略via 忽略 -属性正确的配置文件

    例如,配置文件应位于:

    ./config/app.conf
    

    然后您应该忽略此文件进行Subversion:

    svn propset svn:ignore "app.conf" ./conf
    

    并将app.conf复制到app.conf.example,并将此文件添加到Subversion: cp app.conf app.conf.示例 svn添加app.conf.example

    现在Subversion将永远不会尝试将app.conf文件添加到您的存储库中(而且您的同事也不能意外地提交此文件!)

        2
  •  2
  •   Emil H    17 年前

    我通常创建一个名为myapp.config.default的默认配置文件,它不包含任何密码,并将该文件添加到存储库中,而不是添加到我的实际配置文件中。

        3
  •  2
  •   Mark Brittingham    17 年前

    这是我用于Web应用程序的解决方案。首先,我不想忽略svn中的web.config文件,因为它包含可以和将要更改的重要信息。因此,我将连接字符串从web.config中拉出来,将它放在一个名为webcs.config的文件中,然后使用svn.ignore指令来避免只签入那个文件。

    为此,请在web.config中放置以下“include”行:

     <connectionStrings configSource="WebCS.config"/>
    

    然后,创建webcs.config文件并输入以下内容:

    <connectionStrings>
    <add name="ConnString" 
             connectionString="Data Source=YourServer;Initial Catalog=YourDB;etc..
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
    

    这也使得更新网站变得容易:只需上传webcs.config文件以外的所有文件(我有一个批处理文件在“发布”网站后删除该文件)。然后,您将得到保证,所有web.config文件设置都与您一起使用,而不会干扰您的连接字符串,并且您将得到保证,您的存储库不会丢失重要的文件,并且不会公开您的连接字符串。

        4
  •  1
  •   basszero    17 年前

    允许您的配置数据被本地配置文件(主目录中的某个文件)覆盖。在应用程序逻辑中包含用于定位配置文件的位置的继承关系。