В Git Bash в Windows 7 цвета отображаются как код при запуске Cucumber или rspec - PullRequest
11 голосов
/ 07 мая 2011

В Git Bash в Windows 7 иногда случается что-то, что приводит к сбою цветового кодирования при запуске сценариев с огурцами или спецификаций rspec.

Иногда, это случайно исправлено (где случайно == Я не знаю, что я сделал, чтобы заставить это быть исправлено).

Итак, когда я бегу:

$ bundle exec cucumber features

Или

$ bundle exec rspec spec

вместо того, чтобы видеть это в цвете:

 ......

 3 scenarios (3 passed)
 6 steps (6 passed)

Я вижу что-то вроде:

 [32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m[32m.[0m

 3 scenarios ([32m3 passed[0m)
 6 steps ([32m6 passed[0m)

Я знаю, что это кодовые представления цветов, но я не знаю, почему он перестает отображать цвета, и я не знаю, как это исправить. Чего мне не хватает?


Вывод из git config --list:

core.symlinks=false
core.autocrlf=true
color.diff=auto
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt 
sendemail.smtpserver=/bin/msmtp.exe 
user.name=John Uhri 
user.email= ***** 
color.branch=auto 
color.diff=auto 
color.interactive=auto 
color.status=auto 
core.repositoryformatversion=0 
core.filemode=false 
core.bare=false 
core.logallrefupdates=true
core.symlinks=false 
core.ignorecase=true 
core.hidedotfiles=dotGitOnly 
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* 
branch.master.remote=origin 
branch.master.merge=refs/heads/master

Ответы [ 7 ]

11 голосов
/ 26 марта 2012

В windows git Bash использует встроенный терминал, который отображается в командной строке cmd. Если вы устанавливаете Cygwin, вы можете использовать эмулятор терминала Mintty (устанавливается в меню «Пуск» как «Терминал Cygwin»).

Почему это важно? Поскольку термин командной строки Windows не интерпретирует управляющие последовательности ANSI . Вместо этого он использует схему управления цветом M $. Если используемая вами программа не переключается на эту схему в Windows или не проходит через фильтр, то вы увидите необработанные управляющие символы. Консоль Cygwin mintty полностью поддерживает эти коды.

Если цвета обычно работают, это ошибка в cucumber / rspec при портировании. Кто-то пропустил проверку окон при печати цветов или чего-то еще. Пока это не исправлено, обходится следующий скрипт на python:

#!/usr/bin/env python
# Filter ANSI escapes from stdin to stdout
from __future__ import print_function
from colorama import init
import sys
init()

for line in sys.stdin.readlines():
    print(line)

Для этого вам нужно будет установить библиотеку colorama . Затем просто передайте свой вывод через скрипт:

$ bundle exec rspec spec | colorFilter.py
8 голосов
/ 04 сентября 2013

После ряда бесплодных попыток получить некоторые цвета на моих терминалах bash для Windows 7 (msysgit с console2) я наткнулся на блог Джейсона Карнса «Цвет ANSI в оболочках Windows» .

Все, что мне нужно было сделать, это распаковать ansicon.exe в постоянную папку и запустить с помощью cmd в этой папке:

ansicon.exe -i

Все журналы bash теперь имеют цвета вместо тегов [32m или [0m, woo!

2 голосов
/ 22 ноября 2015

У меня был такой же pb, кажется, что если вы сбросили переменную окружения TERM, она снова заработает.

2 голосов
/ 27 сентября 2015

Я исправил это с помощью Git For Windows (V2.5.3), запустив Git в PowerShell (в обычной консоли Windows), установив три переменные среды:

  1. TERM=msys
  2. PAGER='"C:\Program Files\Git\usr\bin\less.exe"' (обратите внимание, что двойные кавычки должны быть частью значения).
  3. Включая --RAW-CONTROL-CHARS в значение LESS s (то же самое с моими другими предпочтениями: --LONG-PROMPT --no-init --quit-if-one-screen --RAW-CONTROL-CHARS).
2 голосов
/ 07 мая 2011

Я использую проект @ aslakhellesoy "wac".Это немного раздражает, потому что вы должны помнить, чтобы передать свои команды через него.Но это единственное, что я видел на работе.

https://github.com/aslakhellesoy/wac

1 голос
/ 07 мая 2011

Попробуйте установить гем win32console.

gem install win32console
0 голосов
/ 22 июля 2016

Предложения Ричарда, даже в cmd.exe (не PowerShell), работали для меня.

Я бегу: Windows 7 (64-bit) and Git-Bash: GNU bash, version 3.1.23(6)-release (i686-pc-msys)

Мне пришлось изменить местоположение PAGER на соответствует моей системе.

export PAGER='"C:\Program Files (x86)\Git\bin\less.exe"'
...