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.
1. Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
2. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
3. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
4. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
5. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
6. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
7. Przyjemne rzeczy w Git:
rozproszony - zazwyczaj pracujemy lokalnie
szybki
mały
model 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?
8. W SVN repozytorium jest Bogiem...
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
9. 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?
10. Typowy workflow:
SVN
svn 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?
11. 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?
12. Git jest szybki bo pracuje lokalnie!
Jedyne komendy wymagające połączenia ze światem zewnętrznym
to pull oraz push.
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
17. Porozmawiajmy o branch i merge!
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
18. 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?
19. ’Prawdziwe’ branch+merge wygląda tak:
SVN trochę kłamie twierdząc że wspiera branche... W efekcie
zawsze 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?
20. Tak zwany merge w SVN
» cd calc/trunk
» svn update
At revision 405.
» svn merge -r 341:HEAD
http://svn.example.com/repos/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
» svn status
M integer.c
M button.c
M Makefile
// właściwe mergowanie oglądanie diffów, testowanie czy działa...
» svn commit -m "Merged my-calc-branch changes r341:405 into
the trunk."
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
21. ’Prawdziwy’ merge w Git (master można rozumieć jako ’taki
trunk’):
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?
22. Pozostałe ’zabawki’:
branch oraz merge - ’killer features’ Git’a
tag - tagowanie konkretnych miejsc w historii projektu
stash - ’taki schowek’ - schowa moje obecne zmiany, ale mogę
do nich wrócić.
.gitignore - prosty sposób ignorowania plików
rebase - do zmiany historii drzewa drzewka projektu (w
uproszczeniu). Uwaga, może być niebezpieczne.
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
23. 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 tag
0.5
0.9
1.0.BETA
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
24. Przykład stashowania:
Chcę zrobić pull, jednak pisałem coś już u siebie więc git zabroni
mi 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?
25. Inny use-case, to jeżeli wiem że moje zmiany są ’do niczego’, stash
pozbędzie mi się ich natychmiast.
Listowanie obecnych stashy jest równie intuicyjne.
Git
» git stash list
stash@0: WIP on master: 18c8a19 Nowe ładne przyciski (na
licencji Public Domain)
stash@1: WIP on master: 5731b35 Merge branch ’master’ of
github.com:ktoso/TravelingSalesman-NBP
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
26. .gitignore to wygodny sposób (plik) na zmuszenie gita aby
ignorował pliki pasujące do pewnych wzorców, na przykład:
.gitignore
*
*.bak
*.tmp
*.class
dist/*
build
nbproject/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?
27. Potencjalne przeszkody:
Przyzwyczajonym do SVN, może być z początku trudno się
przestawić
Najlepszy interface to command line - co nie każdemu może
odpowiadać. Warto dodać, że jest wyśmienity.
Dość nie wygodne korzystanie MS Windows — Chris
Aniszczyk (RedHat) i inni ciężko pracują nad JGit (Javowa
implementacja) jednak jeszcze nadal odstaje od natywnej
wersji.
Są ’pluginy’ do NetBeans, Eclipse (EGit) oraz Intellij – generalnie
jednak są nadal nie dojrzałe.
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
28. Poradniki i filmiki:
Linus o SVN/CVS vs Git
http://www.youtube.com/watch?v=4XpnKHJAok8
Fantastyczne darmowe (dla open) repo http://github.com
Moja wideo-pomoc dla użytkowników windows
http://www.youtube.com/watch?v=evb1P6MYqTk
Fajny blog z trafnymi opisami który wczoraj znalazłem
http://hades.name/blog/
Porównanie z innymi SCM (skrzywiony punkt widzenia
troszke) http://whygitisbetterthanx.com/
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?
29. Ogromne dzięki za uwagę!
kmalawski@project13.pl
www.github.com/ktoso
Konrad “Ktoso“ Malawski - 9 Lipca 2010 @ XSolve Dlaczego Git to nie SVN? Oraz dlaczego to dobrze?