Git development
 help / color / mirror / Atom feed
* Useful tip about !aliases
@ 2008-07-16  0:46 Kevin Ballard
  2008-07-16  0:50 ` Johannes Schindelin
  0 siblings, 1 reply; 3+ messages in thread
From: Kevin Ballard @ 2008-07-16  0:46 UTC (permalink / raw)
  To: Git Mailing List

Here's something I discovered recently about !aliases that other folks  
might find useful. The canonical form for a shell alias is something  
like

   git config alias.foo '!echo bar'

where any args given to foo, as in `git foo blah` are passed along to  
the shell, so in this case `echo bar blah` would be invoked.

Something that I find very useful is the ability to interpolate  
arguments into the middle of a command. This doesn't seem possible at  
first glance, not without a helper script. But it certainly is  
possible, with the help of shell functions:

   git config alias.reverse '!foo () { args=''; while [[ -n "$*" ]];  
do args="$1 $args"; shift; done; echo $args; }; foo'

Now if you invoke `git foo one two three` you'll get the response  
"three two one".

Here's another example. This one I particularly like. I call it 'send- 
patches', because what it does is it takes a single hash and creates  
patches out of all commits since that hash, invokes send-mail on them,  
and deletes them. It's a rather quick way of sending off patches. And  
if you pass any extra arguments, they're given to git-send-email. The  
most useful part is it adjusts the patch prefix to contain the name of  
the repository itself, so your recipient knows exactly what your patch  
is for.

   git config --global alias.send-patches '!foo () { rev="$1"; shift;  
git send-email $(git format-patch -o .mbox --no-prefix --subject- 
prefix="$(printf "PATCH: %s" $(basename $(cd "$(git rev-parse --show- 
cdup)" && pwd)))" $rev) "$@"; rm -rf .mbox; }; foo'

-Kevin Ballard

-- 
Kevin Ballard
http://kevin.sb.org
kevin@sb.org
http://www.tildesoft.com

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2008-07-16  0:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-16  0:46 Useful tip about !aliases Kevin Ballard
2008-07-16  0:50 ` Johannes Schindelin
2008-07-16  0:58   ` Kevin Ballard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox