如何让 git-log 颜色格式字符串中的多行占位符值?

How to let git-log color multiline placeholder values in format string?

给定以下 git-log 命令:

git log --max-count=1 --format='format:%C(cyan)%GG'

只有 %GG 多行占位符值的第一行被着色。但是我想让下面的文本使用相同的颜色,直到当前选择的颜色被下一个 %C(...) 语句重置。我怎样才能做到这一点?

我在 Fedora Desktop 21 上使用 Git 版本 2.1.0。

我同时想到的一个解决方案是以下 Bash 脚本片段:

function foobar {
  local -r committish="${1:-HEAD}"
  local -r tput_app="$(type -p tput)"
  if [[ -n $tput_app ]]; then
    local -r color_cyan="$("$tput_app" setaf 6)"
    local line=''
    while read -r line; do
      printf '%s\n' "$color_cyan$line"
    done < <(git log --max-count=1 --format='format:%GG' "$committish")
    printf '%s\n' "$("$tput_app" sgr0)"
  else
    git log --max-count=1 --format='format:%GG' "$committish"
  fi
}

这个解决方案并不令我满意,因为我通常更喜欢简单的解决方案来解决简单的问题。但至少对我有用。