2012-09-03 41 views
12

我经常担心我的hgignore文件可能会排除重要文件。例如,我只注意到我排除了所有的.exe文件,这些文件排除了一些应该与源代码保持一致的小型可执行工具。将它们包括在内只是一个简单的改变,但让我担心这些规则可能会产生意想不到的后果。如何检查哪些文件因.hgignore而被忽略?

有没有办法查看由于.hgignore文件而未被跟踪的所有文件的列表?只是这样我才能定期查看清单以检查我是否满意。

回答

21

命令hg status -i正好如此。

+0

打败了我,因为我太忙于输入其他字符来满足最低字符要求:) _“身体必须是30个字符,你输入28”_ –

+0

@BurhanKhalid:我也有过这个问题...教训: “如果有疑问,请详细说明”;) – Jon

+0

总是使用--long选项给出答案。更好的教学。 :) –

5

是的,这是可能的。 如果您使用的是像TortoiseHg这样的smth,您可以选择您想查看的文件。

下面是一个示例

enter image description here

12

@乔恩打我用正确的答案冲,但它没有价值,随着status -i,有:

  • hg status -m(仅修改文件)
  • hg status -a(仅限添加的文件)
  • hg status -r(只删除的文件)
  • hg status -d(仅适用于已删除的文件)
  • hg status -u(所有非跟踪文件)
  • hg status -c(文件没有变化,即。 “清洁”)
  • hg status -A(所有文件,即一切)
6

如果你想要做人工检查上的文件名,然后使用-i/--ignored标志状态:

$ hg status -i 
I ignored file.exe 

如果您想单独使用文件名称,然后使用-n/--no-status来抑制在每个文件名前面打印的I状态代码:

$ hg status -n -i 
ignored file.exe 

如果需要过程与xargs的文件,然后使用-0/--print0标志,除了:

$ hg status -n -0 | xargs -0 touch 

这将照顾正确处理空间 - 用-0,是有风险您最终会将ignored file.exe视为两个文件:ignoredfile.exe,因为shell通常在空间上分割。

以上命令将告诉您未匹配的文件匹配.hgignore。如果你想解决发现跟踪文件匹配.hgignore的相关的问题,那么你就需要使用fileset query。这看起来是这样的:

$ hg locate "set:hgignore()" 

您可以使用文件集与操作文件的所有命令,这样你就可以,例如做:

$ hg forget "set:hgignore()" 

安排(发现去除文件同时抄送左在你的工作副本后面)。