Re: git 'new' alias
- From
Matthieu Moy <matthieu.moy@grenoble-inp.fr>
- Date
- Sep 5, 2011, 16:36 UTC
- Message-ID
- <vpqipp77xpb.fsf@bauges.imag.fr>
- In-Reply-To
- <20110901211747.GA16308@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
> $ git config alias.one
> !f() { r=$1; shift; echo $r@{1}..$r@{0} "$@"; }; f(which, I've just discovered, should be written as
[alias]
one = "!f() { r=$1; shift; echo $r@{1}..$r@{0} "$@"; }; f"otherwise "git config" messes up with the ; in the line)
> which I think was the original intent (modulo me replacing "git log" > with "echo" for debugging, of course).
The original intent was mis-specified ;-).
I think I originally made the alias to do
git new # give me new stuff on current branch git new origin/master # same, for origin/master
and tried to enrich it to allow
git new master --oneline
without thinking about what
git new --oneline
should do (and obviously, without really testing it, I guess I had one version of the alias allowing each senario, and none allowing all of them).
I now have this, which is really ugly in a config file, but does the DWIMery I want:
new = "!f () { if echo \"$1\" | grep -q -e '^-' -e '^$'; then r=; else r=$1; shift; fi; git log $r@{1}..$r@{0} \"$@\"; } && f"(this one has even been vaguely tested ;-) )
-- Matthieu Moy http://www-verimag.imag.fr/~moy/