Поддержка Git Color UI для 256 цветов?

Я пытаюсь раскрасить свой вывод Git, используя собственную цветовую палитру XTerm 256. Есть какой-либо способ сделать это? Я не могу заставить его работать.

например в .gitconfig,

[color]
  ui = auto
[color 'branch']
  local = colour33
  remote = colour46
  current = colour27

И т.п.
Я знаю, что это форматирование работает, когда вы указываете различные основные цветовые термины; голубой, пурпурный, желтый и атрибуты; тусклый, яркий, уль, жирный и т. д.
Но я просто не могу найти ничего в отношении использования полноцветной палитры, доступной для терминала с 256 цветами, без фактического изменения самих 8 основных цветовых терминов в реальной паллете.
В документации или руководствах нет ничего, что я мог бы найти.
Я знаю, что разные программы, похоже, используют разные синтаксис для определения цвета, поэтому я могу просто использовать неправильный синтаксис или я единственный, кто когда-либо хотел сделать такую ​​вещь.

Я предполагаю git-config будет поддерживать только те основные 8 цветов с различными атрибутами на основе того, что git-config Страница man говорит, так что, если это невозможно, есть ли способ изменить эти цвета в цветовой палитре терминалов, НО только для одной программы, как в этой ситуации, Git? Может быть, Perl-скрипт, который экспортирует эти значения только тогда, когда git-config ссылается на них, но удаляет их как только git-config закончен?

И нет, это не слишком много хлопот, чем стоит. Мне нравится мой eyecandy в терминале, и я бы сделал это сам, если бы смог найти ресурс, который объясняет нечто подобное.

2 ответа

Решение

Синтаксис для цвета: [fg [bg]] [attr]...

Что касается цветов, вы можете использовать именованные (обычный, черный, красный, зеленый, желтый, синий, пурпурный, голубой и белый) или просто номер цвета в палитре 256 без префикса.

Поддерживаемые атрибуты: полужирный, тусклый, ul, мигать и обратный.

Таким образом, ваша конфигурация может выглядеть следующим образом (протестировано с git 1.8.5.3):

[color "branch"]
    local = 33 
    remote = 46
    current = 27

Я заглянул в исходный код git, чтобы найти ответ.

Обратите внимание, что:


  • поддержка цветов теперь задокументирована (январь 2015, Git 2.2.2, commit 0edad17):

документы: описать ANSI 256-цветной режим

Наши спецификации цвета поддерживают расширение ANSI 256 цветов в течение многих лет, но мы никогда не документировали его.

git config Страница man теперь включает в себя:

Цвета (передний план и фон) также могут быть заданы в виде чисел от 0 до 255;
они используют ANSI 256-цветной режим (но учтите, что не все терминалы могут поддерживать это)


  • использование числового значения для цвета будет более надежным с Git 2.2.2 (январь 2015 г.).
    Смотрите коммит d0e08d6 от Джеффа Кинга ( peff ):

конфиг: исправить парсинг git config --get-color some.key -1 "

Большинство параметров командной строки git-config используют OPT_BIT выбрать действие, а затем проанализировать неопциональные аргументы в зависимости от контекста. Тем не мение, --get-color а также --get-colorbool в отличие от остальных вариантов, в том, что они OPT_STRING, принимая имя параметра в качестве параметра.

Обычно это работает, потому что мы затем используем присутствие этих строк, чтобы установить бит действия в любом случае. Но это означает, что анализатор параметров будет продолжать поиск параметров даже после ключа (поскольку он не является необязательным; он является аргументом для параметра). И работает:

git config --get-color some.key -1

(использовать " -1 "как цветовая спецификация по умолчанию) будет barf, утверждая, что" -1 "это не вариант.
Вместо этого мы должны относиться --get-color а также --get-colorbool как биты действия, так же, как --add, --get и все остальные действия, а затем проверьте, что полученные нами неопционные аргументы являются нормальными.
Это устраняет причуды, приведенные выше, и делает эти два варианта такими же, как и все остальные.

Это "исправляет" тест в t/t4026-color.sh, который проверил, что кормление " -2 "как цвет должен потерпеть неудачу (он терпит неудачу, но до этого патча, потому что parseopt сгорел, не потому что мы вообще когда-либо пытались разобрать цвет).

Это также ловит другие ошибки, такие как:

git config --get-color some.key black blue

который ранее молча игнорировал blue " (и теперь будет жаловаться, что вы привели слишком много аргументов).

Однако есть некоторые возможные регрессии.
Теперь мы запрещаем эти, которые в настоящее время делают то, что вы ожидаете:

  # specifying other options after the action
  git config --get-color some.key --file whatever

  # using long-arg syntax
  git config --get-color=some.key

Если 256 цветов недостаточно, вы можете импортировать еще больше цветов.
См. Коммит 17a4be2 (Git 2.3.0, первый квартал 2015 года)

parse_color: поддержка 24-битных значений RGB

Некоторые терминалы (например, XTerm) допускают полные 24-битные спецификации цветов RGB, используя расширение стандартной цветовой схемы ANSI.
Давайте позволим пользователям указывать шестнадцатеричные цвета RGB, включая самую важную функцию ярко-розовых украшений для ссылок:

git log --format="%h%C(#ff69b4)%d%C(reset) %s"
Другие вопросы по тегам