Dlaczego git to nie svn oraz dlaczego to dobrze ?

29
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

description

Prezentacja developerów firmy XSolve. XSolve jest prężnie działającą i wciąż rozwijającą się firmą informatyczną. Specjalizujemy się w znajdowaniu najnowszych i najlepszych rozwiązań dla sieci i oprogramowań komputerowych w zależności od potrzeb naszych klientów.

Transcript of Dlaczego git to nie svn oraz dlaczego to dobrze ?

Page 1: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 2: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 3: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 4: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 5: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 6: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 7: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przyjemne rzeczy w Git:rozproszony - zazwyczaj pracujemy lokalnieszybkimałymodel branch’owania (branch i merge są banalne i sprawne)(mnie jeszcze cieszy) brak folderów .svn

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 8: Dlaczego git to nie svn oraz dlaczego to dobrze ?

W SVN repozytorium jest Bogiem...

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 9: Dlaczego git to nie svn oraz dlaczego to dobrze ?

W Git, źródła są w centrum uwagi!

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 10: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Typowy workflow:

SVNsvn commit -m ’moje super zmiany’//cały świat widzi te zmiany

Git//programowanie - coś zadziałało ’prawie’git add . && git commit -m ’chyba jestem na dobrej drodze’//tylko ja widze te zmiany - na razie, mogę je jeszcze cofnąć//programowanie... udalo sie!git add . && git commit -m ’naprawione’git push//caly swiat widzi te zmiany

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 11: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Release often, release early.

— Eric S. Raymond

a więc również...Commit often, commit early!

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 12: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Git jest szybki bo pracuje lokalnie!Jedyne komendy wymagające połączenia ze światem zewnętrznymto pull oraz push.

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 13: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Lokalne+

Szybkie=

częstsze commity=

mniej problemów typu ’ale przedtem działało...’

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 14: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Lokalne+

Szybkie=

częstsze commity=

mniej problemów typu ’ale przedtem działało...’

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 15: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Lokalne+

Szybkie=

częstsze commity=

mniej problemów typu ’ale przedtem działało...’

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 16: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Lokalne+

Szybkie=

częstsze commity=

mniej problemów typu ’ale przedtem działało...’

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 17: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Porozmawiajmy o branch i merge!

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 18: Dlaczego git to nie svn oraz dlaczego to dobrze ?

W SVN nie branchuje się zbyt często - powód?Bardzo nie przyjemny merge!W Git, branch i merge to przyjemność i robisz to jak najczęściej!

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 19: Dlaczego git to nie svn oraz dlaczego to dobrze ?

’Prawdziwe’ branch+merge wygląda tak:

SVN trochę kłamie twierdząc że wspiera branche... W efekciezawsze jest to:

Merge robimy z tym commit, od którego nasz branch pochodzi -pamiętacie?

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 20: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Tak zwany merge w SVN» cd calc/trunk» svn updateAt revision 405.» svn merge -r 341:HEADhttp://svn.example.com/repos/calc/branches/my-calc-branchU integer.cU button.cU Makefile» svn statusM integer.cM button.cM Makefile// właściwe mergowanie oglądanie diffów, testowanie czy działa...» svn commit -m "Merged my-calc-branch changes r341:405 intothe trunk."

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 21: Dlaczego git to nie svn oraz dlaczego to dobrze ?

’Prawdziwy’ merge w Git (master można rozumieć jako ’takitrunk’):

Git» git checkout master// jakby zmiana ’brancha’...» git merge mojBugfix// jakby byly konflikty - diffy i rozwiązywanie ich

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 22: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Pozostałe ’zabawki’:branch oraz merge - ’killer features’ Git’atag - tagowanie konkretnych miejsc w historii projektustash - ’taki schowek’ - schowa moje obecne zmiany, ale mogędo nich wrócić..gitignore - prosty sposób ignorowania plikówrebase - do zmiany historii drzewa drzewka projektu (wuproszczeniu). Uwaga, może być niebezpieczne.

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 23: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przykład tagowania:

Git» git tag ’1.0.BETA’» git push –tags//dopiero teraz ten tag widzi cały świat//listowanie tagów jest równie proste» git tag0.50.91.0.BETA

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 24: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Przykład stashowania:Chcę zrobić pull, jednak pisałem coś już u siebie więc git zabronimi pull jeśli nie zrobię commit - czego mogę nie chcieć.

Git» git pull//ERROR, ponieważ mam lokalne, nie commitowane zmiany» git stash»git pull//OK!

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 25: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Inny use-case, to jeżeli wiem że moje zmiany są ’do niczego’, stashpozbędzie mi się ich natychmiast.Listowanie obecnych stashy jest równie intuicyjne.

Git» git stash liststash@0: WIP on master: 18c8a19 Nowe ładne przyciski (nalicencji Public Domain)stash@1: WIP on master: 5731b35 Merge branch ’master’ ofgithub.com:ktoso/TravelingSalesman-NBP

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 26: Dlaczego git to nie svn oraz dlaczego to dobrze ?

.gitignore to wygodny sposób (plik) na zmuszenie gita abyignorował pliki pasujące do pewnych wzorców, na przykład:

.gitignore**.bak*.tmp*.classdist/*buildnbproject/private/platform-private.properties*platform-private.properties*nodes.xml

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 27: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Potencjalne przeszkody:

Przyzwyczajonym do SVN, może być z początku trudno sięprzestawićNajlepszy interface to command line - co nie każdemu możeodpowiadać. Warto dodać, że jest wyśmienity.Dość nie wygodne korzystanie MS Windows — ChrisAniszczyk (RedHat) i inni ciężko pracują nad JGit (Javowaimplementacja) jednak jeszcze nadal odstaje od natywnejwersji.

Są ’pluginy’ do NetBeans, Eclipse (EGit) oraz Intellij – generalniejednak są nadal nie dojrzałe.

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 28: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Poradniki i filmiki:Linus o SVN/CVS vs Githttp://www.youtube.com/watch?v=4XpnKHJAok8Fantastyczne darmowe (dla open) repo http://github.comMoja wideo-pomoc dla użytkowników windowshttp://www.youtube.com/watch?v=evb1P6MYqTkFajny blog z trafnymi opisami który wczoraj znalazłemhttp://hades.name/blog/Porównanie z innymi SCM (skrzywiony punkt widzeniatroszke) http://whygitisbetterthanx.com/

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?

Page 29: Dlaczego git to nie svn oraz dlaczego to dobrze ?

Ogromne dzięki za uwagę!

[email protected]/ktoso

Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?