2015-04-02 1 views
0

ВводВ Git, как игнорировать все файлы, чье имя заканчивается на `.foo.XXXX`, где XXXX - это любое« нормальное »расширение имени файла?

syntax:regexp 
*.foo.[a-z]{1,4} 

в .gitignore не работает. Я помню

syntax:glob 

и

syntax:regexp 

некоторое время назад в некоторых .gitignore файлов, но я не мог подать такой синтаксис в Git руководстве. Есть ли способ использовать регулярное регулярное выражение в .gitignore?

+2

Вы случайно все файлы. – hobbs

+1

Не могли бы вы восстановить некоторые ругательства? – qazwsx

+0

Ваш синтаксис выглядит как регулярное выражение, а не glob. – tripleee

ответ

3

без использования каких-либо регулярных выражений синтаксис, который может или не может поддерживаться (я не вижу каких-либо доказательств для этого либо), вы могли бы получить такое же поведение с четырьмя правилами:

*.foo.[a-z] 
*.foo.[a-z][a-z] 
*.foo.[a-z][a-z][a-z] 
*.foo.[a-z][a-z][a-z][a-z] 

Если вы хотите немного скомпрометируем, вы можете использовать *.foo.?* (что-нибудь заканчивается на foo, точка и, по крайней мере, еще один символ), или *.foo.[a-z]* (что-то заканчивается на foo, а затем расширение, начинающееся с буквы).

2

Вы сбиваете с толку .hgignore с номером .gitignore.

Нет такой вещи, как «нормальное расширение имени файла»; что вы можете сделать, чтобы начать с, чтобы добавить следующее:

**/foo.* 

**/ будет соответствовать foo.* во всех каталогах.

.gitignore использует shell glob syntax:

Гит обрабатывает шаблон как Глоба оболочка, пригодную для потребления fnmatch (3) с флагом FNM_PATHNAME: групповые символы в шаблоне будут не совпадают в/в путь к файлу.