[PATCH 1/2] show: suppress extra newline when showing annotated tag
- From
Jeff King <peff@peff.net>
- Date
- Jul 17, 2009, 23:18 UTC
- Message-ID
- <20090717231834.GA13624@coredump.intra.peff.net>
- In-Reply-To
- <20090717231622.GA13511@coredump.intra.peff.net>
When showing a tag, our header parsing finishes with the offset pointing to the newline separating the tag header from the tag body. This means that the printed body will always start with a newline.
However, we also add an extra newline when printing the tagger information. This leads to an ugly double-newline:
$ git show v1.6.3
tag v1.6.3
Tagger: Junio C Hamano <gitster@pobox.com>
Date: Wed May 6 18:16:47 2009 -0700 GIT 1.6.3
-----BEGIN PGP SIGNATURE-----
...This patch removes the extra newline from the end of the tagger headers. This is a better solution than suppressing the separator newline, because it retains the behavior for tags which have no tagger. E.g., "git show v0.99" will continue to look like:
$ git show v0.99
tag v0.99 Test-release for wider distribution.
...Signed-off-by: Jeff King <peff@peff.net> --- I tried to consider the output for real-world cases. In theory, you could have a corrupted tag with not only no body, but no newline separator. Then it would display as:
tag foo commit ...
with no extra newline. But since nothing should be generating such a tag, I don't think it is a problem.
builtin-log.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/builtin-log.c b/builtin-log.c index 0c2fa0a..b05796d 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -257,7 +257,7 @@ static void show_tagger(char *buf, int len, struct rev_info *rev) pp_user_info("Tagger", rev->commit_format, &out, buf, rev->date_mode, git_log_output_encoding ? git_log_output_encoding: git_commit_encoding); - printf("%s\n", out.buf); + printf("%s", out.buf); strbuf_release(&out); }
-- 1.6.4.rc1.174.g317bf.dirty