2012-08-26 18 views
7

Estoy saliendo a un terminal, pero Git no está detectando correctamente que estoy enviando a un terminal, con el propósito de colorear la salida. Mi pregunta es, ¿qué quiere decir realmente git-config (1) cuando dice "los colores se usan solo cuando la salida es a un terminal" (esta frase aparece al final de múltiples descripciones de configuración, como para color.ui y color .rama)? En otras palabras, ¿cómo decide Git si está enviando o no a un terminal y cómo modifico la configuración de mi entorno para informar a Git de que mi terminal es realmente un terminal?¿Qué significa git-config (1) cuando dice "los colores se usan solo cuando la salida es para un terminal"?

Datos específicos:
Estoy usando terminal rxvt con Cygwin en Windows. También tengo MSysGit instalado. Cuando hago la configuración de Git:

[color] 
    ui = auto 
    branch = auto 
    status = auto 

todavía no hay color en la salida de mi terminal. Sin embargo, cuando cambio a

[color] 
    ui = always 
    branch = always 
    status = always 

existe una salida de color correcta. Sin embargo, necesito volver a "automático", no "siempre", para manejar correctamente las cajas no terminales reales. Entonces, con el propósito de hacer que "auto" funcione correctamente: ¿Cómo cambio mi entorno para que Git reconozca que mi rxvt + Cygwin es un terminal capaz de soportar color?

(PS. No puedo usar la versión de Cygwin de Git debido a problemas mucho más grandes que este tema de color relativamente menor. No responda diciéndome para cambiar a la versión de Cygwin.)

Gracias por ¡tu ayuda!

+0

¿Cuál es la variable de entorno 'TERM' establecida en? (Verifique con 'echo $ TERM'.) – ezod

+0

@ezod: He intentado cambiar TERM a algunos valores diferentes, y no tuvo ningún efecto. El valor actual (es decir, el último valor que probé) es "xterm-256color". – walrus

Respuesta

2

Puede valer la pena mirar this question que cubre la detección de la diferencia entre la salida que va a un terminal (es decir, la sesión tty) vs que se redirige a otro proceso. Supongo que esto es lo que significa git en su frase de "ir a una terminal", que la salida de hecho va a una sesión de tty.

+0

Acabo de ejecutar esas pruebas en mi terminal, y efectivamente se detectó correctamente como terminal. Entonces, Git (bueno, MSysGit) sigue siendo lo único que sé que no cree que mi terminal sea una terminal. Suspiro. – walrus

Cuestiones relacionadas