Страницы

Поиск по вопросам

четверг, 11 июля 2019 г.

Как выполнить shell-скрипт как git-alias, но не добавляя сам alias?

Например, есть такой git-alias.
[alias] root = "!pwd"
Его можно использовать в shell-скрипте:
echo `git root`
Я бы хотел выполнять его "от имени Git", но не регистрируя alias. Как-то так:
echo `git run "pwd"`
Возможно ли это?


Ответ

Это возможно с использованием параметра git -c. Перевод из man git
-c <имя>=<значение> Передает команде параметр конфигурации. Предоставленное значение будет использовано вместо значения, имеющегося в файлах конфигурации (но никаких постоянных изменений конфигурации не произойдет). Требуется, чтобы <имя> было указано в том же формате, как и в конфигурационных файлах (вложенные ключи разделяются точками: foo.bar) Обратите внимание, что знак = можно не использовать (git -c foo.bar ...). В таком случае значение переменной будет установлено в логическое true. Если указать = без значения (git -c foo.bar= ...), то переменной будет присвоено значение пустой строки.
Решение:
echo `git root`
например, так:
$ cd /tmp; $ echo $(git -c alias.root='!pwd' root) /tmp
обновление
echo `git run "pwd"`
можно, например, так:
echo $(git -c alias.run='!$1' run "pwd")

к слову
конструкция
$(команда)
как замена
`команда`
прописана в posix и потому является полностью переносимой, а ввиду её очевидного удобства (при вложенном использовании), имеет смысл именно ею и пользоваться.

Комментариев нет:

Отправить комментарий