These might just be documentation bugs. Aliases that expand to shell commands are only documented fairly superficially, but `git help config` does say: "If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command."
It also says, nearer the beginning: "String values may be entirely or partially enclosed in double quotes. You need to enclose variable values in double quotes if you want to preserve leading or trailing whitespace, or if the variable value contains comment characters (i.e. it contains # or ;)." There appears to be another case string values need to be enclosed in quotes, which is a shell command where you want to preserve quote characters (not leading or trailing); a minimal example is shortcut = !cd "" && pwd will act like you ran, in bash, $ cd && pwd and print your homedir path, whereas shortcut = !"cd \"\" && pwd" will act like you ran, in bash, $ cd "" && pwd and stay in the top-level directory of the repo (which is where aliases that expand to shell commands are run from). This is problematic precisely because aliases that expand to shell commands are run from the top-level directory of the repo: if you had an alias that worked great at the top-level directory, like shortcut = !do_something but it was doing the wrong thing in subdirectories, my first instinct, at least, upon reading "Note that shell commands will be executed from the top-level directory of a repository, which may not necessarily be the current directory. GIT_PREFIX is set as returned by running git rev-parse --show-prefix from the original current directory.", is to do shortcut = !cd "$GIT_PREFIX" && do_something which will now do the right thing in subdirectories, but at the top-level directory of the repo, $GIT_PREFIX is undefined/the empty string, and it cds to your homedir. The other bug I'm much more confused by. If you have an alias like shortcut = !"echo -n lol; echo wut" it will, in fact, print -n lol wut which is, uh, not what bash prints. Is git special-casing echo? (I discovered these while adding something semi-jokingly to my .gitconfig: https://github.com/laughinghan/dotfiles/commit/34f5528825b287ff40acfe57808b32931a87261c ) Han -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html