This is copy-paste replacement for the last commit. (Most probably it is white space damaged) I'm not sure, is it's worth it ? If yes, I can send a proper patch later. git show HEAD commit 3ac551127d51cd59b24f49729d9ce4dd011a09a1 Author: Junio C Hamano <gitster@xxxxxxxxx> Date: Wed Mar 23 15:57:42 2016 -0700 pretty-print: Add the config variable log.tabwidth 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 config variable log.tabwidth to allow this. $ git -c log.tabwidth=0 log [--pretty=medium] would not expand. The non-expansion can be made permanent: $ git config log.tabwidth 0 Or the TAB width can be changed like this: $ git config log.tabwidth 4 diff --git a/Documentation/config.txt b/Documentation/config.txt index 2cd6bdd..611f5e4 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -1915,6 +1915,10 @@ log.showRoot:: Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which normally hide the root commit will now show it. True by default. +log.tabWidth:: + Sets the width of a TAB. If 0, no TAB expansion is done. + 8 by default. + log.mailmap:: If true, makes linkgit:git-log[1], linkgit:git-show[1], and linkgit:git-whatchanged[1] assume `--use-mailmap`. diff --git a/cache.h b/cache.h index b829410..fd115d2 100644 --- a/cache.h +++ b/cache.h @@ -649,6 +649,7 @@ extern int ignore_case; extern int assume_unchanged; extern int prefer_symlink_refs; extern int log_all_ref_updates; +extern unsigned log_tab_width; extern int warn_ambiguous_refs; extern int warn_on_object_refname_ambiguity; extern int shared_repository; diff --git a/config.c b/config.c index 9ba40bc..e6aadfe 100644 --- a/config.c +++ b/config.c @@ -1030,6 +1030,11 @@ int git_default_config(const char *var, const char *value, void *dummy) pack_size_limit_cfg = git_config_ulong(var, value); return 0; } + + if (!strcmp(var, "log.tabwidth")) { + log_tab_width = (unsigned)git_config_ulong(var, value); + return 0; + } /* Add other config variables here and to Documentation/config.txt. */ return 0; } diff --git a/environment.c b/environment.c index 6dec9d0..3c72b44 100644 --- a/environment.c +++ b/environment.c @@ -21,6 +21,7 @@ int ignore_case; int assume_unchanged; int prefer_symlink_refs; int is_bare_repository_cfg = -1; /* unspecified */ +unsigned log_tab_width = 8; int log_all_ref_updates = -1; /* unspecified */ int warn_ambiguous_refs = 1; int warn_on_object_refname_ambiguity = 1; diff --git a/pretty.c b/pretty.c index 5a33b7e..1d92c55 100644 --- a/pretty.c +++ b/pretty.c @@ -1667,7 +1667,7 @@ static void strbuf_add_tabexpand(struct strbuf *sb, strbuf_add(sb, line, tab - line); /* .. and the de-tabified tab */ - strbuf_addchars(sb, ' ', 8-(width & 7)); + strbuf_addchars(sb, ' ', log_tab_width - (width % log_tab_width)); /* Skip over the printed part .. */ linelen -= 1+tab-line; @@ -1692,7 +1692,7 @@ static void pp_handle_indent(struct pretty_print_context *pp, const char *line, int linelen) { strbuf_addchars(sb, ' ', indent); - if (pp->expand_tabs_in_log) + if (pp->expand_tabs_in_log && log_tab_width) strbuf_add_tabexpand(sb, line, linelen); else strbuf_add(sb, line, linelen); diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh index 96233ca..9235a2e 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 -c log.tabwidth=0 log HEAD >log && GIT_DIR=non-existing git shortlog -w <log >out && test_cmp expect out ' -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html