Can I embed the following bash shell code:
for name in $(git diff --name-only $1); do git difftool $1 $name & done
directly into the creation of a git alias:
git config --global alias.diffall ***my-bash-code-here***
This leads on from my previous question/answer on SO, where I put the code into a .sh file and then aliased to the file:
git config --global alias.diffall '!sh diffall.sh'
But in the never-ending quest for simplicity, there's gotta be a way to skip the file and insert code directly into the alias? I can't figure out the format...
Adding these 2 line to your .git/config file should do the trick.
Edit: presumably the git-config version works too, but I like to keep my aliases in the config file for ease of management.
There is a nice page on the git wiki that explains aliases very clearly: http://git.or.cz/gitwiki/Aliases In particular, read 'advanced aliases with arguments'
To run commands inside of a git alias, and in particular to pass arguments to those commands, you will likely have to create a temporary function which you then immediately invoke:
In this example, the function is probably what you need (and is also more flexible as to what you can do in a single "statement"); and you can probably tell that for both options, the remaining args to the git command are simply passed as args to the alias, regardless if it's "echo" or "f"; invoking the function simply consumes the args, ignoring what's not explicitly used:
Another example (lists all aliases, based on matching pattern) (note: you can keep reusing the same function name "f()" throughout the .gitconfig):
The first returns the alias for just "foo$", the second for "foo.*":
(nb: actual results may vary based on shell; I'm using this with bash on Linux, Unix & Cygwin (Windows).)
I couldn't find in documentation, but if you create a script "git-<name>" in path, you can call it with "git name" in your repo.
See:
So, you can write any alias you like with this (rather obscure) way too.
Even more you can add autocompletion to that new command defining a function. Info here
(From ProGit documentation: http://progit.org/book/ch7-3.html)
Have you tried to add a script in .git/hooks?
For example, if you create a script .git/hooks/post-checkout:
and then run the command:
This is redundant in one way. If you are going to add 'diffall.sh' into your $PATH anyway, why not save it as 'git-diffall', and save yourself from declaring an alias. Yes, "git diffall" will run it.