Что такое мерзавец, эквивалентный шаблону "..." в p4? - PullRequest
4 голосов
/ 11 ноября 2011

Когда я использовал p4 (Perforce), я часто использовал шаблон "...", который похож на "*", за исключением того, что он пересекает уровни иерархии файловой системы (то есть: он также соответствует слешам). Это было удобно для работы с исходными файлами, которые находились на нескольких уровнях ниже дерева каталогов.

Например:

p4 diff foo/.../*.py

Это "p4 diff" всех файлов Python в поддереве "foo".

Есть ли простой способ получить тот же результат с помощью git? Прямо сейчас я должен сделать что-то вроде этого:

git diff $(find foo -name '*.py')

что не так удобно.

1 Ответ

4 голосов
/ 11 ноября 2011

git обычно полагается на возможности расширения имен путей, предоставляемые оболочкой - и это справедливо, поскольку расширение имен путей не совсем работа системы контроля версий.Так что вы должны посмотреть на свою оболочку по своему выбору, чтобы увидеть, поддерживает ли она что-то вроде расширения ... pathname.Если вы используете bash, вы можете установить параметр globstar

shopt -s globstar

, а затем использовать двойную звездочку, чтобы получить нужное расширение:

git diff foo/**/*.py

Обратите внимание, чтоСудя по моим тестам, двойная звездочка не соответствует частичным компонентам пути.Другими словами, после этого паттерна должна следовать косая черта, чтобы он соответствовал чему-то вроде foo/bar/blah/baz.py.Если вы попытаетесь написать foo/ba**/*.py, это будет совпадать с foo/ba*/*.py.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...