On Tue, Mar 22, 2011 at 10:57:08AM -0700, Junio C Hamano wrote: > The first addition is indeed a huge improvement. > > Note that any argument you pass when running aliases are simply > appended to the shell command. > > The original didn't explicitly say it but it really should have. The > example that comes before it, "alias.new = !...", should be updated with > an invocation that takes a parameter, perhaps like this: > > With this alias defined: > > [alias] since = "!gitk --all --since" > > you can view commits in the last week with: > > $ git since 7.days > > because this expands to "gitk --all --since 7.days" by concatenating > the arguments supplied at runtime to the alias. > > Then say that "Note ..." to stress that point. The description at that > point has become much better. > > With that understanding already there, > > This means that "alias.foo = !echo $# args: $1, $2 and $3" will > not do what you expect. > > is no longer true; nobody sane would expect that if you made them realize > that "simply appended" already. Just dropping that sentence would make > the resulting text flow much better. Agreed, your version is better. > If you want to refer to arguments given to the alias, you can > wrap it as a shell script, e.g. > > [alias] reversed = "!sh -c 'echo $2 $1' -" > > or a shell function, e.g. > > [alias] reversed = "!reversed() { echo $2 $1 } && reversed" > > and invoke it like so: > > $ git reversed one two > two one > > I personally think the former "sh -c <str> -" is the more traditional and > well understood form (iow, an idiom) for people who breathe shells. Yeah, that is probably true. One advantage of the function idiom is that it doesn't happen inside single-quotes, so it's one less layer of quoting to deal with. And of course it saves a shell invocation. So I think mentioning both is reasonable. > > +---------------------- > > +alias.foo = !echo $# args: $1, $2 and $3 > > +---------------------- > > While I totally agree with the formatting advice you gave here, we may > want to avoid this notation; neither "git config alias.foo = !echo ..." > nor writing "alias.foo = ..." in .git/config file would work. Yeah, I didn't even think about that, but you are right. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html