piątek, 11 marca 2011

GIT - używanie, czyli codzienne starcia z urojeniami Linusa

Mimo, że używam GIT'a na co dzień, to gdyby mnie ktoś zapytał dlaczego, udzieliłbym nieco wymijającej odpowiedzi. Osobiście nie mam o nim dobrego zdania. System wygląda na projekt, który miał być mały, a stał się za duży. Co ciekawe tak chyba było w istocie. Linus tworząc Linuxa napisał system kontroli wersji dla tego projektu. Zaczęto go używać powszechnie, bo na wolnej licencji , bo tworzył to wielki Linus... Diabli wiedzą dlaczego...
Logiki tam z lupą szukać. Weźmy pierwszy z brzegu przykład. Utworzenie nowej gałęzi wygląda normalnie:
git branch test
ale przełączenie się na nią to już prawą nogą za lewe ucho:
git checkout test
O kurde! COŚ jest nie tak. Sprawdzamy wobec tego co to jest checkout:
http://www.diki.pl/slownik-angielskiego/?q=checkout&x=0&y=0
I dowiadujemy się, że to kasa, bądź wymeldowanie. Na litość boską! Towarzyszu Linusie, skąd ci to wpadło do głowy? Słówko "branch" (gałąź) cię boli? Czyli gałąź niedokładnie opisuje gałąź? Lepiej do przełączenia na gałąź użyć słowa kasa-wymeldowanie? Dlaczego nie "cegła" albo "sznurówka"? Tak samo przypadkowe i tak samo dobre.
Myślisz drogi czytaczu, że to odosobniony przypadek? Można książkę napisać o głupotach GIT'a. Zresztą niech przemówią fakty. Wrzuć w google frazę "git commit", a zaraz potem "bazaar commit". Sprawdź za każdym razem ilość wyników. I co? Tobie też wyszło, że stron wyjaśniających działanie GIT'a jest (uwaga!) stopiętnaścierazywięcej? Albo 115 razy więcej?! Każdy, kto choć chwilę się nad tym zastanowi natychmiast odrzuci kwestię popularności GIT'a versus Bazaar'a. Bazaar jest po prostu prosty :-) Fajnie wyszło: "po prostu prosty". Ale tak jest w istocie. Bazaar jest prosty. W Bazaar aby cofnąć ostatni commit piszesz:
bazaar uncommit
O zgrozo! Jak prosto i domyślnie!
Sprawdźmy więc jak to się robi w GIT:
git revert 1ed35d3
To nie ściema! Tak jest naprawdę. I to jest skrócona wersja! Użyłem klucza tylko w wersji 7-dmio znakowej. A co by było gdybym musiał użyć całego klucza SHA? Drogi Linusie! Brawa za kreatywność.
Pomijam tu kwestię, że na przykład, w skądinąd dobrej książce o Git'cie:
http://progit.org/book/pl/
na próżno będziesz szukał informacji na temat jak cofnąć ostatni commit. Ciekawe no nie? Ciekawym też jest fakt, że w ogóle taka książka jest potrzebna. Wiem, bo ją przeczytałem. Nie dlatego abym był masochistą. Nie zwariowałem. Przeczytałem, bo trzeba się było nauczyć. Ale, jak widać, jej przeczytanie nie daje nawet tak podstawowej wiedzy jak cofnąć commit. A teraz uwaga... aby korzystać bezproblemowo z Bazaara wystarczy poświęcić kwadrans na przeczytanie jednego tutoriala. Więcej tutoriali ani książek nie ma. Nie ma... zgadnij dlaczego? Ano dlatego, że nie potrzeba. Tam wszystko jest prosto i kawa na ławę. Jeden tutorial i po sprawie. Po co się rozpisywać skoro wszystko jest proste?
Już słyszę te pytania: "dlaczego, baranie, nie używasz więc Bazaara?". Ano spuszczę głowę i odpowiem, że dla tego samego co durnych windowsów. Wszędzie do tego coś jest. A to wtyczka do NetBeansów i Idei. A to u naszego dostawcy usług hostingowych pełne wsparcie i tutoriale. Masakra! Uległem wielkości githuba. Stuliłem po sobie uszy, przymknąłem paszczę i używam tej durnoty. Mam nadzieję, że Ty, jak już dotarłeś do końca tych słów, to chociaż obejrzysz Bazaara i zapłaczesz dlaczego takie wspaniałe narzędzie pozostaje w cieniu fantasmagorii wielkiego Linusa.

Ach... byłbym zapomniał... kolejny z milionów tutoriali o GIT'cie:
http://marioosh.5dots.pl/2009/06/27/gitowy-system-kontroli-wersji.html
tam chociaż jest coś o cofnięciu commita...

1 komentarz:

  1. Proponuję przeczytać http://marioosh.5dots.pl/2009/06/27/gitowy-system-kontroli-wersji.html
    Git jest systemem kontroli działającym w rozproszeniu. Np. Mamy dwa repozytoria i chcemy je połączyć i okazuje się, że jeden i drugi ma takie same katalogi i pliki, nie połączysz ich bez dodatkowej ingerencji. Wprowadzenie klucza SHA wyklucza konflikt z nazwami. Aby wrócić nie musisz wpisywać 7 cyfr wystarczy tyle pierwszych cyfr ile znacz. Piszesz, że "bazaar uncommit" aby cofnąć a co jeśli chcesz cofnąć się o 5 wersji. W gicie wystarczy wpisać kluch wersji.
    Pozdrawiam.

    OdpowiedzUsuń