SlideShare a Scribd company logo
1 of 51
Download to read offline
Mercurial




   ...i o systemach kontroli wersji

III Dni Wolnego Oprogramowania
         Bielsko-Biała 2010

 © Mikołaj Pastuszko & Michał Ptaszek
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
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
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
Co to jest rozproszony VCS?

 Architektury systemów kontroli wersji
     scentralizowane                    rozproszone




                                                                             5

                                      © Mikołaj Pastuszko & Michał Ptaszek 2010
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
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
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
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
Do dzieła!




  W tej scenie Michał podchodzi do laptopa
i zaczyna się prezentacja działania na żywo




                                                                  10

                            © Mikołaj Pastuszko & Michał Ptaszek 2010
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
Przykład szkolny




Tworzenie repozytorium

     # hg init



                                                       12

                 © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny




Status repozytorium (plików)

 # hg status [plik]



                                                           13

                     © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny




  Dodanie pliku

# hg add [plik]



                                                        14

                  © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny




Zmiany treści plików

# hg diff [plik]



                                                       15

                 © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny



Zapamiętanie zmian

# hg ci [plik]
# hg commit [plik]



                                                     16

               © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny




  Historia zmian

# hg log [plik]



                                                         17

                   © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny



Przenoszenie i kopiowanie plików

   # hg mv plik1 plik2

   # hg cp plik1 plik2


                                                            18

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny




Dostęp do starszych wersji

# hg update [wersja]



                                                          19

                    © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny



            Powrót do najnowszej wersji

                    # hg update

                # hg update tip


tip – najnowsza z zapamiętanych zmian (niezależna od gałęzi)
                                                                            20

                                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Ciekawostka




Mercurial uratował tę prezentację przed
     krwiożerczym OpenOffice...




                                                                21

                          © Mikołaj Pastuszko & Michał Ptaszek 2010
Rozpraszanie




W tej scenie repozytorium zostaje sklonowane
   (rozproszone) na laptopa z prezentacją.




                                                                  22

                            © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny rozproszony




Wypracowanie, 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
Przykład szkolny rozproszony




Publikacja repozytorium przez HTTP

          # hg serve



                                                             24

                       © Mikołaj Pastuszko & Michał Ptaszek 2010
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
Przykład szkolny rozproszony




   Pobranie zmian z zewnątrz

    # hg pull [źródło]



                                                            26

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny rozproszony




  Wysłanie zmian na zewnątrz

     # hg push [cel]



                                                           27

                     © Mikołaj Pastuszko & Michał Ptaszek 2010
O nie! Konflikt!




                                                28

          © Mikołaj Pastuszko & Michał Ptaszek 2010
Co to jest konflikt?




head – najnowsza wersja zmian w danej gałęzi
                                                                    29

                              © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny bezkonfliktowy




 Wyświetlenie aktualnych wersji head

           # hg heads



                                                               30

                         © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny bezkonfliktowy




     Wyświetlenie wersji tip

           # hg tip



                                                             31

                       © Mikołaj Pastuszko & Michał Ptaszek 2010
Jak to połączyć?




merge – łączenie wersji head
                                                          32

                    © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny bezkonfliktowy




     Połączenie wersji head

    # hg merge [wersja]



                                                            33

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Konflikt kontratakuje!




W tej scenie Michał i Mikołaj niezależnie
         edytują ten sam plik...




                                                                 34

                           © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny bezkonfliktowy




    Wyświetlenie listy konfliktów

 # hg resolve --list [plik]



                                                                35

                          © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny bezkonfliktowy




Oznaczenie konfliktu jako rozwiązanego

  # hg resolve --mark [plik]



                                                               36

                         © Mikołaj Pastuszko & Michał Ptaszek 2010
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
Przykład szkolny rozgałęziony




   Utworzenie nazwanej gałęzi

     # hg branch nazwa



                                                            38

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny rozgałęziony




 Wyświetlenie nazwanych gałęzi

       # hg branches



                                                            39

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny rozgałęziony




  Przejście do nazwanej gałęzi

    # hg update nazwa



                                                             40

                       © Mikołaj Pastuszko & Michał Ptaszek 2010
Etykiety




Etykieta (tag) - nazwa nadawana konkretnej wersji




                                                                     41

                               © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny etykietowany




   Oznaczenie wersji etykietą

      # hg tag nazwa



                                                             42

                       © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny etykietowany




     Wyświetlenie etykiet

        # hg tags



                                                            43

                      © Mikołaj Pastuszko & Michał Ptaszek 2010
Przykład szkolny etykietowany




Przejście do wersji o danej etykiecie

      # hg update nazwa



                                                               44

                         © Mikołaj Pastuszko & Michał Ptaszek 2010
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
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
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
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
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
Ź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
Dziękujemy




Pytania?

                                                 51

           © Mikołaj Pastuszko & Michał Ptaszek 2010

More Related Content

Viewers also liked

STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareEmpowered Presentations
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingContent Marketing Institute
 
WTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx versionWTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx versionTim O'Reilly
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksSlideShare
 

Viewers also liked (6)

STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to SlideshareSTOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
STOP! VIEW THIS! 10-Step Checklist When Uploading to Slideshare
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content MarketingHow To Get More From SlideShare - Super-Simple Tips For Content Marketing
How To Get More From SlideShare - Super-Simple Tips For Content Marketing
 
You Suck At PowerPoint!
You Suck At PowerPoint!You Suck At PowerPoint!
You Suck At PowerPoint!
 
WTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx versionWTF - Why the Future Is Up to Us - pptx version
WTF - Why the Future Is Up to Us - pptx version
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 

DWO 2010 - Mercurial

  • 1. Mercurial ...i o systemach kontroli wersji III 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 laptopa i 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 szkolny Tworzenie repozytorium # hg init 12 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 13. Przykład szkolny Status 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 szkolny Zmiany treści plików # hg diff [plik] 15 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 16. Przykład szkolny Zapamię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 szkolny Przenoszenie i kopiowanie plików # hg mv plik1 plik2 # hg cp plik1 plik2 18 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 19. Przykład szkolny Dostę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 tip tip – najnowsza z zapamiętanych zmian (niezależna od gałęzi) 20 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 21. Ciekawostka Mercurial uratował tę prezentację przed krwiożerczym OpenOffice... 21 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 22. Rozpraszanie W tej scenie repozytorium zostaje sklonowane (rozproszone) na laptopa z prezentacją. 22 © Mikołaj Pastuszko & Michał Ptaszek 2010
  • 23. Przykład szkolny rozproszony Wypracowanie, 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 rozproszony Publikacja 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 bezkonfliktowy Oznaczenie 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. Etykiety Etykieta (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 etykietowany Przejś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ękujemy Pytania? 51 © Mikołaj Pastuszko & Michał Ptaszek 2010