Git rządzi

Opublikowane przez Jarosław Zabiełło Sun, 18 May 2008 16:28:00 GMT

Jeśli miałem wcześniej jakieś wątpliwości czy przejść na Gita czy trzymać się SVN’a, to już dziś ich nie mam. Wygoda tworzenia lekkich branchy Gita jest powalająca. Dzisiaj podczas tworzenia aplikacji z użyciem Sequel’a postanowiłem sprawdzić DataMappera...

Wiele osób sądzi, że następcą Active Record będzie DataMapper. Wykorzystuje podobne podejście odnośnie relacji między modelami, lecz działa dużo szybciej. Miałem jednak już trochę kodu w modelach opartych na Sequelu. Pierwsze, co trzeba zrobić to odpalić w katalogu projektu
git init
Powstanie folder .git. W przeciwieństwie do SVN, Git nie śmieci milionem katalogów .svn w każdym z podkatalogów. Git tworzy tylko jeden, na najwyższym poziomie – nice, isn’t it? Następny krok to wrzucenie wszystkiego do lokalnego repozytorium (ten folder .git jest właściwym repozytorium)
git add *
git commit -a

Nasz kod zostanie zachowany. Teraz tworzymy sobie lekki branch (w tym wypadku o nazwie “datamapper”). Opcję -b używa się podczas tworzenia gałęzi.

git checkout -b datamapper

Za pomocą generatorów wywaliłem wszystkie modele i stworzyłem nowy kod. W każdej chwili możliwy jest powrót do poprzednich plików. Wszystko dzieje się w mgnieniu oka

# przełączam się na pierwotny kod:
git checkout master

# teraz jestem znowu w gałęzi datamapper
git checkout datamapper

# grzebię w kodzie
# zapisuję w repozytorum zmiany
git commit -a

# i z powrotem do głównego kodu :)
git checkout master

I już jestem z powrotem. Git pozwala na błyskawiczne tworzenie nieograniczonej ilości takich odgałezień kodu. Bardzo to się przydaje przy różnych eksperymentach z kodem. Można się przełączać, i jeśli chcemy, szybko scalać zmiany z głowną gałęzią (master). Bardzo mi się to spodobało. Oczywiście, możliwość dłubania w kodzie z zachowanie historii zmian w sytuacji kiedy nie mamy dostępu do internetu nie jest żadnym problemem dla Gita. To jest cecha wszystkich rozproszone systemów wersjonowania. Dlaczego Git a nie Mercurial? Można używać i Mercurial, ale Git jest najszybszy, mam do tego świetnego githuba i nie interesuje mnie używanie win32 do tworzenia oprogramowania. Anyway, “bye, bye Subversion”.

Co z DataMapperem? Na dzień dzisiejszy ma za mało dokumentacji aby można było szybko go opanować. Sequel jest dużo łatwiejszy do opanowania i przydaje się bardziej tam gdzie mamy bardziej złożone struktury tabel. Złożone zapytania SQL dla Sequela to bułka z masłem. W DataMapper trochę się pogubiłem. Dam mu ponowną szansę może za 2 miesiące, jak będzie trochę więcej dokumentacji.

BTW, ci, co używają najnowszego Merba (wersja edge w chwili pisania tego tekstu nosi numer 0.9.4), nie znajdą w kodzie merb-plugins biblioteki merb_datamapper. Merb już nie zajmuje się tym modułem, chłopaki z DataMapper’a przejęli nad nim kontrolę i trzeba go ściągać z innego miejsca, został dodany do dm-more. Sam gem datamapper można spokojnie wyrzucić bo stara wersa (0.3.x) została poważnie przebudowana i jest dostępna (aktualnie jako 0.9) pod inną nazwą jako dm-core i dm-more (trochę wzorowali się tu na Merbie)

Tagi , , , ,  | 15 comments

Comments

  1. Avatar pagenoare powiedział about 2 hours later:

    Też początkowo lubiłem bardzo gita, ale zaczął mi wariować i gubić branchy (pewnie to było moją winą), więc przeszedłem na bazaar i jestem zadowolony :)

  2. Avatar Jarosław Zabiełło powiedział about 4 hours later:

    Jakoś Bazaar nie może się przebić. Sun wybrał Mercurial, a większość projektów w Ruby przechodzi masowo na Gita i korzysta z githuba.

  3. Avatar pawelk powiedział about 4 hours later:

    Myślę, że Bazaar nie powiedział jeszcze ostatniego słowa :) Dla mnie linia rozwoju bazaara jest spójniejsza od gita, a już na pewno od Mercuriala, jednocześnie Bazaar jest w mojej opinii elastyczniejszym narzędziem. Samo korzystanie z niego jest też bardziej intuicyjne i bezproblemowe, a o takie wrażenie trudno w przypadku konkurencji. No i przejście z svn’a na bazaar’a jest praktycznie bezbolesne (polecenia zgodne z svn), co przy większych projektach ma niemałe znaczenie.

  4. Avatar dentharg powiedział about 15 hours later:

    Blogowałem nt. tworzenia gałęzi w git i por. tego do bazaar.

    Git ma jedną, wielką zaletę – dzięki niemu można uniknąć rekompilacji; choć w przypadku tworzenia aplikacji www nie ma to większego znaczenia.

  5. Avatar steamm powiedział about 15 hours later:

    Jarku tylko co z dostepnoscia narzedzi, np znajdz dobrze dzialajacy plugin pod Eclipsa… klepanie komend moze i jest fajne ale do czasu. Co do gita i Win, to istnieje przeciez Cygwin, od biedy msysgit (z githubem nie za bardzo dziala u mnie)

  6. Avatar benol powiedział 1 day later:

    Emacs jakiś czas temu postanowił przesiąść się na Bazaar i wielu developerów narzekało na wydajność (a jeszcze więcej kiedy zobaczyli o ile szybciej Git działa na tym samym repozytorium wziętym z CVS).

    Co do win32 to istnieje wygodny instalator Git’a pod windowsy (http://code.google.com/p/msysgit/), podobno tam Git działa wolniej, ale ja tego nie zauważyłem.

  7. Avatar Jarosław Zabiełło powiedział 2 days later:

    Ciekawy projekt wzorowany na railscasts, ale koncentrujący się wokół Git’ – gitcasts.com

  8. Avatar mi powiedział 4 days later:

    Z ciekawości: co Ci przeszkadza w Sequelu, że próbowałeś DM? DM nie miałem okazji używać, Sequel – w porównaniu do AR – rewelacja.

  9. Avatar Jarosław Zabiełło powiedział 4 days later:

    @mi: trochę brakuje mi wbudowanych relacji między modelami. Niby są, ale jakieś jeszcze niedopracowane. DM wykorzystuje też szybsze, parametryzowane zapytania SQL (Sequel jeszcze tego chyba nie ma, choć im to zgłaszałem i widziałem na liście dyskusyjnej jakieś propozycje składni do tego). No i Ezra Zygmuntowicz dosyć dobrze się wypowiadał o DM, więc chciałem zobaczyć, jak to wygląda w praktyce. Jak napiszą więcej dokumentacji to coś więcej będę mógł powiedzieć, bo na razie używanie DM przypomina macanie po omacku.

  10. Avatar kwiateusz powiedział 6 days later:

    assembla.com juz obsluguje Git i Mercurial i imo lepsze to niz github bo ma 5x wiecej przestrzeni, traca i rozne duperelki :)

  11. Avatar kabturek powiedział 16 days later:

    warto by było też wspomnieć o świetnym git-svn jeśli ktoś musi się zajmować kodem leżącym w repozytoriach SVN- bi directional sync – z własnego doświadczenia – działa świetnie. Mały tutorial:

    http://www.viget.com/extend/effectively-using-git-with-subversion/

  12. Avatar Jacek Becela powiedział 25 days later:

    Git rzadzi, wreszcie moge branczowac i przede wszystki mergowac BEZ BOLU, czesto i gesto. Dodtakowo tandem Git + GitHub i poprostu jestem w niebie, czemu dalem wyraz w jednym akapicie tego posta

  13. Avatar mulander powiedział about 1 month later:

    Jarosław Zabiełło napisał:

    >>Jakoś Bazaar nie może się przebić. Sun wybrał Mercurial, a większość >>projektów w Ruby przechodzi masowo na Gita i korzysta z githuba.

    Mysql przeszedł z Bitkeepera na Bazaar. Pomimo przejęcia przez Sun, który postanowił standaryzować swoje projekty na Mercurial. Więc nie można powiedzieć by bazaar nie miał przebicia. Dodajmy do tego fakt iż Canonical stoi mocno za tym narzędziem – i mamy całkiem dobrą konkurencje. Systemy wersjonowania przeżywają obecnie podobną sytuacje jak frameworki do tworzenia aplikacji www. Szkoda tylko, że w tym całym zamieszaniu – mało kto dostrzega tak ciekawe rozwiązania jak te, które proponuje darcs

  14. Avatar nFs powiedział 2 months later:

    A moze ktos polecic jakies dobre HOWTO nt. gita?

  15. Avatar RaVbaker powiedział 9 months later:

    @nFs:

    http://git-scm.com/course/svn.html#

    :-)

(leave url/email »)

   Pomoc języka formatowania Obejrzyj komentarz