[PATCH v3 5/5] pretty-print: teach "--no-expand-tabs" option to "git log"
From: Junio C Hamano <hidden>
Date: 2016-06-15 23:08:55
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
The output formats of "git log" that indent the log message by 4
spaces have been updated to expand tabs by default in previous
steps, without a way to restore the original behaviour.
Introduce a new "--no-expand-tabs" option to allow this.
As the effect of options is cumulative,
$ git log [--pretty=medium] --no-expand-tabs
would not expand, while this invocation
$ git log --no-expand-tabs --pretty[=medium]
by virtue of having --pretty later on the command line, expands tabs
again.
We _could_ introduce --expand-tabs option as well, to allow
$ git log --pretty=email --expand-tabs
but we don't bother, as the output format that do not expand tabs by
default are mostly meant to transfer the contents as literally as
possible.
Signed-off-by: Junio C Hamano <redacted>
---
---
Documentation/pretty-options.txt | 6 ++++++
revision.c | 2 ++
t/t4201-shortlog.sh | 4 ++--
3 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 4b659ac..069b927 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt@@ -42,6 +42,12 @@ people using 80-column terminals. verbatim; this means that invalid sequences in the original commit may be copied to the output. +--no-expand-tabs:: + The formats that indent the log message by 4 spaces + (i.e. 'medium', 'full', and 'fuller') by default show tabs + in the log message expanded. This option disables the + expansion. + ifndef::git-rev-list[] --notes[=<ref>]:: Show the notes (see linkgit:git-notes[1]) that annotate the
diff --git a/revision.c b/revision.c
index 8827d9f..b0d2a36 100644
--- a/revision.c
+++ b/revision.c@@ -1916,6 +1916,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->verbose_header = 1; revs->pretty_given = 1; get_commit_format(arg+9, revs); + } else if (!strcmp(arg, "--no-expand-tabs")) { + revs->expand_tabs_in_log = 0; } else if (!strcmp(arg, "--show-notes") || !strcmp(arg, "--notes")) { revs->show_notes = 1; revs->show_notes_given = 1;
diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh
index d1e8259..2fec948 100755
--- a/t/t4201-shortlog.sh
+++ b/t/t4201-shortlog.sh@@ -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 --no-expand-tabs HEAD >log && GIT_DIR=non-existing git shortlog -w <log >out && test_cmp expect out '
--
2.8.0-rc4-198-g3f6b64c