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

Mat*_*cic 30 git connection-string visual-studio-2010 gitignore

*.gitignore在为一个更大的团队工作时,我尝试了几种管理连接字符串的方法.

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

访问http://gitignore.io/,键入VisualStudio,然后下载文件即可完成相同的过程.

在此输入图像描述

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

<connectionStrings configSource="myConnectionStrings.config" />
Run Code Online (Sandbox Code Playgroud)

然后加入myConnectionStrings.config.gitignore,因为它不添加整个这是很好的*.config.

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

<configuration>
  <connectionStrings configSource="myConnectionStrings.config"/>
</configuration>
Run Code Online (Sandbox Code Playgroud)

只记得永远设置复制!

在此输入图像描述

此外,我尝试使用Git中描述的过滤器 - 忽略对配置文件的特定修改,但我发现这是一个过度杀伤力.

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

Яро*_*лин -12

也许有点自以为是,我认为不需要制定向文件添加 shell 全局变量的策略。在阅读这个问题之前,我从未听说过“connectionStrings”,但从我收集到的信息来看,它们保存着各种后端的 URI/凭据。

后端多久更改一次?更好的是,配置文件的路径多久更改一次?可能频率不够高,不足以保证制定保单。您唯一需要的是命名包含这些连接字符串的配置文件的约定,以便使用自动化工具轻松识别它们。

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

1. 找到文件。

$ find -name cs.xml

./more/configs/here/cs.xml
./cs.xml
./some/sub/folder/cs.xml
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

3.忽略他们

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config' >> .gitignore
Run Code Online (Sandbox Code Playgroud)

4.更新你的简历

  • 2014 年 3 月——connectionString 策略的首席设计师

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

  • 我很高兴您通过阅读问题学到了一些东西。我没有问如何管理 .gitignore 文件,而是问如何管理连接字符串,特别是在使用 VisualStudio 的情况下。如果您不明白这个问题,请不要用讽刺/讽刺的答案来恶作剧。 (6认同)
  • 最好只规定必须始终调用带有凭据的文件,以及“FileThatContainsSomeSecret.credentials”等,并将“*.credentials”添加到“.gitignore”中。问题永远解决了。我拥有**终极凭证管理元策略创建者**的崇高头衔。 (2认同)