我的团队正在转向Mercurial。我们的项目都有一个配置文件(web.config或app.config,以及一些bat文件 - 我们是一个C#商店)。这些文件必须是存储库的一部分。当开发人员克隆存储库时,需要对其配置文件进行本地更改才能使其正常工作。例如,项目的配置文件可能需要连接字符串到开发人员的数据库,或其他特定于环境的信息。我们不希望这些更改最终存储在存储库中。我们不时会对需要进入存储库并分发给团队并最终分发给客户的这些配置进行更改。
我们配置或使用Mercurial的最简单方法是什么,以便这些文件不会被意外提交?我希望被迫明确提交这些文件,但是来自repo的合并将自动降级为更新。
这必须是其他人面临的问题,但作为Mercurial的新手,我们都无法获得最佳解决方案。
编辑:
类似的问题可能会分享一些常见的解决方案,但与此问题不同,可以在以下网址找到:Conditional Mercurial Ignore File
如果其他问题可能提供您正在寻找的答案,我会将此包括在内。
答案 0 :(得分:6)
处理此问题的典型方法是在存储库中存储配置文件的模板,并将实际配置文件添加到Mercurial中的忽略列表中。
这样,您可以随时获得每个配置文件的原始未修改副本,即使对于从头开始克隆的新开发人员也是如此,但为了使配置文件可用,您需要制作它的本地副本到实际配置文件名,并修改文件。您还可以使用比较/合并程序(例如Beyond Compare)将新版本的模板文件与旧版本的本地副本进行比较,以查看更改的内容,并添加缺失的位。
如果您需要硬提防实际配置文件,则需要预先提交或预推钩来执行此操作。
答案 1 :(得分:1)
在.hg/hgrc
文件中执行此操作:
[defaults]
commit = -X Projectname/web.config
(假设“ProjectName”是项目子目录)
修改强>
另外,如果您使用的是Tortoise HG,请同时添加:
[tortoisehg]
ciexclude = Projectname/Web.config,Projectname/App_Data/DBFile.mdf
(顺便说一句介意文件夹路径中的FORWARD斜杠!即使在Windows上!)