Mercurial扩展自动生成.hgignore文件?

时间:2011-04-13 12:58:59

标签: mercurial

我一直在想,拥有像“hg ignore”这样的命令会很自然地将所有未跟踪的文件添加到.hgignore文件中。

手动编辑.hgignore文件非常强大,但是当我经常创建新的存储库时,能够仅添加我想要的文件然后执行hg忽略以自动让Mercurial忽略任何其他文件将会很好。

有没有人知道这样做的任何扩展?

1 个答案:

答案 0 :(得分:12)

一旦添加了所需的所有文件,请尝试此操作:

hg stat --unknown --no-status >> .hgignore

您可以创建一个命令,使用alias自动生成.hgignore。在类Unix系统上,将以下行添加到.hg/hgrc(或Mercurial的other configuration files之一)中:

[alias]
ignore = !echo 'syntax: glob' >> $(hg root)/.hgignore && \
          $HG status --unknown --no-status >> $(hg root)/.hgignore

这将为您提供一个hg ignore命令,该命令将使用所有当前未知的文件填充.hgignore文件,从而将它们变为忽略。

在Windows上,别名的语法是:

[alias]
ignore = !echo syntax: glob > .hgignore && "%HG%" status --unknown --no-status -X .hgignore >> .hgignore

在Windows上,必须在存储库的根目录中运行它,否则将在当前目录中创建.hgignore文件,这可能不是您想要的。

别名中的!语法是Mercurial 1.7中的新增功能。在早期版本中,您可以添加

[alias]
ignore = status --unknown --no-status

然后自己将此命令的输出重定向到.hgignore文件:

 hg ignore >> .hgignore

如果需要,您还需要注意添加syntax: glob行(默认语法是正则表达式)。