2014-10-29 177 views
0

我已經建立了類似下面的文件夾:hgignore水珠作品不同hgstatus水珠

  • 項目/ latest_kml/file.kml
  • 項目/ .hgignore
  • 項目/ .hg/.. 。

我.hgignore文件是這樣的:

syntax: glob 
 
*.kml 
 
*.kmz 
 
**nohup.out 
 
log/**

後有點谷歌搜索,我發現,我應該使用「**。KML」 什麼我不理解就是爲什麼* .KML被忽略.KML文件。如果我將一個新的.kml文件添加到latest_kml文件夾,那麼當我運行addremove或以hg狀態顯示時,它不會被添加。

如果我刪除* .kml行然後hg狀態顯示新的.kml文件。

混亂的部分:如果我刪除從.hgignore和運行汞柱狀態的「* .KML」線「水珠:** KML」它表明,加入到項目/ latest_kml /新的KML文件。如果我改用hg status'glob:*。kml',它什麼也不顯示。

這種行爲的原因是什麼?

回答

2

hg help patterns狀態清楚地

水珠在當前目錄爲根;諸如「* .c」之類的glob只會匹配以「.c」結尾的 當前目錄中的文件。

支持的水珠語法擴展 「**」,來匹配路徑分隔符

任何字符串...

glob:*.c  any name ending in ".c" in the current directory 
*.c   any name ending in ".c" in the current directory 
**.c   any name ending in ".c" in any subdirectory of the 
       current directory including itself. 
+0

沒錯。所以這並不能解釋爲什麼hgignore文件中的* .kml忽略子目錄中的.kml文件。它不應該表現得如此。 – Smills 2014-10-30 05:20:33

+1

@Smills - 只是因爲(* only * !!!)'.hgignore'中的模式**沒有根**,與其他所有模式(在命令行中使用)相反 – 2014-10-30 17:50:08

+0

啊,我明白了。謝謝,我沒有看到.hgignore沒有被提及。 – Smills 2014-10-31 02:19:23