Perché meno viene gestito inutilmente da Git?


22

Quando corro git branch(da bash o csh), convoglia automaticamente l'output less. Tuttavia, con solo poche diramazioni nel repository questo va oltre inutile, è fastidioso, poiché l'elenco delle filiali scompare una volta che ho smesso di meno.

Il controllo del ~/.gitconfigfile e dei .git/configfile locali non trova nulla su un cercapersone o qualsiasi altra cosa che possa causare questo. Altrimenti, nulla di ciò che ho trovato nelle ricerche web è stato utile o promettente.

Perché sta succedendo questo, e cosa (se non altro) posso fare per lesscorrere quando necessario (ad esempio quando faccio un git logquando c'è molta storia) ma non altrimenti (come un git branchcon solo 2 o 3 rami)?


4
In generale git non sa quanto output ci sarà da qualsiasi comando, quindi invia tutto per impostazione predefinita tramite un cercapersone, che probabilmente sarà inferiore.
icarus

6
La prima cosa che fai in una nuova installazione -nix è quello di mettere export LESS=-Xin .profile. Ciò impedisce di "ripulire" lo schermo. Io odio è che l'impostazione standard cancella lo schermo perché ho spesso bisogno di tagliare e incollare roba o usarlo come un punto di riferimento.
Peter - Ripristina Monica il

3
@Peter Per essere chiari (nessun gioco di parole previsto), solo le persone che non vogliono il comportamento di pulizia dello schermo dovrebbero farlo.
David Z,

@icarus: sembra logico. Tuttavia, il mio comportamento è cambiato di recente. Non sono sicuro del perché - probabilmente un cambiamento ad una variabile d'ambiente forzata dalle persone della sicurezza aziendale "in alto" a cui non sembra importare quanto siano difficili per rendere il lavoro di tutti gli altri. Ad ogni modo, git è passato improvvisamente da quello che ho considerato un comportamento sensato all'esecuzione di output a linea singola in modo tale che l'output sia andato perso quando mi sono fermato di meno.
GreenMatt

Se il comportamento è cambiato di recente, è almeno possibile che un'impostazione della variabile LESS sia stata aggiunta ai file di avvio della shell a livello di sistema, ad esempio / etc / profile, /etc/profile.d/*, /etc/bash.bashrc, Hai questa variabile nel tuo ambiente?
icarus

Risposte:


35

È possibile impostare quanto segue:

git config --global core.pager 'less -FRX'

Questo assicurerà che lo lessfarà

  • Esci se è possibile visualizzare l'intero file sulla prima schermata ( F)
  • Emette i caratteri di controllo non elaborati per la formattazione del terminale ( R)
  • Tritare le linee lunghe ( S)
  • Non inviare le stringhe init / de-init al terminale - evita di cancellare lo schermo all'uscita ( X)

Modifica: rimossa l' Sopzione in base al commento di Peter A. Scheider


7
e omettere --globalse si desidera che si applichi solo al repository corrente.
mosvy,

8
Impostare la variabile di ambiente LESSsu -FR, aggiungendo X e S a piacere è un altro modo.
icarus


11
Molto probabilmente l'OP ritiene questo comportamento fastidioso in generale; Suppongo che si possa impostare la variabile d'ambiente export PAGER='less -FRSX'e git la onorerebbe (in assenza di una specifica configurazione git). A proposito, -Sè pericoloso perché scarta silenziosamente l'output.
Peter - Ripristina Monica il

4

Ci sono alcune grandi risposte qui per lessil comportamento di tuning , ma dal momento che le mie dita di barba grigia sono abituate a scrivere |morequando lo voglio, e poiché sono ancora più in sintonia con Mercurial che con Git, sono appassionato di

git config --global core.pager cat

3
La pagina man di git-configindica che il valore di core.pagerdeve essere interpretato dalla shell. Quando lo imposti no, tenta di eseguire il comando no, che molto probabilmente non esiste, quindi ricade semplicemente nell'output del contenuto. Vedrai ancora un messaggio di errore in testa. Quello che probabilmente vuoi fare è catinvece impostarlo .
QIS

1
Questa è una buona informazione, ma quello che mi piace è che non esegue nulla . Il catè inutile, e non mi fido particolarmente Linux util manutentori non cambiare ciò gatto fa (cfr il lsfile debacle citato ). Forse dovrei usare "non mai" invece. È meno probabile che esista un programma del genere.
dgc

7
Impostazione core.pageralla stringa vuota ( git config core.pager '') o catsarà non funzionare nulla. Puoi risolverlo da solo se non mi credi ;-) Non c'è alcun motivo per impostarlo su un comando fittizio come no.
mosvy,

Grazie mille! Non avevo idea che la stringa vuota non avrebbe causato l'esecuzione del comando. Quanto a cat, stai dicendo che git ha un caso speciale per quella stringa nel codice del cercapersone - cioè che catè effettivamente un sinonimo di "null"? Mi aspetterei che venga eseguito cat.
dgc

Questo in effetti sembra essere il caso. Egads. Ma anche bene: cerco sempre altri modi per giustificare il mio disgusto per Git.
dgc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.