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