有没有人知道一种技术可以阻止某人(我!)意外地将带有公共数据库连接字符串的文件提交给Google Code。我需要从我的本地机器上对数据库运行一些单元测试(更新数据库模式)但是我担心我会忘记我已经将连接更改为指向公共数据库然后检查代码SVN。
当然,它不太可能在第一次发生,但可能在5或10次后发生。
处理此事的最简单方法是什么?
答案 0 :(得分:2)
我通常创建一个名为myapp.config.default的默认配置文件,它不包含任何密码,并将该文件添加到存储库而不是我的实际配置文件。
答案 1 :(得分:2)
这是我用于网络应用的解决方案。首先,我不想忽略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文件设置都与您一起使用而不会弄乱您的连接字符串并且您将确信您的存储库不会丢失重要文件并且您不会公开您的连接字符串
答案 2 :(得分:1)
允许您的配置数据被本地配置文件(主目录中的某个文件)覆盖。在应用程序逻辑中包括用于定位配置文件的位置的层次结构。
答案 3 :(得分:1)
我在第二个 Emil H 提案中添加了一项: 你应该忽略 svn:ignore -property正确的配置文件
例如,您的配置文件应位于:
./config/app.conf
然后你应该忽略这个文件进行颠覆:
svn propset svn:ignore "app.conf" ./conf
并将app.conf复制到app.conf.example并将此文件添加到subversion: cp app.conf app.conf.example svn add app.conf.example
现在Subversion永远不会尝试将您的app.conf文件添加到您的存储库中(并且您的同事也不能意外地提交此文件!)