如何挂钩Mercurial以忽略文件各部分的差异?

时间:2013-08-01 05:00:28

标签: mercurial mercurial-hook

我有几个存储库,用于在我们的系统中为各种目的跟踪脚本。例如,几个脚本是sql脚本,可用于上拉,修改和执行。通常,这些脚本将在顶部附近包含一组参数,这些参数会被更改以查看特定的记录集。

不幸的是,一旦我使用该文件,它总是显示为hg状态的变化。我真的想要一种方法向Mercurial表明文件的某些部分对于检测变化没有意义。

我知道(并经常使用)MQ,记录和搁置扩展 - 但所有这些都要求我做一些事情来忽略这些行。我真的更喜欢让他们忽略。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

可以 可能使用预提交和提交后挂钩来执行以下操作:

  1. 在预提交时,将文件复制到一些临时已知文件,然后用原始未修改版本覆盖它
  2. 让提交继续
  3. 在提交后,将文件从其临时位置复制回来
  4. 然而,这很脆弱,并且需要遇到此问题的每个人确保他们安装了相同的挂钩。请记住,钩子不会提交到存储库,但必须手动设置。

    建议的方法是将模板文件提交到存储库中,使用不同的文件名,然后让Mercurial忽略您不断修改的整个实际文件。

    然后,当您设置一个新的工作文件夹(我认为不经常发生)时,只需从模板中复制出可用的版本就可以了。如果您通过if not exists ... copy ...步骤自动运行脚本,您甚至可以自动执行此步骤。

    但是,您不能要求Mercurial在每次提交时自动忽略文件的某些部分。

答案 1 :(得分:0)

使用MQ,您可以:

  • 将所有(本地)编辑内容移动到MQ-patch
  • 创建别名,在单个命令
  • 中“在提交和提交之前取消应用所有修补程序”