Web lists-archives.com

[PATCH 0/15] making user-format colors conditional on config/tty




This is a cleanup of the patch I posted last October:

  https://public-inbox.org/git/20161010151517.6wszhuyp57yfncaj@xxxxxxxxxxxxxxxxxxxxx/

The general idea is that it's rather confusing that "%C(red)" in a
pretty-print format does not currently respect color.ui, --no-color, or
the usual isatty check on stdout. This series changes that. Note that
this is a backwards-incompatible change, but the general sentiment in
that earlier thread seemed to be that the existing behavior is arguably
buggy. See patch 14 for more discussion.

The patch stalled back then because I wanted to make sure that
ref-filter's color placeholders behaved the same. That required some
refactoring which conflicted badly with kn/ref-filter-branch-list. Now
that it has graduated, I was able to rebase on top.

This version also takes into account feedback from the original thread.
And as I added tests, it surfaced a few corner cases around color config
that I've dealt with here.  The last two patches are the most
interesting bits.

  [01/15]: check return value of verify_ref_format()
  [02/15]: docs/for-each-ref: update pointer to color syntax
  [03/15]: t: use test_decode_color rather than literal ANSI codes
  [04/15]: ref-filter: simplify automatic color reset
  [05/15]: ref-filter: abstract ref format into its own struct
  [06/15]: ref-filter: move need_color_reset_at_eol into ref_format
  [07/15]: ref-filter: provide a function for parsing sort options
  [08/15]: ref-filter: make parse_ref_filter_atom a private function
  [09/15]: ref-filter: factor out the parsing of sorting atoms
  [10/15]: ref-filter: pass ref_format struct to atom parsers
  [11/15]: color: check color.ui in git_default_config()
  [12/15]: for-each-ref: load config earlier
  [13/15]: rev-list: pass diffopt->use_colors through to pretty-print
  [14/15]: pretty: respect color settings for %C placeholders
  [15/15]: ref-filter: consult want_color() before emitting colors

 Documentation/git-for-each-ref.txt |   6 +-
 Documentation/pretty-formats.txt   |  18 ++++--
 builtin/branch.c                   |  21 +++---
 builtin/clean.c                    |   3 +-
 builtin/for-each-ref.c             |  27 ++++----
 builtin/grep.c                     |   2 +-
 builtin/rev-list.c                 |   1 +
 builtin/show-branch.c              |   2 +-
 builtin/tag.c                      |  61 ++++++------------
 builtin/verify-tag.c               |  14 ++--
 color.c                            |   8 ---
 config.c                           |   4 ++
 diff.c                             |   3 -
 pretty.c                           |  27 ++++++--
 ref-filter.c                       | 108 ++++++++++++++++++-------------
 ref-filter.h                       |  30 +++++++--
 t/t3203-branch-output.sh           |  31 +++++++++
 t/t4207-log-decoration-colors.sh   |  22 +++----
 t/t6006-rev-list-format.sh         | 129 ++++++++++++++++++++++++-------------
 t/t6300-for-each-ref.sh            |  39 +++++++----
 t/t7004-tag.sh                     |  25 +++++++
 t/test-lib-functions.sh            |   1 +
 22 files changed, 362 insertions(+), 220 deletions(-)

-Peff