Какое определение для `pattern` для git ls-remote?

Какой тип "шаблон" делает git ls-remote брать?

man git-ls-remote говорит:

   <refs>...
       When unspecified, all references, after filtering done with --heads
       and --tags, are shown. When <refs>... are specified, only references
       matching the given patterns are displayed.

Это оболочка POSIX, регулярное выражение, шаблон gitignore, ...?

2 ответа

Действительно, документация по ls-remoteмало что говорит, но вы можете найти эту информацию на других страницах. Например, документация дляgit tag -lговорит:

Шаблон представляет собой подстановочный знак оболочки (т. е. сопоставлен с использованием fnmatch(3)).

Насколько я могу судить, git поддерживает только базовый синтаксис glob , но не поддерживает «расширенные шаблоны», предоставляемые FNM_EXTMATCH.

Я думаю, что фильтрация на самом деле реализованаwildmatch(), поэтому поведение может отличаться от стандартного fnmatch.

Обратите внимание, что в Git 2.40 (первый квартал 2023 г.) немного обновлено определение шаблона для .

См. и коммит baebde7 (10 февраля 2023 г.) Джеффа Кинга ( peff).
(Объединено Джунио К. Хамано -- gitster-- в коммите 6aac634, 22 февраля 2023 г.)

коммит d9ec3b0doc/ls-remote: уточнить формат шаблона

Подпись: Джефф Кинг

Мы документируем, что вы можете указать «refs» дляls-remote, но мы не объясняем ничего, кроме того, что они «сопоставляются» как шаблоны.
Поскольку это можно интерпретировать по-разному, давайте уточним, что это glob с согласованным хвостом .

Аналогичным образом, давайте использовать слово «шаблоны», чтобы последовательно ссылаться на них, а не «ссылки» (как здесь, так и в кратком руководстве).-h» help) и более подробно упомяните, что необходимо сопоставить только один шаблон (хотя уже есть пример, показывающий это в действии).

теперь включает в свою справочную страницу :

[--symref] [<repository> [<patterns>...]]

git ls-remoteтеперь включает в свою справочную страницу :

:

Если не указано, все ссылки после фильтрации, выполненной с помощью--headsи--tags, показаны.

Когда<patterns>...указаны, отображаются только ссылки, соответствующие одному или нескольким заданным шаблонам.
Каждый шаблон интерпретируется как glob , который сопоставляется с «хвостом» ссылки, начиная либо с начала ссылки (поэтому полное имя, напримерrefs/heads/fooсовпадений) или через косую черту (так чтоbarМатчиrefs/heads/barно нетrefs/heads/foobar).

Другие вопросы по тегам