有谁知道防止某人(我!)不小心将带有公共数据库连接字符串的文件提交到 Google 代码的技术。我需要从本地机器上对数据库运行一些单元测试(以更新数据库模式),但我担心我会忘记我已将连接更改为指向公共数据库,然后将代码签入SVN。
当然,这不太可能发生在第一次,但可能在 5 或 10 次之后发生。
处理这个最简单的方法是什么?
有谁知道防止某人(我!)不小心将带有公共数据库连接字符串的文件提交到 Google 代码的技术。我需要从本地机器上对数据库运行一些单元测试(以更新数据库模式),但我担心我会忘记我已将连接更改为指向公共数据库,然后将代码签入SVN。
当然,这不太可能发生在第一次,但可能在 5 或 10 次之后发生。
处理这个最简单的方法是什么?
我通常会创建一个名为 myapp.config.default 的默认配置文件,它不包含任何密码,然后将该文件添加到存储库中,而不是我的实际配置文件。
这是我用于 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 文件设置都会随身携带,而不会弄乱您的连接字符串,并且您可以放心,您的存储库没有丢失重要文件,并且您不会暴露您的连接字符串.
允许您的配置数据被本地配置文件(主目录中的某个文件)覆盖。在应用程序逻辑中包含用于定位配置文件的位置层次结构。
我在第二个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 文件添加到您的存储库(而且您的同事也不会意外提交此文件!)