From: Kevin Ballard Date: Wed, 16 Jul 2008 00:58:25 GMT Subject: Re: Useful tip about !aliases Message-ID: In-Reply-To: On Jul 15, 2008, at 5:50 PM, Johannes Schindelin wrote: > Hi, > > On Tue, 15 Jul 2008, Kevin Ballard wrote: > >> 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' > > On the gitwiki, you will find a more elegant solution using "sh -c". I'd forgotten you can do that, but I disagree that it's more elegant. It's a bit shorter, certainly, but it also invokes another process. Using a shell function doesn't. -Kevin Ballard -- Kevin Ballard http://kevin.sb.org kevin@sb.org http://www.tildesoft.com