2012-08-26 10 views
7

Sto trasmettendo ad un terminale, ma Git non sta rilevando correttamente che sto emettendo un terminale, allo scopo di colorare l'output. La mia domanda è, cosa significa realmente git-config (1) quando dice "i colori sono usati solo quando l'output è su un terminale" (questa frase appare alla fine di più descrizioni di configurazione, come per color.ui e colore .ramo)? In altre parole, in che modo Git decide se trasmettere o meno a un terminale e come posso modificare le impostazioni dell'ambiente per informare Git che il mio terminale è effettivamente un terminale?Cosa significa git-config (1) quando dice "i colori sono usati solo quando l'output è su un terminale"?

Specifiche:
Sto usando il terminale rxvt con Cygwin su Windows. Ho anche installato MSysGit. Quando eseguo le impostazioni di configurazione Git:

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

non c'è ancora alcun colore nella mia uscita terminale. Tuttavia, quando passo a

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

quindi c'è un'uscita colorata corretta. Tuttavia, ho bisogno di tornare a "auto", non "sempre", al fine di gestire correttamente i casi non terminali reali. Quindi, allo scopo di far funzionare correttamente "auto": Come cambio il mio ambiente per far riconoscere a Git che il mio rxvt + Cygwin è un terminale capace di supportare il colore?

(PS. Non posso usare la versione Cygwin di Git a causa di problemi molto più grandi rispetto a questo problema di colore relativamente minore. Non rispondere a dirmi di passare alla versione Cygwin.)

Grazie per la il tuo aiuto!

+0

A cosa è impostata la variabile di ambiente 'TERM'? (Controlla con 'echo $ TERM'.) – ezod

+0

@ ezod: Ho provato a cambiare TERM con alcuni valori diversi, e non ha avuto alcun effetto. Il valore corrente (vale a dire l'ultimo valore che ho provato) è "xterm-256color". – walrus

risposta

2

Potrebbe valere la pena di guardare this question che copre la rilevazione della differenza tra l'output che va a un terminale (cioè la sessione tty) contro il suo reindirizzamento ad un altro processo. Suppongo che questo è ciò che git intende nel suo fraseggio di "andare a un terminale", che l'uscita sta di fatto andando a una sessione tty.

+0

Ho appena eseguito questi test sul mio terminale, e sono sicuro che sia stato rilevato correttamente come un terminale. Quindi Git (beh, MSysGit) è ancora l'unica cosa che so che non crede che il mio terminale sia un terminale. Sospiro. – walrus

Problemi correlati