使用.gitignore进行App.config或Web.config中的连接字符串的最佳做法

时间:2013-10-29 10:30:16

标签: visual-studio-2010 git connection-string gitignore

在使用更大的团队时,我尝试了几种*.gitignore方法来管理连接字符串。

gitignore.gitignore个文件的官方存储库中,我已下载VisualStudio.gitignore并将其作为所有项目的起点。

可以通过访问http://gitignore.io/,输入VisualStudio,然后下载文件来完成相同的过程。

enter image description here

我目前使用的方法是利用SectionInformation.ConfigSource Property

<connectionStrings configSource="myConnectionStrings.config" />

然后将 myConnectionStrings.config 添加到.gitignore,这很好,因为它不会添加整个*.config

此外,您可以在另一个项目( MyProject.Data 图层)中使用相同的 myConnectionStrings.config

<configuration>
  <connectionStrings configSource="myConnectionStrings.config"/>
</configuration>

请记住设置始终复制

enter image description here

我也尝试使用filters 中描述的Git - Ignoring a specific modification to a config file,但我发现这是一种矫枉过正的行为。

我想知道是否有其他方法被视为最佳做法?

2 个答案:

答案 0 :(得分:1)

我不能代表你的设置,但这就是我解决这个问题的方法。

首先,我团队中的所有人都使用集成安全性设置为true的本地数据库。这意味着当我们从源代码控制中检出文件时,最好使用本地设置。所以我的Web配置文件看起来像这样

<add name="appConnString"
   connectionString="Data Source=(local);Initial Catalog=MyDatabaseName;Integrated Security=True;"
   providerName="System.Data.SqlClient" />

关于部署到不同环境,第一个选项是使用转换。如果你不知道那是什么,read here

由于我们使用Octopus Deploy作为我们的部署工具,因此我们的转换文件具有“web.release.config”的连接字符串,如下所示

<add name="appConnString"
   connectionString="{{appConnString}}"
   xdt:Transform="Update" 
   xdt:Locator="Match(name)" />

当Octopus运行时,它会抓取web.config并使用发布文件覆盖相关部分。然后,根据我部署到的环境/机器/分支,它将{{appConnString}}替换为为该部署设置的配置。

我确信Visual Studio的过程几乎相同。

如果你不喜欢变形过程。您还可以使用parameters.xml文件。 msdepoy使用此文件替换build.config中的值。您可以阅读更多相关信息here

另一个考虑因素是,如果您使用Azure托管,则可以在各种部署插槽上设置某些配置替换,直至生产。

这些只是我使用过的一些技术,并且看到它们被非常有效地使用。有些人需要习惯并且设置很多挫折,但是从长远来看,拥有适当的部署系统将会付出代价。

答案 1 :(得分:-12)

也许有点擅自,我认为不需要策略来将shell globs添加到文件中。在阅读这个问题之前我从来没有听说过“connectionStrings”,但是从我可以收集的内容来看,他们持有各种后端的URI /凭证。

后端多久更改一次?更好的是,配置文件的路径经常变化多少? 可能不足以保证政策。您唯一需要的是一个约定,用于命名包含这些connectionStrings的配置文件,以便使用自动化工具轻松识别它们。

因此,请使用您的工具或编写脚本,并将<connectionStrings configSource="foobarService.config" />的foobarService.config附加到所有后端的.gitignore文件中。

1。找到文件。

$ find -name cs.xml

./more/configs/here/cs.xml
./cs.xml
./some/sub/folder/cs.xml

2。获取配置文件名

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config'

getImagesService.config
users.config
ldap.config
foobar2k.config
ratpoison.config
moo.config
foo.config
trololol.config
moreconfigz.config
myConnectionStrings.config
data.config
base.config
filebackend.config
offsitewhatever.config

3。忽略他们

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config' >> .gitignore

4。更新你的简历

  • 2014年3月 - connectionString政策的首席设计师

我很困惑任何人都会询问有关管理.gitignore文件的建议。这可能表明我看不到大局。您是否愿意用一些背景信息更新您的问题?我很好奇为什么这是一个有意义的问题,因为我很难理解是否需要建立最佳实践来将字符串附加到文件中。 < / p>