Mercurial阻止文件更改

时间:2011-10-20 14:10:00

标签: version-control mercurial commit hgignore

  

可能重复:
  Mercurial: How to ignore changes to a tracked file

我在一个使用Mercurial的团队工作,我们有一个已签入并且稳定的配置文件。

由于这是一个配置文件,一些团队成员需要对其进行更改才能让软件在他们的计算机上运行,​​但我希望防止这些更改在签入时进入存储库。

我该怎么做?

我希望默认配置文件位于存储库中,用户提交的更改将在提交时被忽略。

5 个答案:

答案 0 :(得分:3)

一般模式是从存储库中删除config文件并将其添加到.hgignore,而是提供用户必须复制到config.example的{​​{1}}文件并自定义。如果要保持项目设置尽可能简单,可以通过构建脚本完成此复制。

另见kostja发布的链接。

答案 1 :(得分:2)

您可能需要查看类似的问题(为git和svn提供类似的问题):Git - Committing Machine Specific Configuration FilesHow to version control config files pragmatically?

请注意,他们没有直接回答您的问题,但提供了一些绕过问题的最佳做法。

在当前项目中,我们决定支持在版本控制下使用模板(如template.properties)并将其修改为本地使用,如(local.properties)并忽略修改后的文件。这是更强大的方法。

在另一个项目中,我们采用了不同的方法,每个开发人员都有一个单独的文件( {activeDirectoryLogin}.properties})。根据当前用户自动选择适当的文件。这种方法有其缺点,我们可以忽略,因为我们在项目期间有一个由5个共同开发的开发人员组成的相当小而稳定的团队。好处是,开发人员了解其他人的偏好,可以快速重现任何可能的问题。此外,可以在不同系统上轻松评估设置。

答案 2 :(得分:0)

你做不到。您不应该跟踪需要在本地副本中更改的文件,而是跟踪模板(或修改您的配置系统以允许本地配置文件覆盖默认模板)。

答案 3 :(得分:0)

您需要添加一个钩子来执行此操作:

http://www.selenic.com/mercurial/hgrc.5.html#hooks

钩子可以是服务器端(这不会阻止提交,但会阻止将更改推送到服务器端存储库)或客户端(这可能会阻止提交,但钩子必须由每个开发人员在本地安装。)

答案 4 :(得分:0)

您可以将MQ扩展与您的reqs的小附加组件一起使用 - 特定于用户的更改存储在mq-patches中,而不是存储在permanent-repo的变更集中。即用户可以更改基本配置,但是他的任务是在MQ中更新补丁,而不是将更改作为普通变更集提交。