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操作系统上运行。