Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将Mercurial配置为不提交特定的配置文件?_Mercurial_Mercurial Extension - Fatal编程技术网

如何将Mercurial配置为不提交特定的配置文件?

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

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

对于我们来说,配置或使用Mercurial使这些文件不会意外提交的最简单方法是什么?我想被迫对这些文件进行显式提交,但来自repo的合并将自动在更新中停止

这肯定是别人遇到过的问题,但作为善变的新手,我们都无法找到最佳解决方案

编辑:

类似的问题可能有一些共同的解决方案,但与此问题不同,请访问:


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

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

通过这种方式,您可以随时获得每个配置文件的原始、未修改的副本,即使对于从头开始克隆的新开发人员也是如此,但为了使配置文件可用,您需要将其制作为实际配置文件名的本地副本,并修改该文件。您还可以使用比较/合并程序(如Beyond compare)将模板文件的新版本与旧版本的本地副本进行比较,查看更改的内容,并添加缺少的位


如果您需要硬阻止提交实际配置文件,则需要一个预提交或预推钩子来执行此操作。

文件中。hg/hgrc
执行以下操作:

[defaults]
commit = -X Projectname/web.config
(假设“ProjectName”是项目子目录)


编辑:

此外,如果您使用的是Ortoise HG,请添加以下内容:

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

顺便说一句注意文件夹路径中的正斜杠!即使在Windows上也是如此!)

如果你读了这两个问题,它们可能会重复。它们是不同的问题,可能有一些共同的解决办法。我将继续编辑我的问题,并将其作为相关问题指向另一个问题。重复[Mercurial Workflow question-如何处理配置文件]()。不过,解决方案看起来很不一样。我喜欢你的想法并投了赞成票。我们讨论了这个问题,但提出了不同的解决方案。谢谢你的回答。它给了我们另一个考虑的选项。你的意思是你将有一个非编译项目?