Dlaczego mniej jest uruchamiany niepotrzebnie przez git?

22

Kiedy uruchamiam git branch(z bash lub csh), automatycznie przesyła dane wyjściowe less. Jednakże, mając tylko kilka gałęzi w repozytorium, jest to niepotrzebne, jest denerwujące, ponieważ lista gałęzi znika, gdy rzuciłem mniej.

Sprawdzanie ~/.gitconfigplików i .git/configplików lokalnych nie powoduje znalezienia niczego na stronie lub innej rzeczy, która by to spowodowała. W przeciwnym razie nic, co znalazłem podczas wyszukiwania w Internecie, nie było pomocne ani obiecujące.

Dlaczego tak się dzieje i co (jeśli cokolwiek) mogę zrobić, aby lessuruchomić w razie potrzeby (np. Podczas robienia git logdużej ilości historii), ale nie inaczej (jak git branchtylko z 2 lub 3 oddziałami)?

GreenMatt
źródło
4
Zasadniczo git nie wie, ile będzie wyjść z dowolnego polecenia, więc domyślnie wysyła wszystko przez pager, co prawdopodobnie będzie mniejsze.
icarus
6
Pierwszą rzeczą zrobić na nowej instalacji -nix jest umieścić export LESS=-Xw .profile. Pozwala to uniknąć „czyszczenia” ekranu. Ja nienawidzę go, że standardowe ustawienie czyści ekran, bo często trzeba wyciąć i wkleić rzeczy lub używać go jako punkt odniesienia.
Peter - Przywróć Monikę
3
@Peter Aby być czystym (nie ma sensu), powinny to robić tylko ludzie, którzy nie chcą zachowania czyszczenia ekranu.
David Z
@icarus: To wydaje się logiczne. Jednak moje zachowanie ostatnio się zmieniło. Nie jestem pewien, dlaczego - prawdopodobnie zmiana na jakąś zmienną środowiskową wymuszoną od ludzi zajmujących się bezpieczeństwem korporacyjnym „na haju”, którzy nie dbają o to, jak trudni oni utrudniają wszystkim pracę. W każdym razie, git nagle przeszedł z tego, co uważałem za rozsądne zachowanie, do uruchamiania wyjść jednokreskowych na mniej w taki sposób, że wyjście zostało utracone, gdy przestałem mniej.
GreenMatt
Jeśli zachowanie ostatnio się zmieniło, możliwe jest przynajmniej dodanie ustawienia zmiennej LESS do ogólnosystemowych plików startowych powłoki, np. / Etc / profile, /etc/profile.d/*, /etc/bash.bashrc, Czy masz tę zmienną w swoim środowisku?
icarus

Odpowiedzi:

35

Możesz ustawić następujące ustawienia:

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

Zapewni to, że lesswolę

  • Wyjdź, jeśli cały plik można wyświetlić na pierwszym ekranie ( F)
  • Wyprowadzaj nieprzetworzone znaki sterujące do formatowania terminala ( R)
  • Posiekaj długie linie ( S)
  • Nie wysyłaj ciągów init / de-init do terminala - unika się czyszczenia ekranu przy exit ( X)

Edycja: Usunięto Sopcję na podstawie komentarza Petera A. Scheidera

QIS
źródło
7
i pomiń, --globaljeśli chcesz, aby dotyczyło tylko bieżącego repozytorium.
mosvy
8
Ustawienie zmiennej środowiskowej LESSna -FR, dodawanie X i S do smaku jest innym sposobem.
icarus
11
Najprawdopodobniej PO uważa, że ​​takie zachowanie jest ogólnie denerwujące; Podejrzewam, że można ustawić zmienną środowiskową export PAGER='less -FRSX'i git ją honorował (bez konkretnej konfiguracji git). Btw, -Sjest niebezpieczne, ponieważ po cichu odrzuca dane wyjściowe.
Peter - Przywróć Monikę
4

Istnieje kilka świetnych odpowiedzi na lesstemat zachowania tuningu , ale ponieważ moje siwobrode palce są przyzwyczajone do pisania, |morekiedy chcę, a ponieważ nadal bardziej dostrajam się do rtęci niż git, chętnie

git config --global core.pager cat
dgc
źródło
3
Strona git-configpodręcznika dla man podaje, że wartość core.pagerma być interpretowana przez powłokę. Po ustawieniu tej opcji nopróbuje wykonać polecenie no, które najprawdopodobniej nie istnieje, a następnie wraca do zwykłego wyświetlania zawartości. Nadal zobaczysz komunikat błędu. Prawdopodobnie chcesz to zrobić catzamiast tego.
QIS
1
To dobra informacja, ale podoba mi się to, że niczego nie wykonuje . Jest catto bezużyteczne i szczególnie nie ufam opiekunom Linuksa, że ​​nie zmienią tego, co robi cat (por . lsPorażka cytowanych plików ). Może powinienem zamiast tego użyć „nigdy”. Jest mniej prawdopodobne, że taki program istnieje.
dgc
7
Ustawienie core.pagerna pusty ciąg ( git config core.pager '') lub catbędzie nie działać w ogóle cokolwiek. Możesz sam to wypracować, jeśli mi nie wierzysz ;-) Nie ma powodu, aby ustawiać go jako manekin no.
mosvy
Wielkie dzięki! Nie miałem pojęcia, że ​​pusty ciąg nie spowoduje wykonania polecenia. Co do tego cat, czy mówisz, że git ma specjalny przypadek dla tego ciągu w kodzie pagera - to znaczy, że catjest to właściwie synonim „null”? Spodziewałbym się, że to się wykona cat.
dgc
Rzeczywiście wydaje się, że tak jest. Egady Ale także dobrze: zawsze szukam więcej sposobów, aby uzasadnić niechęć do git.
dgc