2012-09-03 39 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()" 

安排(發現去除文件同時抄送左在你的工作副本後面)。