All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: [PATCH 4/4] pretty-print: add --pretty=noexpand
Date: Thu, 17 Mar 2016 16:16:21 -0700	[thread overview]
Message-ID: <xmqqoaacy9tm.fsf_-_@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <xmqq37rozoic.fsf_-_@gitster.mtv.corp.google.com> (Junio C. Hamano's message of "Thu, 17 Mar 2016 16:13:47 -0700")

It is reasonable for tweak the default output mode for "git log" to
untabify the commit log message, it sometimes may be necessary to
see the output without tab expansion.

Invent a new --pretty option to do this.  Use this to unbreak the
test breakages, where "git shortlog" and output are tested.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Documentation/pretty-formats.txt | 10 ++++++++++
 Documentation/pretty-options.txt |  2 +-
 commit.h                         |  1 +
 pretty.c                         | 12 +++++++++---
 t/t4201-shortlog.sh              |  6 +++---
 5 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index 671cebd..173b932 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -39,6 +39,16 @@ This is designed to be as compact as possible.
 
 	      <title line>
 
+	      <full commit message, tab-expanded>
+
+* 'noexpand'
+
+	  commit <sha1>
+	  Author: <author>
+	  Date:   <author date>
+
+	      <title line>
+
 	      <full commit message>
 
 * 'full'
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 4b659ac..7032b1a 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -3,7 +3,7 @@
 
 	Pretty-print the contents of the commit logs in a given format,
 	where '<format>' can be one of 'oneline', 'short', 'medium',
-	'full', 'fuller', 'email', 'raw', 'format:<string>'
+	'full', 'fuller', 'email', 'raw', 'noexpand', 'format:<string>'
 	and 'tformat:<string>'.  When '<format>' is none of the above,
 	and has '%placeholder' in it, it acts as if
 	'--pretty=tformat:<format>' were given.
diff --git a/commit.h b/commit.h
index 5d58be0..d511c61 100644
--- a/commit.h
+++ b/commit.h
@@ -126,6 +126,7 @@ enum cmit_fmt {
 	CMIT_FMT_RAW,
 	CMIT_FMT_MEDIUM,
 	CMIT_FMT_DEFAULT = CMIT_FMT_MEDIUM,
+	CMIT_FMT_NOEXPAND,
 	CMIT_FMT_SHORT,
 	CMIT_FMT_FULL,
 	CMIT_FMT_FULLER,
diff --git a/pretty.c b/pretty.c
index 717ceed..8b533dc 100644
--- a/pretty.c
+++ b/pretty.c
@@ -89,6 +89,7 @@ static void setup_commit_formats(void)
 	struct cmt_fmt_map builtin_formats[] = {
 		{ "raw",	CMIT_FMT_RAW,		0 },
 		{ "medium",	CMIT_FMT_MEDIUM,	0 },
+		{ "noexpand",	CMIT_FMT_NOEXPAND,	0 },
 		{ "short",	CMIT_FMT_SHORT,		0 },
 		{ "email",	CMIT_FMT_EMAIL,		0 },
 		{ "fuller",	CMIT_FMT_FULLER,	0 },
@@ -1685,11 +1686,16 @@ static void strbuf_add_tabexpand(struct strbuf *sb,
  * the whole line (without the final newline), after
  * de-tabifying.
  */
-static void pp_handle_indent(struct strbuf *sb, int indent,
+static void pp_handle_indent(struct pretty_print_context *pp,
+			     struct strbuf *sb,
+			     int indent,
 			     const char *line, int linelen)
 {
 	strbuf_addchars(sb, ' ', indent);
-	strbuf_add_tabexpand(sb, line, linelen);
+	if (pp->fmt == CMIT_FMT_MEDIUM)
+		strbuf_add_tabexpand(sb, line, linelen);
+	else
+		strbuf_add(sb, line, linelen);
 }
 
 void pp_remainder(struct pretty_print_context *pp,
@@ -1716,7 +1722,7 @@ void pp_remainder(struct pretty_print_context *pp,
 
 		strbuf_grow(sb, linelen + indent + 20);
 		if (indent)
-			pp_handle_indent(sb, indent, line, linelen);
+			pp_handle_indent(pp, sb, indent, line, linelen);
 		else
 			strbuf_add(sb, line, linelen);
 		strbuf_addch(sb, '\n');
diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index 987b708..34a9fed 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh
@@ -93,7 +93,7 @@ test_expect_success 'output from user-defined format is re-wrapped' '
 	test_cmp expect log.predictable
 '
 
-test_expect_failure !MINGW 'shortlog wrapping' '
+test_expect_success !MINGW 'shortlog wrapping' '
 	cat >expect <<\EOF &&
 A U Thor (5):
       Test
@@ -114,8 +114,8 @@ EOF
 	test_cmp expect out
 '
 
-test_expect_failure !MINGW 'shortlog from non-git directory' '
-	git log HEAD >log &&
+test_expect_success !MINGW 'shortlog from non-git directory' '
+	git log --pretty=noexpand HEAD >log &&
 	GIT_DIR=non-existing git shortlog -w <log >out &&
 	test_cmp expect out
 '
-- 
2.8.0-rc3-175-g64dcf62

  parent reply	other threads:[~2016-03-17 23:16 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-16 16:29 [PATCH] pretty-print: de-tabify indented logs to make things line up properly Linus Torvalds
2016-03-16 16:52 ` Linus Torvalds
2016-03-16 18:01 ` Junio C Hamano
2016-03-16 18:21   ` Linus Torvalds
2016-03-16 19:32     ` Junio C Hamano
2016-03-16 19:47       ` Junio C Hamano
2016-03-16 19:59         ` Linus Torvalds
2016-03-16 21:37           ` Junio C Hamano
2016-03-16 22:04             ` Linus Torvalds
2016-03-17 23:13               ` [PATCH v2 1/4] " Junio C Hamano
2016-03-17 23:15                 ` [PATCH v2 2/4] pretty-print: simplify the interaction between pp_handle_indent() and its caller Junio C Hamano
2016-03-17 23:15                 ` [PATCH v2 3/4] pretty-print: further abstract out pp_handle_indent() Junio C Hamano
2016-03-17 23:16                 ` Junio C Hamano [this message]
2016-03-17 23:23                   ` [PATCH 4/4] pretty-print: add --pretty=noexpand Linus Torvalds
2016-03-17 23:40                     ` Junio C Hamano
2016-03-18  5:08                   ` Jeff King
2016-03-18  5:36                     ` Linus Torvalds
2016-03-18  5:55                       ` Jeff King
2016-03-18  5:44                     ` Junio C Hamano
2016-03-23 23:23                       ` [PATCH v3 0/5] Expanding tabs in "git log" output Junio C Hamano
2016-03-23 23:23                         ` [PATCH v3 1/5] pretty-print: de-tabify indented logs to make things line up properly Junio C Hamano
2016-03-23 23:23                         ` [PATCH v3 2/5] pretty-print: simplify the interaction between pp_handle_indent() and its caller Junio C Hamano
2016-03-23 23:23                         ` [PATCH v3 3/5] pretty-print: further abstract out pp_handle_indent() Junio C Hamano
2016-03-23 23:23                         ` [PATCH v3 4/5] pretty-print: limit expand-tabs to selected --pretty formats Junio C Hamano
2016-03-23 23:23                         ` [PATCH v3 5/5] pretty-print: teach "--no-expand-tabs" option to "git log" Junio C Hamano
2016-03-23 23:47                         ` [PATCH v3 0/5] Expanding tabs in "git log" output Linus Torvalds
2016-03-24  0:58                         ` Jeff King
2016-03-24  5:17                           ` Junio C Hamano
2016-03-24  7:05                         ` Torsten Bögershausen
2016-03-24 15:37                           ` Junio C Hamano
2016-03-24 18:22                           ` Junio C Hamano
2016-03-25  9:34                             ` Torsten Bögershausen
2016-03-25 14:13                               ` Torsten Bögershausen
2016-03-25 16:41                                 ` Junio C Hamano
2016-03-25 16:25                               ` Junio C Hamano
2016-03-29 23:15                         ` [PATCH v4 0/3] " Junio C Hamano
2016-03-29 23:15                           ` [PATCH v4 1/3] pretty: expand tabs in indented logs to make things line up properly Junio C Hamano
2016-03-30  0:17                             ` Eric Sunshine
2016-03-30 18:20                               ` Junio C Hamano
2016-03-29 23:15                           ` [PATCH v4 2/3] pretty: enable --expand-tabs by default for selected pretty formats Junio C Hamano
2016-03-30  1:38                             ` Jeff King
2016-03-30 19:18                               ` Junio C Hamano
2016-03-29 23:15                           ` [PATCH v4 3/3] pretty: allow tweaking tabwidth in --expand-tabs Junio C Hamano
2016-04-05  0:58                           ` [PATCH v5 0/4] Expanding tabs in "git log" output Junio C Hamano
2016-04-05  0:58                             ` [PATCH v5 1/4] pretty: expand tabs in indented logs to make things line up properly Junio C Hamano
2016-04-05  0:58                             ` [PATCH v5 2/4] pretty: enable --expand-tabs by default for selected pretty formats Junio C Hamano
2016-04-05  0:58                             ` [PATCH v5 3/4] pretty: allow tweaking tabwidth in --expand-tabs Junio C Hamano
2016-04-05  0:58                             ` [PATCH v5 4/4] pretty: test --expand-tabs Junio C Hamano
2016-04-05  1:10                               ` Eric Sunshine
2016-04-05  1:47                                 ` Jeff King
2016-04-05  6:25                                   ` Junio C Hamano
2016-04-05  1:52                               ` Jeff King
2016-04-05  6:32                                 ` Junio C Hamano
2016-04-05  7:13                                 ` Perry Hutchison
2016-04-05  1:53                             ` [PATCH v5 0/4] Expanding tabs in "git log" output Jeff King
2016-03-16 19:50       ` [PATCH] pretty-print: de-tabify indented logs to make things line up properly Linus Torvalds
2016-03-16 21:55         ` Junio C Hamano

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=xmqqoaacy9tm.fsf_-_@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.