Игнорировать файлы в Mercurial, используя синтаксис Glob

Я использую Mercurial, и у меня есть следующая структура:

files
   test
       demo.jpg
       video.flv
       video.doc

   sport
       demo2.jpg
       picture.jpg
       text.txt
demo3.jpg
demofile3.doc

Я хочу сделать фильтр glob, который игнорирует только все файлы "jpg" во всех каталогах, которые являются дочерними элементами каталога "файлы"

Я пробовал файлы /*. jpg, но он не работает.

Любые советы будут оценены.

Ответ 1

Решение Regexp


Это работает для меня..

syntax: regexp
files/.*/.*jpg


Ваше собственное решение больше похоже на глобус. Хитрость заключается в использовании синтаксиса ** для подкаталогов. Видеть это...

Решение Glob


Этот глобус тоже работает для меня.

**/files/**/*.jpg


Комментарии

Лично я всегда шел с синтаксисом glob для этой проблемы. Когда вы знаете о синтаксисе **, проще, чем регулярное выражение, следовать тому, что пытается сделать шаблон.

Ответ 2

Если вы с удовольствием проигнорируете "все файлы JPG в любом каталоге с именем files", используйте

syntax: glob
files/**.jpg

См. hg help patterns, в котором объясняется, что ** является оператором glob, который охватывает разделители каталогов. Это означает, что файл

 files/test/demo.jpg

соответствует files/**.jpg.

Однако обратите внимание, что шаблоны glob не привязаны не. Это означает, что файл с именем

 test/files/demo.jpg

также игнорируется, так как он соответствует шаблону после удаления префикса test/.

Вам нужно использовать регулярное выражение, если вы заинтересованы в этом. В этом синтаксисе шаблон читает

syntax: regex
^files/.*\.jpg

Обычно я не беспокоюсь о том, чтобы укоренять шаблон - я предпочитаю простоту шаблонов глобусов. Но приятно знать, что вы можете запустить шаблон игнорирования, если вам действительно нужно.

Ответ 3

Должен ли быть синтаксис glob? Если вы используете синтаксис regex, files/.*\.jpg должен работать.