Mercurial可以使用.hgignore来忘记文件吗?

我忘记把正确的.hgignore放到我的项目中,现在我的仓库中正面临着许多无用的文件。 由于这些文件已经在源代码控制之下.hgignore不会select它。

有没有办法让hg忘记所有.hgignore匹配的文件?

文件集 awesomeness(需要1.9):

hg forget "set:hgignore() and not ignored()" 

您需要删除该文件以使其被忽略。

 hg remove -Af myfile 

(从版本中删除,而在你的工作空间上留下一个副本:或hg forget

但是您的Mercurial存储库不会“忘记”以前版本中的相同文件。

删除文件不会影响其历史logging。
理解删除文件只有两个效果是很重要的。

  • 它从工作目录中删除当前版本的文件。
  • 它会阻止Mercurial跟踪下次提交时的文件更改。

删除文件不会以任何方式改变文件的历史logging。


另一种方式,当你有很多额外的文件,你现在需要忽略的是:

  • 删除它们(从文件系统,而不是一个HG命令,但与一个操作系统的RM命令)
  • hg addremove (警告,它会添加当前没有提交的文件,但它会hg remove所有其他文件,你刚刚rm'ed)

有关更多信息,请参阅如何使用Mercurial忘记所有移除的文件 。

我不认为hg可以做到这一点。

但是推出自己的产品非常简单。 hgignore条目是正则expression式或glob,所以你可以直接浏览条目并find匹配的文件/目录,并对它们进行“hg remove”操作。

对于hgignoreparsing/匹配,如果你使用python,你可以调用hg的ignore.py中的函数。

也许有人可以为此写一个扩展名。

这是我为.hgignore中提到的每个目录所做的

for /f "delims=" %i in ('dir bin /ad/s/b') do hg forget %i/

和文件

for /f "delims=" %i in ('dir *.user /s/b') do hg forget %i

免责声明:
我不知道它是否可以在非Windows操作系统上运行。