Tao*_*Tao 32 .net git configuration app-config web-config
我们在不同的办公室有多个开发团队,他们需要在我们的项目web.config和app.config文件中进行大量配置设置的不同值.
我们希望使用一组合理的默认值来检查这些配置文件,这样通过检查trunk/master分支,您可以正常工作而无需挖掘配置文件.
从历史上看,我们已经使用了Subversion,特别是TortoiseSVN,这提供了一种管理本地更改的简便方法:我们只是将这些文件添加到TortoiseSVN的自动更改ignore-on-commit列表中.这可以防止意外签入这些文件,因为您需要专门选择它们以将其包含在签入中(并且您可以确保检查重大更改,而不是本地配置噪声).这种方法的主要缺点是配置文件总是看起来"已更改",因此无法一目了然地知道您是否有任何本地更改.
我们正在寻求转向Git,我正在努力找出最好的方法.
首先,其他StackOverflow答案中已有的内容:
选项1:检入xxx.sample文件和.gitignore实际配置文件:建议这样做,例如,在此答案中.我看到的主要问题是,在两个不同的点上很容易忘记对配置文件的更改:提交者很容易错过他们需要添加到.sample文件中的更改,而消费者(尤其是持续集成服务器)很容易错过他们需要将.sample文件中的更改合并到本地配置文件中.所以基本上,这似乎不是一个很好的解决方案.
选项2:拥有一个已签入的xxx.defaults文件和一个.gitignored xxx.local配置文件,该文件会覆盖它定义的任何设置:例如,这里提供了这个.问题是我们正在使用标准的.Net配置提供程序 - 当Mirosoft已经完成所有工作时,我真的不希望我们实现一个全新的设置加载框架.有没有人知道一种方法来获取app.config和web.config文件来引用可选的本地覆盖文件?
选项3:让开发人员保留本地分支机构,然后让他们总是检查樱桃选择或重新分支到主服务器,以便始终绕过/避免其本地分支中的不需要的提交:这是作为一个可能的工作流程在这里提供,而我在变更跟踪(所有签入的内容)方面欣赏它的清洁度,它在每次签入时都会引入大量所需的开销; 这是一个很大的痛苦!
方案4:有配置文件签入,但他们打上--assume-unchanged:这是献作为一个可能的选项,在这里 ; 据我所知,它与ignore-on-commitTortoiseSVN中的更改列表在精神上非常相似,除非您在提交过程中无法看到这些"隐藏"已更改的文件; 例如,TortoiseGit会显示带有"已更改"图标覆盖的文件,但在提交对话框中,文件根本不会显示.这看起来有点可怕,再次很容易忘记检查更改.
鉴于这些选项,我发现的所有选项,我真的希望有一种方法可以选择"包含"本地配置文件到/登录的app.config/web.config文件中,然后选择2 ; 有没有人知道这样做的方法,或者我缺少的其他选择?(我很想去考虑一个自定义的Xml合并预构建步骤......)
我之前应该提到,我们仍然在VS2008上,所以配置转换不可用.
更新:(删除,是完全错误的)
更新2:我删除了我以前的更新和答案,它是愚蠢的/不起作用.我没有意识到在"我们的"合并之后,另一个方向的下一次合并会带回这些文件的"原始"版本(覆盖本地分支的变化); 如果您有兴趣,请参阅编辑历史记录.这个问题和以往一样开放.
pms*_*969 12
我想建议你看看ConfigGen.我们在所有项目中都使用它,它为所有开发人员以及我们所有的环境创造了奇迹.它基本上运行一个表示机器名称和输出配置文件的电子表格,然后标记模板App.Config或Web.Config,将电子表格中的值替换为它.为项目添加一个简单的预构建步骤以运行configgen,在构建开始之前,您有一个为您的计算机定制的配置文件.它还支持默认设置.
看看网站并自己动手,但我绝对可以保证.
编辑:值得注意的是,您可以忽略所有Web.config和App.config文件(就.git而言).但您确实需要将模板和电子表格添加到仓库中.此外,我确信有一个更新的方式可能包括电子表格的xml替换,它有自己的编辑器,使其显然更适合DVCS.
编辑2:还可以看看Daniel的帖子:https://stackoverflow.com/a/8082937/186184.他给出了一个非常明确的模板和电子表格示例,以及如何使其在您的解决方案中运行.
我会看看Dan的“在部署环境之间管理复杂的 Web.Config 文件”的答案,以寻找潜在的解决方案。我使用 Mercurial 并使用相同的过程来签入通用 web.config 文件,并使用 Web 转换来更改指向我的部署特定内容的位置。configSource
使用此路由的优点是它完全内置于框架中,不需要额外的代码,并且适用于 Web 部署。
在 web.config 中检查:
<?xml version="1.0"?>
<configuration>
<!-- snip -->
<connectionStrings configSource="config/connectionStrings.config" />
</configuration>
Run Code Online (Sandbox Code Playgroud)
在 web.debug.config 中检查:
<?xml version="1.0"?>
<configuration>
<connectionStrings
configSource="config/dev.connectionStrings.config"
xdt:Transform="Replace(configSource)" />
</configuration>
Run Code Online (Sandbox Code Playgroud)
我已使用config/connectionStrings.config默认值签入,但开发服务器config/dev.connectionStrings.config未签入,并且在新部署中未替换。
| 归档时间: |
|
| 查看次数: |
9920 次 |
| 最近记录: |