你如何处理源代码控制中的配置文件?

假设您有一个典型的网络应用程序和一个文件配置。无论如何。每个参与该项目的开发人员都将有一个用于他们的开发箱的版本,将有一个开发、生产和阶段版本。你如何在源代码管理中处理这个问题?根本不签入这个文件,用不同的名字来检查它或者干脆做些花哨的事情?

请先 登录 后评论

9 个回答

Grant

不要版本那个文件。版本模板或其他东西。

请先 登录 后评论
Tom

@Grant 是对的。

我所在的团队有近 100 名其他开发人员,我们的配置文件未签入源代码管理。我们在每次签出时都会提取存储库中的文件版本,但它们不会更改。

对我们来说效果很好。

请先 登录 后评论
Ryan

我们只检查生产配置文件。开发人员有责任在将文件从源代码安全中提取出来以进行暂存或开发时更改文件。这在过去已经让我们感到厌烦,所以我不建议这样做。

请先 登录 后评论
Brandon Wood

我的团队为每个环境(web.config.dev、web.config.test、web.config.prod)保留了不同版本的配置文件。我们的部署脚本复制正确的版本,将其重命名为 web.config。这样,我们对每个环境的配置文件都有完整的版本控制,可以轻松地执行差异等。

请先 登录 后评论
EndangeredMassa

我对它进行版本控制,但从不将其推送到其他服务器。如果生产服务器需要更改,我会直接对配置文件进行更改。

它可能不漂亮,但效果很好。

请先 登录 后评论
Greg Hurlman

app/web.config 的签入、普通版本应该足够通用,可以在所有开发人员机器上运行,并保持最新的任何新设置更改等。如果您需要一组特定的开发/测试/生产设置的设置,如 GateKiller 所说,使用这些设置检查单独的文件,并使用某种命名约定,尽管我通常使用“web.prod.config”,以免更改文件扩展名。< /p>

请先 登录 后评论
jeremcc

很长一段时间以来,我所做的正是 bcwood 所做的。我将 web.dev.config、web.test.config、web.prod.config 等的副本保留在源代码控制下,然后我的构建/部署系统在部署到各种环境时自动重命名它们。您会在文件之间获得一定数量的冗余(尤其是其中包含所有 asp.net 内容),但通常它运行得非常好。您还必须确保团队中的每个人都记得在进行更改时更新所有文件。

顺便说一下,我喜欢在结尾保留“.config”作为扩展名,这样文件关联就不会被破坏。

就配置文件的本地开发者版本而言,我总是尽力鼓励人们尽可能使用相同的本地设置,这样就不需要拥有自己的版本。它并不总是适用于每个人,在这种情况下,人们通常只是根据需要在本地替换它,然后从那里开始。不会太痛什么的。

请先 登录 后评论
GateKiller

目前我有一个添加了扩展名的“模板”配置文件,例如:

web.config.rename

但是,如果关键更改发生了变化,我会发现此方法存在问题。

请先 登录 后评论
yukondude

我过去所做的是将默认配置文件签入源代码管理。然后,每个开发人员都有自己的覆盖配置文件,该文件被排除在源代码管理之外。应用首先加载默认文件,然后如果存在覆盖文件,则加载该文件并使用覆盖文件中的任何设置优先于默认文件。

一般来说,覆盖文件越小越好,但对于环境非常不标准的开发人员来说,它总是可以包含更多设置。

请先 登录 后评论