Mercurial   ...i o systemach kontroli wersjiIII Dni Wolnego Oprogramowania         Bielsko-Biała 2010 © Mikołaj Pastuszko ...
Agenda Po co wersjonować?     Co to jest (rozproszony) system kontroli wersji?     Co to jest Mercurial? Jak tego użyć...
Po co wersjonować? Argh, nadpisałem sobie plik... Argh, Ctrl+Z nie sięga tak daleko jak chcę... plik_0.1, plik_0.2, pli...
Co to jest VCS? Version Control System → System Kontroli Wersji Polega na śledzeniu zmian      Zawartości plików (główn...
Co to jest rozproszony VCS? Architektury systemów kontroli wersji     scentralizowane                    rozproszone   ...
Co to jest rozproszony VCS? Distributed Version Control System Brak centralnego repozytorium → niezawodność! Użytkownic...
Co to jest rozproszony VCS? Może wersjonować lokalną pracę     Nie wymaga tworzenia serwera Uczestnictwo w projekcie ni...
Co to jest Mercurial? Rozproszony System Kontroli Wersji ang. mercury – rtęć    → Twórca: Matt Mackall Pierwsza wersja...
Co to jest Mercurial? Założenia     Wysoka wydajność     Skalowalność     Bogate możliwości operacji na gałęziach Bar...
Do dzieła!  W tej scenie Michał podchodzi do laptopai zaczyna się prezentacja działania na żywo                           ...
Przykład szkolny      Mam napisać wypracowanie do szkoły.Chcę mieć możliwość powrotu do poprzednich wersji.        (na wyp...
Przykład szkolnyTworzenie repozytorium     # hg init                                                       12             ...
Przykład szkolnyStatus repozytorium (plików) # hg status [plik]                                                           ...
Przykład szkolny  Dodanie pliku# hg add [plik]                                                        14                  ...
Przykład szkolnyZmiany treści plików# hg diff [plik]                                                       15             ...
Przykład szkolnyZapamiętanie zmian# hg ci [plik]# hg commit [plik]                                                     16 ...
Przykład szkolny  Historia zmian# hg log [plik]                                                         17                ...
Przykład szkolnyPrzenoszenie i kopiowanie plików   # hg mv plik1 plik2   # hg cp plik1 plik2                              ...
Przykład szkolnyDostęp do starszych wersji# hg update [wersja]                                                          19...
Przykład szkolny            Powrót do najnowszej wersji                    # hg update                # hg update tiptip –...
CiekawostkaMercurial uratował tę prezentację przed     krwiożerczym OpenOffice...                                         ...
RozpraszanieW tej scenie repozytorium zostaje sklonowane   (rozproszone) na laptopa z prezentacją.                        ...
Przykład szkolny rozproszonyWypracowanie, które piszę, chcę udostępnić koledze by           sprawdził pod kątem błędów.   ...
Przykład szkolny rozproszonyPublikacja repozytorium przez HTTP          # hg serve                                        ...
Przykład szkolny rozproszony        Klonowanie repozytorium     # hg clone źródło [cel]źródło → (http, https, ssh, lokalny...
Przykład szkolny rozproszony   Pobranie zmian z zewnątrz    # hg pull [źródło]                                            ...
Przykład szkolny rozproszony  Wysłanie zmian na zewnątrz     # hg push [cel]                                              ...
O nie! Konflikt!                                                28          © Mikołaj Pastuszko & Michał Ptaszek 2010
Co to jest konflikt?head – najnowsza wersja zmian w danej gałęzi                                                          ...
Przykład szkolny bezkonfliktowy Wyświetlenie aktualnych wersji head           # hg heads                                  ...
Przykład szkolny bezkonfliktowy     Wyświetlenie wersji tip           # hg tip                                            ...
Jak to połączyć?merge – łączenie wersji head                                                          32                  ...
Przykład szkolny bezkonfliktowy     Połączenie wersji head    # hg merge [wersja]                                         ...
Konflikt kontratakuje!W tej scenie Michał i Mikołaj niezależnie         edytują ten sam plik...                           ...
Przykład szkolny bezkonfliktowy    Wyświetlenie listy konfliktów # hg resolve --list [plik]                               ...
Przykład szkolny bezkonfliktowyOznaczenie konfliktu jako rozwiązanego  # hg resolve --mark [plik]                         ...
Gałęzie Anonimowe     Nowa wersja head zostaje utworzona implicite (nieoczekiwanie)     Raczej jako skutki uboczne inny...
Przykład szkolny rozgałęziony   Utworzenie nazwanej gałęzi     # hg branch nazwa                                          ...
Przykład szkolny rozgałęziony Wyświetlenie nazwanych gałęzi       # hg branches                                           ...
Przykład szkolny rozgałęziony  Przejście do nazwanej gałęzi    # hg update nazwa                                          ...
EtykietyEtykieta (tag) - nazwa nadawana konkretnej wersji                                                                 ...
Przykład szkolny etykietowany   Oznaczenie wersji etykietą      # hg tag nazwa                                            ...
Przykład szkolny etykietowany     Wyświetlenie etykiet        # hg tags                                                   ...
Przykład szkolny etykietowanyPrzejście do wersji o danej etykiecie      # hg update nazwa                                 ...
Konfiguracja - hgrc Per system     /etc/mercurial/hgrc     np. wtyczki, program diff itp. Per użytkownik              ...
Konfiguracja Ignorowanie wersjonowania plików     <repo>/.hgignore     Format ścieżek:       –   glob → shell style    ...
Mercurial vs SVN Architektura:           rozproszona        ↔         scentralizowana Praca lokalna:          możliwa i ...
Mercurial vs Git Obsługa i konfiguracja:   prosta            ↔        trudniejsza Elastyczność:             przyzwoita  ...
Hosting repozytoriów Mercuriala Bitbucket → http://bitbucket.org/ Google Code → http://code.google.com/ SourceForge → h...
Źródła http://mercurial.selenic.com/ Wikipedia → http://en.wikipedia.org/wiki/Mercurial http://versioncontrolblog.com/...
DziękujemyPytania?                                                 51           © Mikołaj Pastuszko & Michał Ptaszek 2010
Upcoming SlideShare
Loading in...5
×

DWO 2010 - Mercurial

669

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
669
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DWO 2010 - Mercurial

  1. 1. Mercurial ...i o systemach kontroli wersjiIII Dni Wolnego Oprogramowania Bielsko-Biała 2010 © Mikołaj Pastuszko & Michał Ptaszek
  2. 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. 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. 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. 5. Co to jest rozproszony VCS? Architektury systemów kontroli wersji  scentralizowane  rozproszone 5 © Mikołaj Pastuszko & Michał Ptaszek 2010
  6. 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. 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. 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. 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. 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. 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. 12. Przykład szkolnyTworzenie repozytorium # hg init 12 © Mikołaj Pastuszko & Michał Ptaszek 2010
  13. 13. Przykład szkolnyStatus repozytorium (plików) # hg status [plik] 13 © Mikołaj Pastuszko & Michał Ptaszek 2010
  14. 14. Przykład szkolny Dodanie pliku# hg add [plik] 14 © Mikołaj Pastuszko & Michał Ptaszek 2010
  15. 15. Przykład szkolnyZmiany treści plików# hg diff [plik] 15 © Mikołaj Pastuszko & Michał Ptaszek 2010
  16. 16. Przykład szkolnyZapamiętanie zmian# hg ci [plik]# hg commit [plik] 16 © Mikołaj Pastuszko & Michał Ptaszek 2010
  17. 17. Przykład szkolny Historia zmian# hg log [plik] 17 © Mikołaj Pastuszko & Michał Ptaszek 2010
  18. 18. Przykład szkolnyPrzenoszenie i kopiowanie plików # hg mv plik1 plik2 # hg cp plik1 plik2 18 © Mikołaj Pastuszko & Michał Ptaszek 2010
  19. 19. Przykład szkolnyDostęp do starszych wersji# hg update [wersja] 19 © Mikołaj Pastuszko & Michał Ptaszek 2010
  20. 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. 21. CiekawostkaMercurial uratował tę prezentację przed krwiożerczym OpenOffice... 21 © Mikołaj Pastuszko & Michał Ptaszek 2010
  22. 22. RozpraszanieW tej scenie repozytorium zostaje sklonowane (rozproszone) na laptopa z prezentacją. 22 © Mikołaj Pastuszko & Michał Ptaszek 2010
  23. 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. 24. Przykład szkolny rozproszonyPublikacja repozytorium przez HTTP # hg serve 24 © Mikołaj Pastuszko & Michał Ptaszek 2010
  25. 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. 26. Przykład szkolny rozproszony Pobranie zmian z zewnątrz # hg pull [źródło] 26 © Mikołaj Pastuszko & Michał Ptaszek 2010
  27. 27. Przykład szkolny rozproszony Wysłanie zmian na zewnątrz # hg push [cel] 27 © Mikołaj Pastuszko & Michał Ptaszek 2010
  28. 28. O nie! Konflikt! 28 © Mikołaj Pastuszko & Michał Ptaszek 2010
  29. 29. Co to jest konflikt?head – najnowsza wersja zmian w danej gałęzi 29 © Mikołaj Pastuszko & Michał Ptaszek 2010
  30. 30. Przykład szkolny bezkonfliktowy Wyświetlenie aktualnych wersji head # hg heads 30 © Mikołaj Pastuszko & Michał Ptaszek 2010
  31. 31. Przykład szkolny bezkonfliktowy Wyświetlenie wersji tip # hg tip 31 © Mikołaj Pastuszko & Michał Ptaszek 2010
  32. 32. Jak to połączyć?merge – łączenie wersji head 32 © Mikołaj Pastuszko & Michał Ptaszek 2010
  33. 33. Przykład szkolny bezkonfliktowy Połączenie wersji head # hg merge [wersja] 33 © Mikołaj Pastuszko & Michał Ptaszek 2010
  34. 34. Konflikt kontratakuje!W tej scenie Michał i Mikołaj niezależnie edytują ten sam plik... 34 © Mikołaj Pastuszko & Michał Ptaszek 2010
  35. 35. Przykład szkolny bezkonfliktowy Wyświetlenie listy konfliktów # hg resolve --list [plik] 35 © Mikołaj Pastuszko & Michał Ptaszek 2010
  36. 36. Przykład szkolny bezkonfliktowyOznaczenie konfliktu jako rozwiązanego # hg resolve --mark [plik] 36 © Mikołaj Pastuszko & Michał Ptaszek 2010
  37. 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. 38. Przykład szkolny rozgałęziony Utworzenie nazwanej gałęzi # hg branch nazwa 38 © Mikołaj Pastuszko & Michał Ptaszek 2010
  39. 39. Przykład szkolny rozgałęziony Wyświetlenie nazwanych gałęzi # hg branches 39 © Mikołaj Pastuszko & Michał Ptaszek 2010
  40. 40. Przykład szkolny rozgałęziony Przejście do nazwanej gałęzi # hg update nazwa 40 © Mikołaj Pastuszko & Michał Ptaszek 2010
  41. 41. EtykietyEtykieta (tag) - nazwa nadawana konkretnej wersji 41 © Mikołaj Pastuszko & Michał Ptaszek 2010
  42. 42. Przykład szkolny etykietowany Oznaczenie wersji etykietą # hg tag nazwa 42 © Mikołaj Pastuszko & Michał Ptaszek 2010
  43. 43. Przykład szkolny etykietowany Wyświetlenie etykiet # hg tags 43 © Mikołaj Pastuszko & Michał Ptaszek 2010
  44. 44. Przykład szkolny etykietowanyPrzejście do wersji o danej etykiecie # hg update nazwa 44 © Mikołaj Pastuszko & Michał Ptaszek 2010
  45. 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. 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. 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. 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. 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. 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. 51. DziękujemyPytania? 51 © Mikołaj Pastuszko & Michał Ptaszek 2010
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×