DWO 2010 - Mercurial
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

DWO 2010 - Mercurial

  • 766 views
Uploaded on

Mercurial introduction presented at Dni Wolnego Programowania 2010 in Bielsko-Biała, Poland

Mercurial introduction presented at Dni Wolnego Programowania 2010 in Bielsko-Biała, Poland

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
766
On Slideshare
645
From Embeds
121
Number of Embeds
5

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 121

http://www.zwodnik.pl 66
http://howtoloseacustomer.blogspot.com 52
http://howtoloseacustomer.blogspot.de 1
http://howtoloseacustomer.blogspot.co.uk 1
http://howtoloseacustomer.blogspot.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Mercurial ...i o systemach kontroli wersjiIII Dni Wolnego Oprogramowania Bielsko-Biała 2010 © Mikołaj Pastuszko & Michał Ptaszek
  • 2. Agenda Po co wersjonować?  Co to jest (rozproszony) system kontroli wersji?  Co to jest Mercurial? Jak tego użyć?  Rozpraszanie  O nie! Konflikt!  Gałęzie i etykiety Konfiguracja Porównanie z innymi VCS Mercurial w Internecie 2 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 3. Po co wersjonować? Argh, nadpisałem sobie plik... Argh, Ctrl+Z nie sięga tak daleko jak chcę... plik_0.1, plik_0.2, plik_0.5, plik_1.1, plik_2.0... który to był?! A gdyby napisać to na 2 sposoby... Skopiuję katalog... Jak opublikować swoją pracę?... Jak pozwolić innym ją rozwijać?... Jak połączyć zmiany moje i kolegi?... 3 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 4. Co to jest VCS? Version Control System → System Kontroli Wersji Polega na śledzeniu zmian  Zawartości plików (głównie pliki tekstowe, ale nie tylko)  Położenia plików  Metadanych Zmiany dokonywane przez wiele osób Obsługa konfliktów Możliwość tworzenia gałęzi, etykiet itd. 4 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 5. Co to jest rozproszony VCS? Architektury systemów kontroli wersji  scentralizowane  rozproszone 5 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 6. Co to jest rozproszony VCS? Distributed Version Control System Brak centralnego repozytorium → niezawodność! Użytkownicy używają repozytoriów lokalnych Większość operacji nie wymaga sieci → szybkość! Synchronizacja między repozytoriami w dowolnej chwili  pull  push 6 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 7. Co to jest rozproszony VCS? Może wersjonować lokalną pracę  Nie wymaga tworzenia serwera Uczestnictwo w projekcie nie wymaga decyzji opiekuna  Praca na lokalnym repozytorium  Możliwość publikacji własnej gałęzi  Opiekun decyduje o scalaniu zmian (gałęzi) Może przyjąć architekturę scentralizowaną 7 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 8. Co to jest Mercurial? Rozproszony System Kontroli Wersji ang. mercury – rtęć → Twórca: Matt Mackall Pierwsza wersja opublikowana 19 kwietnia 2005 Platformy  GNU/Linux MacOS X OpenSolaris Windows i inne Napisany w języku Python 8 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 9. Co to jest Mercurial? Założenia  Wysoka wydajność  Skalowalność  Bogate możliwości operacji na gałęziach Bardzo prosty w nauce i korzystaniu Wiele możliwych przypadków użycia Rozszerzalny dzięki wtyczkom 9 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 10. Do dzieła! W tej scenie Michał podchodzi do laptopai zaczyna się prezentacja działania na żywo 10 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 11. Przykład szkolny Mam napisać wypracowanie do szkoły.Chcę mieć możliwość powrotu do poprzednich wersji. (na wypadek jakby pies zjadł plik) 11 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 12. Przykład szkolnyTworzenie repozytorium # hg init 12 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 13. Przykład szkolnyStatus repozytorium (plików) # hg status [plik] 13 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 14. Przykład szkolny Dodanie pliku# hg add [plik] 14 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 15. Przykład szkolnyZmiany treści plików# hg diff [plik] 15 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 16. Przykład szkolnyZapamiętanie zmian# hg ci [plik]# hg commit [plik] 16 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 17. Przykład szkolny Historia zmian# hg log [plik] 17 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 18. Przykład szkolnyPrzenoszenie i kopiowanie plików # hg mv plik1 plik2 # hg cp plik1 plik2 18 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 19. Przykład szkolnyDostęp do starszych wersji# hg update [wersja] 19 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 20. Przykład szkolny Powrót do najnowszej wersji # hg update # hg update tiptip – najnowsza z zapamiętanych zmian (niezależna od gałęzi) 20 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 21. CiekawostkaMercurial uratował tę prezentację przed krwiożerczym OpenOffice... 21 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 22. RozpraszanieW tej scenie repozytorium zostaje sklonowane (rozproszone) na laptopa z prezentacją. 22 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 23. Przykład szkolny rozproszonyWypracowanie, które piszę, chcę udostępnić koledze by sprawdził pod kątem błędów. (i dopisał kilka akapitów :) ) 23 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 24. Przykład szkolny rozproszonyPublikacja repozytorium przez HTTP # hg serve 24 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 25. Przykład szkolny rozproszony Klonowanie repozytorium # hg clone źródło [cel]źródło → (http, https, ssh, lokalny katalog) 25 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 26. Przykład szkolny rozproszony Pobranie zmian z zewnątrz # hg pull [źródło] 26 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 27. Przykład szkolny rozproszony Wysłanie zmian na zewnątrz # hg push [cel] 27 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 28. O nie! Konflikt! 28 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 29. Co to jest konflikt?head – najnowsza wersja zmian w danej gałęzi 29 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 30. Przykład szkolny bezkonfliktowy Wyświetlenie aktualnych wersji head # hg heads 30 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 31. Przykład szkolny bezkonfliktowy Wyświetlenie wersji tip # hg tip 31 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 32. Jak to połączyć?merge – łączenie wersji head 32 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 33. Przykład szkolny bezkonfliktowy Połączenie wersji head # hg merge [wersja] 33 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 34. Konflikt kontratakuje!W tej scenie Michał i Mikołaj niezależnie edytują ten sam plik... 34 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 35. Przykład szkolny bezkonfliktowy Wyświetlenie listy konfliktów # hg resolve --list [plik] 35 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 36. Przykład szkolny bezkonfliktowyOznaczenie konfliktu jako rozwiązanego # hg resolve --mark [plik] 36 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 37. Gałęzie Anonimowe  Nowa wersja head zostaje utworzona implicite (nieoczekiwanie)  Raczej jako skutki uboczne innych operacji  Stosunkowo krótki czas życia (zakończony przez merge) Nazwane  Nowa wersja head zostaje utworzona explicite (z zamierzeniem)  Tworzenie jest celowe (np. praca nad inną funkcjonalnością)  Stosunkowo długi czas życia (niekoniecznie kończony przez merge)  Mają nazwy 37 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 38. Przykład szkolny rozgałęziony Utworzenie nazwanej gałęzi # hg branch nazwa 38 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 39. Przykład szkolny rozgałęziony Wyświetlenie nazwanych gałęzi # hg branches 39 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 40. Przykład szkolny rozgałęziony Przejście do nazwanej gałęzi # hg update nazwa 40 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 41. EtykietyEtykieta (tag) - nazwa nadawana konkretnej wersji 41 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 42. Przykład szkolny etykietowany Oznaczenie wersji etykietą # hg tag nazwa 42 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 43. Przykład szkolny etykietowany Wyświetlenie etykiet # hg tags 43 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 44. Przykład szkolny etykietowanyPrzejście do wersji o danej etykiecie # hg update nazwa 44 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 45. Konfiguracja - hgrc Per system  /etc/mercurial/hgrc  np. wtyczki, program diff itp. Per użytkownik Kolejność interpretowania  $HOME/.hgrc  np. nazwa użytkownika Per repozytorium  <repo>/.hg/hgrc  np. domyślny adres repozytorium do push i pull 45 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 46. Konfiguracja Ignorowanie wersjonowania plików  <repo>/.hgignore  Format ścieżek: – glob → shell style – regexp → wyrażenie regularne  Może być (i często jest) wersjonowany Etykiety (tags)  <repo>/.hgtags  Lista numerów wersji i ich etykiet 46 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 47. Mercurial vs SVN Architektura: rozproszona ↔ scentralizowana Praca lokalna: możliwa i łatwa ↔ niemożliwa Relokacja repozytorium: łatwa (klonowanie) ↔ pracochłonna Gałęzie (czas życia): przejrzysty ↔ śledzenie trudniejsze Zapamiętywanie zmian: szybkie ↔ wymaga sieci Konflikty: mogą być większe ↔ małe o ile częsty zapis Puste katalogi: brak obsługi ↔ obsługiwane 47 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 48. Mercurial vs Git Obsługa i konfiguracja: prosta ↔ trudniejsza Elastyczność: przyzwoita ↔ ogromna Porządkowanie rep.: niewymagane ↔ wymagane Historia repozytorium: stała i rosnąca ↔ możliwość zmian Merge: 2 rodziców ↔ dowolna ilość rodziców Język implementacji: Python ↔ C → http://gitvsmercurial.com/ ← 48 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 49. Hosting repozytoriów Mercuriala Bitbucket → http://bitbucket.org/ Google Code → http://code.google.com/ SourceForge → http://sourceforge.net/ Assembla → http://www.assembla.com/ Codebase → http://www.codebasehq.com/ GNU Savannah → http://savannah.gnu.org/ Alioth (Debian) → http://alioth.debian.org/ 49 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 50. Źródła http://mercurial.selenic.com/ Wikipedia → http://en.wikipedia.org/wiki/Mercurial http://versioncontrolblog.com/ http://versioncontrolblog.com/comparison/ http://koichitamura.blogspot.com/2008/06/mercurial-vs-subversion.html http://code.google.com/p/support/wiki/DVCSAnalysis → http://gitvsmercurial.com/ ← 50 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 51. DziękujemyPytania? 51 © Mikołaj Pastuszko & Michał Ptaszek 2010