Lepszy Git

Ostatnio razem z zespołem kombinowaliśmy wokół opcji i rozszerzeń gita pod kątem szybkiego i prostego sposobu na poprawę komfortu pracy.
Oto efekt jaki udało mi się uzyskać po 15 minutach zabawy:

czytelny git
Jak uzyskać podobny efekt?

Po kolei:

  1. Kolory – świetna sprawa jeśli chodzi o poprawę czytelności statusu (jak na screenie powyżej), czy listy gałęzi.
    Git wspiera kolorowanie wyników (nie mam pojęcia dlaczego nie robi tego domyślnie), wystarczy włączyć odpowiednią opcję w ustawieniach:

    git config --global color.ui true

    Mała rzecz, a cieszy 🙂

  2. Auto-uzupełnianie poleceń, flag, nazw tagów, gałęzi etc. – minimalna oszczędność ilości stuknięć w klawisze (do tego chyba lepiej nadają się aliasy). Moim zdaniem najbardziej przydaje się ono w trakcie przemieszczania między gałęziami, zwłaszcza jeśli pracujemy w modelu git-flow.
    Instrukcję jak włączyć auto-uzupełnianie można znaleźć zasadniczo w 2 miejscach:

    Dodam tylko, że niekoniecznie musimy pobierać źródła z githuba. Cały katalog contrib/completion możemy znaleźć w głównym katalogu gita (u mnie na macu jest to /usr/local/git). Możemy tam znaleźć być może nie najnowsze skrypty, ale za to zgodne z wersją używanego przez nas gita.

  3. Nazwa bieżącej gałęzi w znaku zachęty – zdarzyło Ci się kiedyś pomylić branche?
    Mi tak. To było strasznie głupie (z mojej strony), irytujące oraz czasochłonne ponieważ pomyłka dała o sobie znać dopiero w runtime, a nie na etapie budowy.
    Głupie, ponieważ gdybym wtedy miał wyrobiony odruch każdorazowego sprawdzania w której gałęzi aktualnie jestem, pewnie zaoszczędziłbym dobrych kilkanaście minut..
    Ale jest jeszcze jeden problem – lubię wyzwania i spijanie programistycznej śmietanki, nie lubię natomiast (jak większość ludzi na świecie) wykonywania powtarzalnych czynności, a do takich zaliczam wykonywanie sprawdzenia brancha na każdym kroku.
    Dlatego kiedy udając się do katalogu contrib/completion po git-completion (patrz #2) natknąłem się na skrypt git-prompt.sh ucieszyłem się niczym żuk na widok wielkiej kulki gnoju 😉
  4. Podobnie jak w poprzednim punkcie instrukcję użycia znajdziemy w komentarzu wewnątrz skryptu, który możemy znaleźć także w katalogu z zainstalowanym gitem.
    Jeśli zastosujesz się do podanych instrukcji twój znak zachęty będzie wyglądał mniej więcej tak:domyślny znak zachęty
    Informacja owszem jest, ale trochę mało czytelna.
    Postanowiłem coś z tym zrobić i oddzielić ścieżkę od etykiety gałęzi, poprzez ustawienie zmiennej PS1 w moim bashu w następujący sposób:

    export PS1='[\u:\w]$(__git_ps1 "[%s]")\$ '

    Efekt:znak zachęty po rozdzielniu starej części oraz nazwy gałęzi nawiasami kwadratowymi

    W systemach opartych o Unix jesteśmy w stanie nadawać plikom przeróżne, także niepraktyczne nazwy, jak np. “projekt][master”, dlatego potrzebowałem jeszcze jednego rozróżnienia – koloru.
    Kolory w Bash uzyskujemy umieszczając

    \[$(tput setaf nr_koloru)\]

    przed fragmentem który chcemy pokolorować. Pamiętaj, że kolorowane będzie wszystko po prawej stronie, a nie tylko kolejne słowo. Na samym końcu umieść

    \[$(tput sgr0)\]

    aby wyłączyć style czcionki.
    Mój znak zachęty ostatecznie został skonfigurowany w następujący sposób:

    export PS1='\[$(tput setaf 2)\][\u:\w]\[$(tput setaf 3)\]$(__git_ps1 "[%s]")\[$(tput setaf 6)\]\\$ \[$(tput sgr0)\]'

    co dało mi taki (znajomy ze zrzutki na początku wpisu) efekt:znak zachęty po dodaniu kolorów

Advertisements

4 thoughts on “Lepszy Git

    • Hej,
      Nie narzucam sobie jakiegoś reżimu związanego z częstotliwością publikacji nowych notek, jeśli napotkam coś wartego podzielenia się – piszę.
      Chciałbym zamieszczać tutaj informacje ciekawe także dla innych, bardziej zależy mi na jakości niż ilości.

  1. Hej,
    mogłeś tam w ad. 1 zasugerować użycie git config –global color.ui true, bo tak to trzeba ustawiać kolorowanie, w każdym repozytorium z osobna.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s