Чтобы запускать команды внутри псевдонима git и, в частности, передавать аргументы этим командам, вам, вероятно, придется создать временную функцию, которую вы затем немедленно вызовете:
$ vim ~/.gitconfig
...
[alias]
# compare:
foo = "! echo begin arg=$1/$2/end"
foo2 = "!f() { echo "begin arg=$1/$2/end"; }; f"
В этом примере функция, вероятно, то, что вам нужно (и она более гибкая в отношении того, что вы можете сделать в одном «операторе»); и вы, вероятно, можете сказать, что для обоих вариантов оставшиеся аргументы команды git просто передаются как аргументы псевдониму, независимо от того, является ли он «echo» или «f»; вызов функции просто потребляет аргументы, игнорируя то, что явно не используется:
$ git foo a b c
begin arg=a/b/end a b c
$ git foo2 a b c
begin arg=a/b/end
Другой пример (перечисляет все псевдонимы, основанные на подходящем шаблоне) (примечание: вы можете повторно использовать одно и то же имя функции «f ()» в файле .gitconfig):
[alias]
alias = "!f() { git config --get-regexp "^alias.${1}$" ; }; f"
Первый возвращает псевдоним только для «foo $», второй для «foo. *»:
$ git alias foo
alias.foo ! echo begin arg=$1/$2/end
$ git alias 'foo.*'
alias.foo ! echo begin arg=$1/$2/end
alias.foo2 !f() { echo begin arg=$1/$2/end; }; f
(Примечание: фактические результаты могут отличаться в зависимости от оболочки; я использую это с bash в Linux, Unix и Cygwin (Windows).)
person
michael
schedule
21.02.2013