Как я могу игнорировать все под папкой в Mercurial


Я ищу выражение .hgignore файл, чтобы игнорировать все файлы в указанной папке.

например: я хотел бы игнорировать все файлы и папки под bin

на самом деле любой совет о том, как формируются выражения было бы здорово

6 144

6 ответов:

поочередно:

syntax: glob
bin/**

Я провел несколько экспериментов и обнаружил, что синтаксис регулярных выражений в Windows применяется к пути, начинающемуся с текущего репозитория, с обратными косыми чертами, преобразованными в косые черты.

Так что если ваш репозиторий находится в E:\Dev например, hg status будет применять шаблоны против foo / bar / file1.c и так далее. Якоря применяются к этому пути.

Так:

  • Glob применяется к элементам пути и коренится в элементных частях
  • foo соответствует любой папке (или файлу) названный foo (не "foobar" или "barfoo")
  • * foo * соответствует любой папке или файлу с "foo" в имени
  • foo / bar * соответствует всем файлам в папке "foo", начиная с"bar"


  • регулярное выражение чувствительно к регистру, не привязано
  • конечно, обратная косая черта regex специальные символы, такие как . (точка)
  • / соответствует \ разделитель пути в Windows. \ не соответствует этому разделителю...
  • foo соответствует всем файлам и папки с "foo" внутри
  • foo / соответствует только папки, заканчивающиеся на "foo"
  • /foo / соответствует папке " foo " где-то в пути
  • /foo / bar / соответствует папке " bar "в папке" foo " где-то в пути
  • ^foo соответствует файлу или папке, начиная с foo в корне репозитория
  • foo$ соответствует файлу, заканчивающемуся foo

Я надеюсь, что это поможет, я нашел HGIGNORE (5) страница немного краткий.

оба из них также будут отфильтровывать каталог под названием cabin, который может быть не то, что вы хотите. Если вы фильтруете верхний уровень, вы можете использовать:

^/bin/

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

неважно, я получил его

syntax: regexp
bin\*

выражения следуют стандартному синтаксису регулярных выражений perl.

игнорировать .файлы классов

syntax: regexp
?\.class

синтаксис: glob бин/**

этот ответ показан выше, однако я также хотел бы добавить, что * и ** обрабатываются по-разному. ** является рекурсивным, * нет.

посмотреть Шаблоны Рт. Ст.