Git rzÄ…dzi
Opublikowane przez Jarosław Zabiełło
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 projektugit init.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 -aNasz 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 datamapperZa 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 masterI 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)



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 :)
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.
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.
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.
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)
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.
Ciekawy projekt wzorowany na railscasts, ale koncentrujÄ…cy siÄ™ wokół Git’ – gitcasts.com
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.
@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.
assembla.com juz obsluguje Git i Mercurial i imo lepsze to niz github bo ma 5x wiecej przestrzeni, traca i rozne duperelki :)
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/
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
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
A moze ktos polecic jakies dobre HOWTO nt. gita?
@nFs:
:-)