Подтвердить что ты не робот

Hgignore: помогает игнорировать все файлы, но некоторые из них

Мне нужен файл .hgdontignore:-), чтобы включить определенные файлы и исключить все остальное в каталоге. В основном я хочу включить только файлы .jar в конкретный каталог и ничего больше. Как я могу это сделать? Я не настолько квалифицирован в синтаксисе регулярных выражений. Или я могу сделать это с помощью синтаксиса glob? (Я предпочитаю это для удобочитаемости)

Как пример места, скажем, я хочу исключить все файлы в foo/bar/ кроме foo/bar/*.jar.

4b9b3361

Ответ 1

Для этого вам нужно будет использовать это регулярное выражение:

foo/bar/.+?\.(?!jar).+

Объяснение

Вы говорите, что игнорировать, поэтому это выражение ищет вещи, которые вам не нужны.

  • Вы ищете любой файл, чье имя (включая относительный каталог) включает (foo/bar/)
  • Затем вы ищите символы, предшествующие периоду (. +? \. == соответствуют одному или нескольким символам любого времени, пока не достигнете символа периода)
  • Затем вы убедитесь, что у него нет конца "jar" (?! jar) (Это называется негативным взглядом вперед
  • Наконец, вы получите окончание, которое у него есть (. +)

Регулярные выражения легко испортить, поэтому я настоятельно рекомендую вам получить инструмент, например Regex Buddy, чтобы помочь вам в их создании. Он будет разбивать регулярное выражение на простой английский, что действительно помогает.

ИЗМЕНИТЬ

Эй Джейсон S, ты поймал меня, он пропускает эти файлы.

Это исправленное регулярное выражение будет работать для каждого приведенного вами примера:

foo/bar/(?!.*\.jar$).+

Он находит:

  • Foo/бар/baz.txt
  • Foo/бар/Baz
  • Foo/бар/баночка
  • Foo/бар/baz.jar.txt
  • Foo/бар/baz.jar.
  • Foo/бар/Baz.
  • Foo/бар/baz.txt.

Но не находит

  • Foo/бар/baz.jar

Новое объяснение

Это говорит о поиске файлов в "foo/bar/", затем не совпадают, если есть ноль или более символов, за которыми следует ".jar", а затем больше символов ($ означает конец строки), затем, если это не так, соответствуют любым следующим символам.

Ответ 2

Ответ от Майкла - прекрасный, но другой вариант - просто исключить:

foo/bar/**

а затем вручную добавьте файлы .jar. Вы всегда можете добавлять файлы, исключенные из правила игнорирования, и переопределяет игнорирование. Вы просто должны помнить, чтобы добавить все банки, которые вы создаете в будущем.