Невозможно получить список git ls-remote и нет ошибок в stdout
Я исполняю git ls-remote ssh://git@git_repo:port *
на двух разных компьютерах в одной сети, один Linux другой Windows, и в Windows я получаю список, но в Linux нет. Никаких ошибок, просто и пустой список в Linux.
У обоих есть ключ SSH, добавленный в удаленный репозиторий, и оба могут клонировать репозиторий.
Обновление 1:
Версия для Windows Git: 2.19.2.windows.1
Linux Git version: 2.7.4
Обновление 2:
The repository is in Gerrit.
Обновление 3:
I'm facing this problem using the Jenkins plugin Extended Choice Parameter plugin. It has no change since 2016. Any workaround for this would be also an answer.
Любая идея?
1 ответ
Вы, вероятно, должны использовать:
git ls-remote ssh://git@git_repo:port
без суффикса, так как он по умолчанию перечисляет все.
Ты можешь использовать:
git ls-remote ssh://git@git_repo:port '*'
(или то же самое с двойными кавычками - один или оба из них могут также работать в Windows). В командной оболочке в стиле Unix/Linux оболочка заменит *
со списком всех файлов в текущем каталоге перед запуском команды, если только вы не защитите звездочку от оболочки.
Вы также можете использовать одну обратную реакцию:
git ls-remote ssh://git@git_repo:port \*
так как существует множество способов защитить отдельных персонажей от снарядов. Правила становятся немного сложнее, но в целом одинарные кавычки являются "наиболее сильными" кавычками, в то время как двойные кавычки заключают в кавычки символы 1, но не другие расширения. 2 Обратная косая черта заключает в кавычки следующий следующий символ, если вы еще не в кавычках (поведение обратной косой черты в двойных кавычках варьируется в некоторых оболочках).
1 Глобус символы *
, [
, а также ?
, После [
символы внутри шара бегут к закрытию ]
, Так echo foo[abc]
ищет файлы с именем fooa
, foob
, а также fooc
, Обратите внимание, что .
это вообще не спец foo.*
соответствует только файлам, имена которых начинаются с foo.
, т. е. включая период: файл с именем foo
не начинается с foo.
, только с foo
и не соответствует.
Глобусы сильно отличаются от регулярных выражений: в регулярных выражениях .
соответствует любому символу (например, ?
означает "повторять предыдущее совпадение ноль или более раз", так что *
и регулярное выражение .*
похожи. (В совпадениях с регулярным выражением нам также необходимо учитывать, является ли выражение привязанным. Глобусы всегда привязываются, чтобы вопрос не возникал.)
2 Большинство расширений происходит со знаком доллара $
, как в $var
или же ${var}
или же $(subcommand)
, но обратные кавычки также вызывают подстановку команд, как в echo `echo bar`
,