I want to use a Git alias in ~/.gitconfig so that it calls a bash function, if it is defined, otherwise call the regular git checkout.
This is what I have devised:
cat ~/.gitconfig
...
[alias]
...
co = !(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout ) || git checkout
The problem is that Git uses /bin/sh (which happens to be dash in my case) and it barfs on compgen since it is a bash builtin.
Any way making sure that Git uses bash to execute this command?
Note that vxzExecuteGitCheckout() is defined in a file which is not included in ~/.bashrc, yet.
Another question is, if I were to use git co -b param1 param2 ..., would the above alias definition pass on the -b param1 param2 to git checkout if this Bash function is not found?
`co = !bash -c '(compgen -A function vxzExecuteGitCheckout >/dev/null && vxzExecuteGitCheckout "$@" ) || git checkout "$@"' -` You might want to explain the importance of trailing dash, because without it the `git co` command seemed to do nothing at all. – Gurjeet Singh Jun 26 '11 at 15:38