git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Will Palmer <wmpalmer@gmail.com>
To: Michael J Gruber <git@drmicha.warpmail.net>
Cc: Junio C Hamano <gitster@pobox.com>,
	git@vger.kernel.org, Jeff King <peff@peff.net>
Subject: Re: [PATCH/RFC 0/9] add long forms for format placeholders
Date: Tue, 29 Mar 2011 08:27:00 +0100	[thread overview]
Message-ID: <1301383620.2335.50.camel@dreddbeard> (raw)
In-Reply-To: <4D918032.3010608@drmicha.warpmail.net>

On Tue, 2011-03-29 at 08:46 +0200, Michael J Gruber wrote:
> Junio C Hamano venit, vidit, dixit 29.03.2011 02:28:
> > Will Palmer <wmpalmer@gmail.com> writes:
> > 
> >> I've been kicking around this series for a while now as part of a larger
> >> effort of refactoring the pretty formats. A recent discussion on the
> >> list has lead me to believe that this smaller subset may be of use
> >> sooner, rather than later.
> >>
> >> This series attempts to add "long forms" for common format placeholders
> >> in the "git log" family of commands, making the way for yet more
> >> placeholders to be added without needing to worry too much about the
> >> increasingly limited set of available one-letter mnemonics. It also
> >> moves towards the possibility of eventual unification with the format
> >> options in for-each-ref.
> > 
> > I don't claim that I read 1300+ long [PATCH 5/9] carefully, but I like the
> > direction in which this topic is going very much.
> > 
> > Except that [PATCH 2/9] looked quite out of place---more like "I wanted to
> > sneak this feature in" than "this was needed to keep the resulting code
> > backward compatible" or anything like that.
> > 
> > Off the top of my head, I don't think of a reason to say that [PATCH 3/9]
> > is going in a wrong direction---is there a reason to make you worried in
> > the particular change?
> 
> I'm wondering how much of this could and should be shared with
> for-each-ref. ......................................

I agree with this.
Not only that, but I think the "list" modes of branch and tag should
also call for-each-ref internally, and I hope that some of the
conditional formats that this series is moving slowly towards will help
with that.

> ............. Notable differences that I'm aware of:
> 
> - for-each-ref is about (named) refs which can point to any type of
> object; rev-list/log is about commit objects
> 
> - for-each-ref deals with "few" objects typically, rev-list/log with many
> 
> So, other than %(refname), %(upstream) and %(tagger...), all
> for-each-ref placeholders make sense for rev-list/log.

I think the "right thing to do" here is to allow the parser to accept
any of the for-each-ref specifications, but for the formatter to return
an empty string for anything that doesn't make sense in context. This is
what for-each-ref currently does. for-each-ref also gives an empty
string for some invalid specifications, such as %(tree:short), but I
assume this is a bug.

I'm not sure what the implications are in terms of what additional
structures we'll need to pass in to the formatter, as I haven't looked
much at the for-each-ref code. It may also be that there are some
commit-related things which for-each-ref doesn't currently bother to
grab, since its placeholder list is comparatively smaller than the
rev-list one.

> 
> Sharing the parser would serve several purposes:
> 
> - reduced code
> - increased test coverage (for-each-ref tests would test the parser)
> - speed up for for-each-ref (due to your nice separation)
> - short placeholders for for-each-ref
> - automatic consistency between the two
> 

This is already a part of my longer-term plans, though those were mostly
as a "I bet it would be fairly simple to do this once the rest is done".
What I'm actually working towards is strictly related to the --pretty=
formats, so I expect it will be a while before I get to anything like
for-each-ref unification. It may also be worth noting that the last part
of this work I submitted, "pretty aliases", was sent nearly a year ago.
I am not going to be working on any of this full-time.
The point here is: I would not be offended if someone were to snatch
for-each-ref unification up from me, since I really don't know when I
would get to it myself.


> Michael

-- 
-- Will

      reply	other threads:[~2011-03-29  7:27 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-28 23:17 [PATCH/RFC 0/9] add long forms for format placeholders Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 1/9] mention --date=raw in rev-list and blame help Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 2/9] add support for --date=unix to complement %at Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 3/9] interpret %C(invalid) as we would %%C(invalid) Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 4/9] add sanity length check to format_person_part Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 5/9] refactor pretty.c into "parse" and "format" steps Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 6/9] add long-form %(wrap:...) for %w(...) Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 7/9] add long form %(color:...) for %C(...) Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 8/9] add long forms %(authordate) and %(committerdate) Will Palmer
2011-03-28 23:17 ` [PATCH/RFC 9/9] add long forms for author and committer identity Will Palmer
2011-03-29  0:28 ` [PATCH/RFC 0/9] add long forms for format placeholders Junio C Hamano
2011-03-29  6:44   ` Will Palmer
2011-03-29  6:46   ` Michael J Gruber
2011-03-29  7:27     ` Will Palmer [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1301383620.2335.50.camel@dreddbeard \
    --to=wmpalmer@gmail.com \
    --cc=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).