Ostatnio dość mocno eksperymentuję z różnymi systemami kontroli wersji zaczynając od CVS-a (mam go w pracy) przez systemy rozproszone takie jak Mercurial (Hg), Bazaar i wspomniany w tytule Git. Tym razem właśnie na nim się skupię, gdyż stał się on strasznie popularny pomimo swoich wad.
Wada 1: Co to za wersja???
Podstawową denerwującą rzeczą w Git jaka mi się rzuciła w oczy to nazywanie wersji. Nie mamy tutaj wersji 1, 2, 3 tak jak w Subversion, ale 40 znakowe, alfanumeryczne hashe. Po co to? Rozumiem, że macie kompleksy związane z tym, że w systemie rozproszonym każdy może mieć inny numer wersji u siebie i wypadałoby je jakoś od siebie odróżniać. Ale czemu nie można zostawić ładnych numerków tylko trzeba wrzucać te potworne hashe? Tutaj rozwiązał to choćby Mercurial, gdzie nazwa wersji składa się z normalnej liczby porządkowej i hasha. Do przeglądania wystarczy numer, przy łączeniu wersji hash się przydaje.
Wada 2: Jakie to polecenie???
Wada druga jest związana z tym, że twórca Git’a (tak tak, TEN Linus Torvalds) musiał koniecznie stworzyć coś nowego. Więc oprócz nowego systemu kontroli wersji dał też nowy zestaw poleceń, które mogę przypominać to co znamy z SVNa, ale tym nie są. Istnieją nawet magiczne tabelki dla użytkowników SVNa którzy by chcieli poGitować sobie. Nowy zestaw komend to chyba najbardziej głupi sposób na bycie innowacyjnym.
Wada 3: Windows – tak, tam też byś się przydał.
Trzecią wadą jest fakt, iż Git ma kłopoty pod Windowsem. Ponoć nie są to już problemy z kompilacją (istnieje wersja msys która działa) ale miliony (czy jakoś tak) skrypcików doczepionych do Git-a nie działa, bo nie mamy basha i innych fajnych rzeczy. Ludzie… Czy nie można zrobić tego kulturalnie, tak, żeby nawet człowiek któremu Linux kojarzy się z chorobą weneryczną mógł tego używać? Pomnę tutaj takie dodatki jak seria Tortoise, pluginy SCC dla Visual Studio czy też choćby pluginy NetBeans. Dlaczego mimo, że Bazaar jest projektem młodszym to ma własnego TortoiseBzr (w testach) czy też plugin SCC dla Visual Studio (w developmencie, ponoć coś działa).
Podsumowanie
Pewnie każdy kto to czyta albo stwierdzi że albo Git jest do niczego, albo że plotę bzdury. Owszem, Git ma zalety takie jak gigantyczna prędkość działania czy też branche in-place (nie tworzysz nowego katalogu, po prostu katalog roboczy zmienia się). Ale te zalety są sobie, a wady sobie.
Tags: dvcs, git, wersjonowanie
Dlatego z tego m.in. powodu obecnie wykorzystuję do wszelkich mniejszych, czy też większych projektów Mercuriala, a jak reszta grupy nie kuma o co się rozchodzi to SVN-a ;D Odnoszę wrażenie, że te dwa rozwiązania (przy SVN-ie to nic dziwnego) są obecnie najbardziej "user friendly" i posiadają najlepsze wsparcie ze strony innych aplikacji. Szkoda tylko, że dorwanie darmowego repo HG graniczy z cudem w momencie, gdy pomijamy Assemblę ;]
PS. Chyba trzeba poprawić treść informacji przeznaczonej dla osób niezalogowanych. Trudno dociec, czego oczekuje autor blogaska, gdy chcemy dodać komcia ;D
Ja się przekonałem ostatnio do Bazaara. Naprawdę fajnie to działa, niestety nie ma jeszcze wsparcia dla IDE (przynajmniej dla VS jakiegoś porządnego i dla NetBeans). Ale jest TortoiseBzr, więc nie zginę.