2011-05-07 9 views
9

En Git Bash en Windows 7, ocasionalmente sucede algo que hace que la codificación de color falle cuando se ejecutan escenarios de pepino o especificaciones rspec.En Git Bash en Windows 7, los colores se muestran como código al ejecutar Cucumber o rspec

De vez en cuando, se fija aleatoriamente (aleatoriamente == No sé lo que hice para que se solucione).

Así que cuando corro:

$ bundle exec cucumber features 

O

$ bundle exec rspec spec 

en lugar de ver esto en los colores:

...... 

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

veo algo como:

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

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

Sé que estas son las representaciones de código de los colores, pero no sé por qué deja de mostrar los colores ni sé cómo solucionarlo. ¿Qué me estoy perdiendo?


salida de --list git config:

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 
+1

¿Qué salida produce "git config --list"? – ralphtheninja

Respuesta

1

prueba a instalar la gema win32console.

gem install win32console 
+1

Lo había hecho anteriormente. No funcionó Intenté desinstalar y volver a instalar la gema, pero fue en vano. – y0mbo

+0

¿Alguna vez resolvió esto? ¿Estás usando una máquina de 64 bits? Estoy teniendo el mismo problema con el cmd básico para Windows. Es malditamente irritante ... –

+0

@RichardFortune - la gema no ayuda con esto. Necesitarás (a) instalar ANSICON (Ver la respuesta de @corg), o (2) usar un shell que no sea cmd: Console2, bash y ConEmu son algunos de los que debes tener en cuenta. Yo uso ConEmu y me encanta. A otros les encanta la consola 2. – aenw

2

Yo uso @ aslakhellesoy's "wac" project. Es un poco molesto porque tienes que recordar canalizar tus comandos a través de él. Pero es lo único que he visto funcionar.

https://github.com/aslakhellesoy/wac

+1

Curiosamente, WAC se deshace de los códigos de color, pero no muestra el color. – y0mbo

9

En las ventanas, Bash Git utiliza el construido en el terminal que está enrollado en el símbolo del cmd. Si instala cygwin puede usar el emulador de terminal mintty (instalado en el menú de inicio como "Cygwin Terminal").

¿Por qué es esto importante? Porque el término del indicador de Windows cmd no interpreta secuencias de escape ANSI. Utiliza el esquema de control de color M $ en su lugar. Si el programa que está utilizando no cambia a este esquema en Windows o pasa por un filtro, verá los caracteres de escape sin formato. La consola mintty de Cygwin tiene soporte completo para estos códigos.

Si los colores suelen funcionar, esto es un error en pepino/rspec de porting. Alguien perdió un cheque por las ventanas al imprimir los colores o algo así. Hasta que esto se arregla, una solución es el siguiente script en 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) 

Usted tendrá que instalar la biblioteca colorama para esto. A continuación, sólo tubería de su salida a través de la secuencia de comandos:

$ bundle exec rspec spec | colorFilter.py 
+0

¿No hay una manera de hacer que los colores se muestren en el shell que se usa de forma predeterminada cuando se instala msysgit (Git Bash)? –

+0

@tnorthcutt El problema no es el [shell] (https://en.wikipedia.org/wiki/Shell_%28computing%29), sino el [término] (https://en.wikipedia.org/wiki/Term_ % 28computers% 29). A menos que ejecute el emulador x-windows empaquetado con cygwin, * y * uno de los emuladores de terminal, entonces está atascado con el emulador de terminal de Windows. Eso está empaquetado * junto * con el shell cmd. Como no puede cambiar los emuladores, y ahí es donde se encuentra el problema, debe convertir las secuencias de escape de ANSI en comandos de Windows como se indica. –

8

Después de varios intentos infructuosos para obtener algunos colores en mi Windows 7 terminales bash (msysgit con consola2), me encontré con el blog de Jason Karns 'ANSI color in Windows Shells'.

Todo lo que tenía que hacer era unzip ansicon.exe a una carpeta permanente y ejecutar a través de cmd en esa carpeta:

ansicon.exe -i 

Todos los registros de bash ahora tienen colores en lugar de la [[0m 32m o etiquetas, Woo!

+0

¿Cómo puedo hacer que funcione siempre? En este momento tengo que hacer eso antes de ejecutar el git bash cada vez :( – naneri

+0

Para instalar de forma permanente el uso: 'ansicon.exe -i' –

0

He arreglado esto con Git para Windows (V2.5.3) que se ejecuta dentro de Git PowerShell (en la consola normales de ventana) mediante el establecimiento de tres variables de entorno:

  1. TERM=msys
  2. PAGER='"C:\Program Files\Git\usr\bin\less.exe"' (tener en cuenta las comillas dobles necesitan ser parte del valor).
  3. Incluyendo --RAW-CONTROL-CHARS en el valor de LESS s (con mis otras preferencias: --LONG-PROMPT --no-init --quit-if-one-screen --RAW-CONTROL-CHARS).
1

He tenido el mismo pb, parece que si desarma la variable de entorno TERM funciona de nuevo.

+0

intenté todo lo anterior y solo tu respuesta me ayudó ... – naneri

0

Las sugerencias de Richard, incluso en cmd.exe (no en PowerShell), funcionaron para mí.

estoy corriendo: Windows 7 (64-bit) and Git-Bash: GNU bash, version 3.1.23(6)-release (i686-pc-msys)

que tenía que cambiar la ubicación de PAGERpartido de mi sistema.

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