1

有谁知道防止某人(我!)不小心将带有公共数据库连接字符串的文件提交到 Google 代码的技术。我需要从本地机器上对数据库运行一些单元测试(以更新数据库模式),但我担心我会忘记我已将连接更改为指向公共数据库,然后将代码签入SVN。

当然,这不太可能发生在第一次,但可能在 5 或 10 次之后发生。

处理这个最简单的方法是什么?

4

4 回答 4

2

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

于 2009-03-25T11:49:21.493 回答
2

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

为此,请在 Web.Config 中放置以下“包含”行:

 <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 文件设置都会随身携带,而不会弄乱您的连接字符串,并且您可以放心,您的存储库没有丢失重要文件,并且您不会暴露您的连接字符串.

于 2009-03-25T12:08:18.407 回答
1

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

于 2009-03-25T11:53:41.467 回答
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 文件添加到您的存储库(而且您的同事也不会意外提交此文件!)

于 2009-03-25T12:00:07.083 回答