Git Поддержка цветового интерфейса для 256 цветов?

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

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

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

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

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

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

8
задан CJD14 04 февр. '14 в 2:00
источник поделиться

2 ответов

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

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

Поддерживаемые атрибуты: bold, dim, ul, blink и reverse.

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

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

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

7
ответ дан Jan Včelák 27 марта '14 в 1:13
источник поделиться

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


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

docs: описать режим 256-цветного режима ANSI

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

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

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


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

config: исправить разбор "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 barfed, а не потому, что мы когда-либо пытались разобрать цвет).

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

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 цветов недостаточно, вы можете импортировать еще больше цветов.
См. commit 17a4be2 (Git 2.3.0, Q1 2015)

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

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

git log --format="%h%C(#ff69b4)%d%C(reset) %s"
4
ответ дан VonC 22 дек. '14 в 23:07
источник поделиться

Другие вопросы по меткам