Git for-each-ref с цветной строкой формата
Я использую git for-each-ref
как псевдоним git для отображения имени ветки и объекта последнего фиксации в этой ветке. Тем не менее, трудно определить, где заканчивается название ветки, и тема сообщения о фиксации, поэтому я пытаюсь разобрать название ветки, чтобы легче рассказать о различии между ними. Ниже приведен рабочий псевдоним без цвета:
[alias]
logbranch = for-each-ref --sort=-committerdate refs/heads/ --format='%(refname:short) %(subject)'
Чтобы добавить цвет, я попытался использовать escape-последовательности оболочки (я использую bash) следующим образом:
[alias]
logbranch = for-each-ref --sort=-committerdate refs/heads/ --format='[\033[0;31m]%(refname:short)[\e[m] %(subject)'
который дает мне ошибку конфигурации git. Я также попытался заменить одиночные кавычки двойными кавычками и избежать квадратных скобок, но не кубиками.
Идеи?
Ответы
Ответ 1
Я не вижу ничего на странице руководства for-each-ref
, которая предполагает, что она поддерживает обратные слешковые последовательности, такие как \033
. Если вы замените символ \033
(и \e
) буквенным символом escape, он, похоже, работает нормально.
Cupcake говорит, что for-each-ref
также поддерживает %xx
hex escape-последовательности, которые выглядят так:
[alias]
logbranch = "for-each-ref --sort=-committerdate refs/heads/ --format='[%1B[0;31m]%(refname:short)[%1B[m] %(subject)' "
Это также отлично работает в моей системе.
Ответ 2
Git 1.9/2.0 (Q1 2014) представит форматирование цвета для git for-each-ref
.
См. commit fddb74c из Рамкумар Рамачандра (artagnon):
for-each-ref
: введите %(color:...)
для цвета
Усовершенствуйте 'git for-each-ref
' с настройками форматирования цвета.
Теперь вы можете использовать следующий формат for-each-ref:
%(color:green)%(refname:short)%(color:reset)
где имена цветов описаны в color.branch.*
.
С Git 2.15 (Q4 2017) вы сможете включить или отключить эти цвета.
См. commit 0c88bf5 (03 октября 2017 г.) Джефф Кинг (peff
).
(слияние 04 октября 2017 г.)
предоставить параметр --color
для всех пользователей фильтра ref-filter
Когда ref-фильтр узнал о want_color() в 11b087a(ref-filter
: проконсультируйтесь с want_color() перед испусканием цветов, 2017-07-13), стало полезно уметь выключать цвета и для конкретных команд. Для git-branch
вы можете сделать это с --color
/--no-color
.
Но для git-for-each-ref
и git-tag
, другие пользователи ref-filter, у вас нет опции, кроме как настроить настройку конфигурации "color.ui
". Давайте дадим обеим командам обычные параметры командной строки цвета.
Это немного более очевидно как метод переопределения конфигурации. И он также подготавливает нас к изменению "always
" (так что нам по-прежнему остается способ заставить цвет, когда наш вывод переходит к нетерминальному).