Re: [PATCHv3] git-log --format: Add %B tag with %B(x) option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 22, 2009, 19:41 UTC
- Message-ID
- <7vfxaercma.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <1253354304-13117-1-git-send-email-heipei@hackvalue.de>
Johannes Gilger <heipei@hackvalue.de> writes:
Show 49 quoted lines
> Since one can simply use spaces to indent any other --pretty field we
> should have an option to do that with the body too.
>
> Also the %B flag strips the trailing newlines, to enable more compact
> display.
>
> Signed-off-by: Johannes Gilger <heipei@hackvalue.de>
> ---
> Changes to PATCHv2:
> - Make %B() strict: Only nonnegative integers are allowed between the brackets,
> everything else yields the placemark itself as output to indicate a wrong
> argument. This also goes for an empty argument.
>
> Documentation/pretty-formats.txt | 2 ++
> pretty.c | 29 ++++++++++++++++++++++++-----
> 2 files changed, 26 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
> index 2a845b1..533bc5e 100644
> --- a/Documentation/pretty-formats.txt
> +++ b/Documentation/pretty-formats.txt
> @@ -733,7 +737,20 @@ static size_t format_commit_item(struct strbuf *sb, const char *placeholder,
> format_sanitized_subject(sb, msg + c->subject_off);
> return 1;
> case 'b': /* body */
> - strbuf_addstr(sb, msg + c->body_off);
> + strbuf_addstr(sb, body);
> + return 1;
> + case 'B': /* body without trailing newline */
> + if (end) {
> + char *endp = NULL;
> + int indent = strtol(placeholder + 2, &endp, 10);
> + if (placeholder + 2 == endp || *endp != ')' || indent < 0)
> + return 0;
> + pp_remainder(CMIT_FMT_MEDIUM, &body, sb, indent);
> + strbuf_rtrim(sb);
> + return end - placeholder + 1;
> + }
> + strbuf_addstr(sb, body);
> + strbuf_rtrim(sb);
> return 1;
> }
> return 0; /* unknown placeholder */
> @@ -875,6 +892,8 @@ void pp_remainder(enum cmit_fmt fmt,
> }
> first = 0;
>
> + if (indent < 0)
> + indent = 0;I'd move this check to the caller; other than that and some other small style issues I think this round is Ok.
Show 5 quoted lines
> strbuf_grow(sb, linelen + indent + 20);
> if (indent) {
> memset(sb->buf + sb->len, ' ', indent);
> --
> 1.6.5.rc1.20.geb7d9