5

我的团队正在切换到 Mercurial。我们的项目都有一个配置文件(web.config 或 app.config,还有一些 bat 文件——我们是一家 C# 商店)。这些文件需要是存储库的一部分。当开发人员克隆存储库时,需要对其配置文件进行本地更改以使其正常工作。例如,项目的配置文件可能需要到开发人员数据库的连接字符串,或其他特定于环境的信息。我们不希望这些更改最终出现在存储库中。我们会不时地对这些确实需要进入存储库并分发给团队并最终分发给客户的配置进行更改。

我们配置或使用 Mercurial 以使这些文件不会被意外提交的最简单方法是什么?我想被迫明确提交此类文件,但来自 repo 的合并会自动在更新中下降。

这一定是其他人面临的问题,但作为 Mercurial 新手,我们都对最佳解决方案不知所措。

编辑:

可以在以下位置找到可能共享一些常见解决方案但与此问题不同的类似问题:Conditional Mercurial Ignore File

我将其包括在内,以防其他问题可能提供您正在寻找的答案。

4

2 回答 2

6

处理此问题的典型方法是将配置文件的模板存储在您的存储库中,并将实际的配置文件添加到 Mercurial 中的忽略列表中。

这样,您可以随时使用每个配置文件的原始、未修改的副本,即使对于从头开始克隆的新开发人员也是如此,但是为了使配置文件可用,您需要将它的本地副本复制到实际配置文件名,并修改文件。您还可以使用比较/合并程序,例如 Beyond Compare,将模板文件的新版本与旧版本的本地副本进行比较,查看发生了什么变化,并添加缺失的位。

如果您需要硬阻止提交实际的配置文件,则需要执行此操作的 pre-commit 或 pre-push 钩子。

于 2011-01-12T23:36:25.687 回答
1

在您的.hg/hgrc文件中执行以下操作:

[defaults]
commit = -X Projectname/web.config

(假设“ProjectName”是项目子目录)


编辑:

此外,如果您使用的是 Tortoise HG - 也可以添加:

[tortoisehg]
ciexclude = Projectname/Web.config,Projectname/App_Data/DBFile.mdf

顺便注意文件夹路径中的正斜杠!即使在 Windows 上!)

于 2013-12-16T14:15:24.880 回答