У меня регулярно возникает такая же проблема, и я просто пошел и взломал git find
- если вы не используете пакет Debian , вы можете просто скопировать скрипт git-find
до /usr/lib/git-core/
(или сравнимо) и наслаждайтесь.
Может использоваться в нескольких режимах, самый простой из которых:
git find \*middleware\* # or
git find '*middleware*' # which is short for
git find -name '*middleware*'
Комбинация также возможна (и почти такая же гибкая, как обычная find
, вам просто нужно явно написать -a
):
git find \( -name \*.java -o -name \*.js \) -a ! -ipath \*/test/\*
У него есть еще пара опций, большинство из которых работают с фильтрацией имени или полного (частичного, то есть ниже текущего рабочего каталога) пути, некоторые из них не чувствительны к регистру (-iname
и друзья), и две глобальные опции одно переключает регулярное выражение между POSIX Basic (по умолчанию) и POSIX Extended, другое переключает символические ссылки (по умолчанию включено); он находит только файлы (и символические ссылки), но не каталоги или субмодули («gitlinks») по своему дизайну.
Он также может передавать список файлов в обычный find (1) , если он не слишком длинный (его нужно передавать в командной строке), что допускает такие вещи, как…
git find -- -mtime -100
… при небольших затратах на файловую систему (find
имеет доступ к файловой системе), но, с другой стороны, почти все (не относящиеся к глубине поиска) из find
работают, и вы можете работать только с файлами «в индекс », т.е. известный git (присутствует в коммите HEAD или git add
ed).
Хотя немного неразборчиво в отношении неразрешенных конфликтов. Если вы заметили какие-либо проблемы с ним, просто напишите мне (здесь, или через IRC).
PS: Не стесняйтесь лоббировать официальных пользователей git, чтобы объединить хранилище git-find с поддеревьями, я был бы более чем счастлив включить его в собственно git (лицензия еще более либеральна, вам просто нужна * Оболочка 1033 * в довольно недавней (50 должно быть достаточной) версии, но в настоящее время это самая распространенная оболочка Unix, так что все в порядке).