From: Junio C Hamano Date: Wed, 08 Apr 2009 06:22:51 GMT Subject: Re: [PATCH 2/5] for-each-ref: refactor refname handling Message-ID: <7vprfnr7es.fsf@gitster.siamese.dyndns.org> In-Reply-To: <20090407070651.GB2924@coredump.intra.peff.net> Jeff King writes: > This code handles some special magic like *-deref and the > :short formatting specifier. The next patch will add another > field which outputs a ref and wants to use the same code. > > This patch splits the "which ref are we outputting" from the > actual formatting. There should be no behavioral change. > > Signed-off-by: Jeff King > --- > The diff is scary, but it is mostly reindentation. ... and an introduction of a bug ;-) > builtin-for-each-ref.c | 47 ++++++++++++++++++++++++++--------------------- > 1 files changed, 26 insertions(+), 21 deletions(-) > > diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c > index 4aaf75c..b50c93b 100644 > --- a/builtin-for-each-ref.c > +++ b/builtin-for-each-ref.c > @@ -672,32 +672,37 @@ static void populate_value(struct refinfo *ref) > ... > + /* look for "short" refname format */ > + if (formatp) { > + formatp++; > + if (!strcmp(formatp, "short")) > + refname = get_short_ref(refname); > + else > + die("unknown %.*s format %s", > + formatp - name, name, formatp); die("unknown %.*s format %s", (int)(formatp - name), name, formatp);