git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 08/15] for-each-ref: get --pretty using format_commit_message

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 5, 2013, 17:09 UTC
Message-ID
<7v61xs32n0.fsf@alter.siamese.dyndns.org>
In-Reply-To
<CACsJy8ABwroExpXQRX8OYAnDum9+sX1+JB9z+WNn+YcZoXi5KA@mail.gmail.com>
Duy Nguyen <pclouds@gmail.com> writes:
Show 18 quoted lines
> On Wed, Jun 5, 2013 at 4:12 AM, Eric Sunshine <sunshine@sunshineco.com> wrote:
>>> +Caveats:
>>> +
>>> +1. Many of the placeholders in "PRETTY FORMATS" are designed to work
>>> +   specifically on commit objects: when non-commit objects are
>>> +   supplied, those placeholders won't work.
>>
>> Should "won't work" be expanded upon? It's not clear if this means
>> that git will outright crash, or if it will abort with an appropriate
>> error message, or if the directive will be displayed as-is or removed
>> from the output.
>
> It will be displayed as-is but that's a bit inconsistent: %(unknown)
> prints error and aborts while %unknown simply produces %unknown. The
> latter is how "git log --format" does it. But I think we could make
> for-each-ref --pretty to do the former for %unknown. It'll be
> consistent with %(unknown) and we do not need to elaborate much (it's
> pretty obvious when it does not work).

The Caveat Eric is asking about talks about "what happens to a %(field) that only makes sense for a commit when showing a ref pointing at a non-commit?", but you are answering "what happend to a %(invalidfield) that is not defined", aren't you?

IIRC, the reason we show literal from "log --format" is to make it easier for the person who misspelt %placeholder to spot it in the output, and also make it easier for the person who use %placeholder meant for newer versions of Git with an older one. It would be a bit unnice to die for the latter, especially if the format string is in a script or something.

To "log --format", all input objects are expected to be commits, so it does not have the "what does %(authordate) give when given a blob" issue.

But for "for-each-ref --format", it is perfectly normal that you may feed a non-commit; it makes the mechanism unusable if you errored out %(authordate) when showing a ref that points at a tag, doesn't it? Substituting an inapplicable placeholder with an empty string would be an easies way out, unless it learns a flexible/elaborate conditional formatting mechanism, I would think.

Previous: Duy NguyenNext: Duy Nguyen
Message 14 of 30 in “Towards a more awesome git-branch”
  1. 00/15 Towards a more awesome git-branchRamkumar Ramachandra, Jun 4, 2013
  2. 01/15 for-each-ref, quote: convert *_quote_print -> *_quote_bufRamkumar Ramachandra, Jun 4, 2013
  3. 02/15 for-each-ref: don't print out elements directlyRamkumar Ramachandra, Jun 4, 2013
  4. Junio C HamanoJun 4, 2013
  5. Duy NguyenJun 4, 2013
  6. 03/15 tar-tree: remove dependency on sq_quote_print()Ramkumar Ramachandra, Jun 4, 2013
  7. 04/15 quote: remove sq_quote_print()Ramkumar Ramachandra, Jun 4, 2013
  8. 05/15 pretty: extend pretty_print_context with callbackRamkumar Ramachandra, Jun 4, 2013
  9. 06/15 pretty: limit recursion in format_commit_one()Ramkumar Ramachandra, Jun 4, 2013
  10. 07/15 pretty: allow passing NULL commit to format_commit_message()Ramkumar Ramachandra, Jun 4, 2013
  11. 08/15 for-each-ref: get --pretty using format_commit_messageRamkumar Ramachandra, Jun 4, 2013
  12. Eric SunshineJun 4, 2013
  13. Duy NguyenJun 5, 2013
  14. Junio C HamanoJun 5, 2013
  15. Duy NguyenJun 6, 2013
  16. 09/15 for-each-ref: teach verify_format() about pretty's syntaxRamkumar Ramachandra, Jun 4, 2013
  17. 10/15 for-each-ref: introduce format specifier %>(*) and %<(*)Ramkumar Ramachandra, Jun 4, 2013
  18. Duy NguyenJun 4, 2013
  19. Ramkumar RamachandraJun 5, 2013
  20. Duy NguyenJun 5, 2013
  21. 11/15 for-each-ref: introduce %(HEAD) markerRamkumar Ramachandra, Jun 4, 2013
  22. 12/15 for-each-ref: introduce %(upstream:track[short])Ramkumar Ramachandra, Jun 4, 2013
  23. Eric SunshineJun 4, 2013
  24. 13/15 for-each-ref: improve responsiveness of %(upstream:track)Ramkumar Ramachandra, Jun 4, 2013
  25. 14/15 pretty: introduce get_pretty_userformatRamkumar Ramachandra, Jun 4, 2013
  26. 15/15 for-each-ref: use get_pretty_userformat in --prettyRamkumar Ramachandra, Jun 4, 2013
  27. Duy NguyenJun 4, 2013
  28. Eric SunshineJun 4, 2013
  29. Duy NguyenJun 4, 2013
  30. Ramkumar RamachandraJun 5, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.