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

时间:2010-07-23 07:08:58

标签: mercurial

我忘记将正确的.hgignore放入我的项目中,现在我的存储库中遇到了许多无用的文件。由于这些文件已经在源代码管理下.hgignore不会选择它们。

hg是否有办法忘记.hgignore匹配的所有文件?

5 个答案:

答案 0 :(得分:66)

filesets非常棒(需要1.9):

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

答案 1 :(得分:2)

您需要删除该文件才能将其忽略。

hg remove -Af myfile

(在工作区留下副本时删除修订版:或hg forget

但是你的Mercurial存储库不会“忘记”以前版本中的那些文件。

  

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

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

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


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

  • 删除它们(从文件系统中删除,不使用hg命令,但使用操作系统'rm'命令)
  • hg addremove (警告,它会添加当前未提交的文件,但它会hg remove您刚刚提交的所有其他文件)

有关详情,请参阅How to forget all removed files with Mercurial

答案 2 :(得分:2)

我认为hg不能开箱即用。

但是自己动手很容易。 hgignore条目是regexp或glob,所以你可以浏览条目并找到匹配的文件/ dirs并对它们执行“hg remove”。

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

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

答案 3 :(得分:0)

这就是我为.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操作系统。

答案 4 :(得分:0)

Idan K的解决方案很棒。我将别名添加到我的全局mercurial.ini中,因为我不记得该命令了。

[alias]
forgetignored = forget "set:hgignore() and not ignored()"