Я пытаюсь написать правило .gitignore
, чтобы исключить некоторые файлы в определенном каталоге с несколькими уровнями подкаталогов.Почему шаблон glob с двойной звездочкой не соответствует чему-либо в подкаталогах?
Структура папки выглядит следующим образом:
out
├─a
│ ├─source
│ │ ├─.keepme
│ │ ├─183597.txt
│ │ ├─271129.txt
│ │ └─288833.txt
│ └─parsed
│ ├─.keepme
│ ├─183597.csv
│ ├─271129.csv
│ └─288833.csv
├─b
│ └─(...)
(etc.)
Я хотел бы сохранить .keepme
файлов (так что Git сохраняет структуру каталогов), так что я полагаю, что я буду писать правила, чтобы соответствовать что-нибудь под out
, что соответствует шаблону ?*.*
:
out/**/?*.*
Однако это не соответствует файлов.
Я думал, что **
будет соответствовать любому количеству подкаталогов; почему это не работает?
Я запускаю Git 1.8 в Bash 4.2 на Fedora 18 VM.
Из любопытства, почему вы хотите создать структуру каталогов без каких-либо файлов? –
Что бы вы могли сделать, если вы знаете, что никогда не захотите добавить больше файлов из 'out' в git, просто добавить файлы' .keepme' в индекс git, зафиксировать их, а затем добавить ' out/'to' .gitignore'. Файлы '.keepme' будут версироваться до тех пор, пока они останутся в репозитории, но новые файлы под' out/'не будут добавлены. –
@EmilLundberg Хороший вопрос. Эти каталоги будут хранить выходные файлы, и в этом случае проще включить структуру каталогов в репозиторий, чем проверить программу на наличие файлов перед сохранением вывода. –