忽略Mercurial中文件的未来更改,但仍会跟踪它

时间:2011-07-07 17:54:52

标签: mercurial

  

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

我在Mercurial存储库中有一个文件,我希望它可以作为示例配置文件,但在我开发它的时候,我想对它进行特定的更改,我不想跟踪它,比如数据库密码。我尝试将该文件添加到.hgignore,但Mercurial仍然注意到修改。

我是否可以在Mercurial存储库中“跟踪”某个文件,但忽略该文件的未来本地更改而不将其从存储库本身中删除?

3 个答案:

答案 0 :(得分:5)

我不认为这种能力存在(虽然喜欢看别人的答案:)但是。我使用的替代方法是将文件检查到名为“config.template”的源代码控制中(作为示例)。该应用程序实际上使用名为“config”的文件,然后我通过复制模板文件创建该文件。然后确保.hgignore文件中不包含“config”文件,这样您就不会在某个时间意外地检查。

答案 1 :(得分:3)

不,Mercurial没有内置支持来自动处理这个问题,而不是你问的方式。

文件有两种状态:

  • 履带
  • 未跟踪

.hgignore文件唯一能做的就是帮助查看所有未跟踪文件的所有命令,并将它们添加到存储库中(即添加它们以进行跟踪。)一旦跟踪文件,它将始终被跟踪。

其余部分留给手动处理,这意味着如果您跟踪文件但不想提交更改,则必须取消选中,忽略或以其他方式确保提交命令不提交它,每次你提交。

首选处理此方法的方法是提交模板。然后,如果可能,在构建过程中添加一个步骤,检查实际配置文件是否存在,如果不存在,则从模板中复制。您确保的实际配置文件不会被跟踪,并会添加到.hgignore文件中。

这样,您可以更改实际的配置文件,但除非您专门将其添加到存储库,否则不会自动跟踪它,并且在提交期间无需执行任何操作。

答案 2 :(得分:1)

您可以在以后的提交中排除该文件。

如果您从命令行使用hg,这可能会很麻烦,因为您必须手动指定要提交的文件,但如果您使用类似tortoisehg的内容,则可以在提交中取消选中配置文件表单,它的更改不会进入变更集。