Как запустить функцию Bash с использованием псевдонима Git - PullRequest
3 голосов
/ 26 июня 2011

Я хочу использовать псевдоним Git в ~ / .gitconfig, чтобы он вызывал функцию bash, если она определена, в противном случае вызовите обычный git checkout.

Это то, что я разработал:

cat ~/.gitconfig
...
[alias]
...
    co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout

Проблема в том, что Git использует / bin / sh (в моем случае это dash), и он вызывает compgen, так как он встроен bash.

Любой способ убедиться, что Git использует bash для выполнения этой команды?

Обратите внимание, что vxzExecuteGitCheckout() определен в файле, который еще не включен в ~ / .bashrc.

Другой вопрос: если бы я использовал git co -b param1 param2 ..., передалось бы вышеупомянутое определение псевдонима от -b param1 param2 до git checkout, если эта функция Bash не найдена?

1 Ответ

2 голосов
/ 26 июня 2011

использовать bash явно:

co = !bash -c '( compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout' -

другой возможностью было бы написать сценарий оболочки с правильной строкой shebang #!/bin/bash и вызвать этот сценарий для alias.co (см. Вопрос Как встроить сценарий bash непосредственно в псевдоним git )

...