51
Mercurial Mercurial ...i o systemach kontroli wersji ...i o systemach kontroli wersji III Dni Wolnego Oprogramowania III Dni Wolnego Oprogramowania Bielsko-Biała Bielsko-Biała 2010 2010 © Mikołaj Pastuszko & Michał Ptaszek © Mikołaj Pastuszko & Michał Ptaszek

DWO 2010 - Mercurial

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: DWO 2010 - Mercurial

MercurialMercurial

...i o systemach kontroli wersji...i o systemach kontroli wersji

III Dni Wolnego OprogramowaniaIII Dni Wolnego Oprogramowania

Bielsko-Biała Bielsko-Biała 20102010

© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

Page 2: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

22

AgendaAgenda

Po co wersjonować?Po co wersjonować? Co to jest (rozproszony) system kontroli wersji?Co to jest (rozproszony) system kontroli wersji? Co to jest Mercurial?Co to jest Mercurial?

Jak tego użyć?Jak tego użyć? RozpraszanieRozpraszanie O nie! Konflikt!O nie! Konflikt! Gałęzie i etykietyGałęzie i etykiety

KonfiguracjaKonfiguracja

Porównanie z innymi VCSPorównanie z innymi VCS

Mercurial w InternecieMercurial w Internecie

Page 3: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

33

Po co wersjonować?Po co wersjonować?

Argh, nadpisałem sobie plik...Argh, nadpisałem sobie plik...

Argh, Ctrl+Z nie sięga tak daleko jak chcę...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...plik_0.1, plik_0.2, plik_0.5, plik_1.1, plik_2.0... który to był?! który to był?!

A gdyby napisać to na 2 sposoby... A gdyby napisać to na 2 sposoby... Skopiuję katalog...Skopiuję katalog...

Jak opublikować swoją pracę?...Jak opublikować swoją pracę?...

Jak pozwolić innym ją rozwijać?...Jak pozwolić innym ją rozwijać?...

Jak połączyć zmiany moje i kolegi?...Jak połączyć zmiany moje i kolegi?...

Page 4: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

44

Co to jest VCS?Co to jest VCS?

VVersion ersion CControl ontrol SSystem → System Kontroli Wersjiystem → System Kontroli Wersji

Polega na Polega na śledzeniu zmianśledzeniu zmian Zawartości plików Zawartości plików (głównie pliki tekstowe, ale nie tylko)(głównie pliki tekstowe, ale nie tylko)

Położenia plikówPołożenia plików MetadanychMetadanych

Zmiany dokonywane przez Zmiany dokonywane przez wiele osóbwiele osób

Obsługa konfliktówObsługa konfliktów

Możliwość tworzenia gałęzi, etykiet itd.Możliwość tworzenia gałęzi, etykiet itd.

Page 5: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

55

Co to jest rozproszony VCS?Co to jest rozproszony VCS?

Architektury Architektury ssystemów kontroli wersjiystemów kontroli wersji scentralizowanescentralizowane rozproszonerozproszone

Page 6: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

66

Co to jest rozproszony VCS?Co to jest rozproszony VCS?

DDistributedistributed V Version ersion CControl ontrol SSystemystem

Brak centralnego repozytorium → Brak centralnego repozytorium → niezawodność!niezawodność!

Użytkownicy używają repozytoriów Użytkownicy używają repozytoriów lokalnychlokalnych

Większość operacji Większość operacji nie wymaga sieci nie wymaga sieci → → szybkość!szybkość!

SynchronizacjaSynchronizacja między repozytoriami w między repozytoriami w dowolnej chwilidowolnej chwili pullpull pushpush

Page 7: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

77

Co to jest rozproszony VCS?Co to jest rozproszony VCS?

Może wersjonować Może wersjonować lokalną pracęlokalną pracę Nie wymagaNie wymaga tworzenia serwera tworzenia serwera

Uczestnictwo w projekcie nie wymaga decyzji opiekunaUczestnictwo w projekcie nie wymaga decyzji opiekuna Praca na Praca na lokalnym lokalnym repozytoriumrepozytorium Możliwość publikacji Możliwość publikacji własnej gałęziwłasnej gałęzi Opiekun decyduje o Opiekun decyduje o scalaniuscalaniu zmian (gałęzi)zmian (gałęzi)

Może przyjąć architekturę scentralizowanąMoże przyjąć architekturę scentralizowaną

Page 8: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

88

Co to jest Mercurial?Co to jest Mercurial?

Rozproszony System Kontroli WersjiRozproszony System Kontroli Wersji

ang. mercury – rtęć ang. mercury – rtęć →→

Twórca: Matt MackallTwórca: Matt Mackall

Pierwsza wersja opublikowana Pierwsza wersja opublikowana 19 kwietnia 200519 kwietnia 2005

PlatformyPlatformy GNU/LinuxGNU/Linux MacOS XMacOS X OpenSolarisOpenSolaris WindowsWindows i innei inne

Napisany w języku Napisany w języku PythonPython

Page 9: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

99

Co to jest Mercurial?Co to jest Mercurial?

ZałożeniaZałożenia Wysoka Wysoka wydajnośćwydajność SkalowalnośćSkalowalność Bogate możliwości Bogate możliwości operacji na gałęziachoperacji na gałęziach

Bardzo Bardzo prostyprosty w nauce i korzystaniu w nauce i korzystaniu

WieleWiele możliwych możliwych przypadków użyciaprzypadków użycia

RozszerzalnyRozszerzalny dzięki wtyczkom dzięki wtyczkom

Page 10: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1010

Do dzieła!Do dzieła!

W tej scenie Michał podchodzi do laptopaW tej scenie Michał podchodzi do laptopai zaczyna się prezentacja działania na żywoi zaczyna się prezentacja działania na żywoW tej scenie Michał podchodzi do laptopaW tej scenie Michał podchodzi do laptopa

i zaczyna się prezentacja działania na żywoi zaczyna się prezentacja działania na żywo

Page 11: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1111

Przykład szkolnyPrzykład szkolny

Mam napisać wypracowanie do szkoły.Mam napisać wypracowanie do szkoły.Chcę mieć możliwość powrotu do poprzednich wersji.Chcę mieć możliwość powrotu do poprzednich wersji.

(na wypadek jakby pies zjadł plik)(na wypadek jakby pies zjadł plik)

Page 12: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1212

Przykład szkolnyPrzykład szkolny

Tworzenie Tworzenie reporepozytoriumzytorium

# hg init# hg init

Page 13: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1313

Przykład szkolnyPrzykład szkolny

Status Status reporepozytorium (plików)zytorium (plików)

# hg st# hg status [atus [plikplik]]

Page 14: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1414

Przykład szkolnyPrzykład szkolny

Dodanie plikuDodanie pliku

# hg add # hg add [[plikplik]]

Page 15: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1515

Przykład szkolnyPrzykład szkolny

Zmiany treści plikówZmiany treści plików

# hg d# hg diffiff [ [plikplik]]

Page 16: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1616

Przykład szkolnyPrzykład szkolny

Zapamiętanie zmianZapamiętanie zmian

# hg ci # hg ci [[plikplik]]

# hg commit [# hg commit [plikplik]]

Page 17: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1717

Przykład szkolnyPrzykład szkolny

Historia zmianHistoria zmian

# hg log # hg log [[plikplik]]

Page 18: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1818

Przykład szkolnyPrzykład szkolny

Przenoszenie i kopiowanie plikówPrzenoszenie i kopiowanie plików

# hg mv # hg mv plik1 plik2plik1 plik2

# hg cp # hg cp plik1 plik2plik1 plik2

Page 19: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

1919

Przykład szkolnyPrzykład szkolny

Dostęp do starszych wersjiDostęp do starszych wersji

# hg up# hg updatedate [[wersjawersja]]

Page 20: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2020

Przykład szkolnyPrzykład szkolny

Powrót do najnowszej wersjiPowrót do najnowszej wersji

# hg up# hg updatedate

# hg up# hg update date tiptip

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

Page 21: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2121

CiekawostkaCiekawostka

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

Page 22: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2222

RozpraszanieRozpraszanie

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

Page 23: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2323

Przykład szkolny rozproszonyPrzykład szkolny rozproszony

Wypracowanie, które piszę, chcę udostępnić koledze by Wypracowanie, które piszę, chcę udostępnić koledze by sprawdził pod kątem błędów.sprawdził pod kątem błędów.(i dopisał kilka akapitów :) )(i dopisał kilka akapitów :) )

Page 24: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2424

Przykład szkolny rozproszonyPrzykład szkolny rozproszony

Publikacja repozytorium przez HTTPPublikacja repozytorium przez HTTP

# hg serve# hg serve

Page 25: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2525

Przykład szkolny rozproszonyPrzykład szkolny rozproszony

Klonowanie repozytoriumKlonowanie repozytorium

# hg clone # hg clone źródło źródło [[celcel]]

źródło → źródło → (http, https, ssh, (http, https, ssh, lokalny kataloglokalny katalog))

Page 26: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2626

Przykład szkolny rozproszonyPrzykład szkolny rozproszony

Pobranie zmian z zewnątrzPobranie zmian z zewnątrz

# hg pull # hg pull [[źródłoźródło]]

Page 27: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2727

Przykład szkolny rozproszonyPrzykład szkolny rozproszony

Wysłanie zmian na zewnątrzWysłanie zmian na zewnątrz

# hg push # hg push [[celcel]]

Page 28: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2828

O nie! Konflikt!O nie! Konflikt!

Page 29: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

2929

Co to jest konflikt?Co to jest konflikt?

headhead – najnowsza wersja zmian w danej – najnowsza wersja zmian w danej gałęzigałęzi

Page 30: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3030

Przykład szkolny bezkonfliktowyPrzykład szkolny bezkonfliktowy

Wyświetlenie aktualnych wersji headWyświetlenie aktualnych wersji head

# hg heads# hg heads

Page 31: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3131

Przykład szkolny bezkonfliktowyPrzykład szkolny bezkonfliktowy

Wyświetlenie wersji Wyświetlenie wersji tiptip

# hg tip# hg tip

Page 32: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3232

Jak to połączyć?Jak to połączyć?

mergemerge – łączenie wersji – łączenie wersji headhead

Page 33: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3333

Przykład szkolny bezkonfliktowyPrzykład szkolny bezkonfliktowy

Połączenie wersji Połączenie wersji headhead

# hg merge # hg merge [[wersjawersja]]

Page 34: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3434

Konflikt kontratakuje!Konflikt kontratakuje!

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

Page 35: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3535

Przykład szkolny bezkonfliktowyPrzykład szkolny bezkonfliktowy

Wyświetlenie listy konfliktówWyświetlenie listy konfliktów

# hg resolve --list # hg resolve --list [[plikplik]]

Page 36: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3636

Przykład szkolny bezkonfliktowyPrzykład szkolny bezkonfliktowy

Oznaczenie konfliktu jako rozwiązanegoOznaczenie konfliktu jako rozwiązanego

# hg resolve --mark # hg resolve --mark [[plikplik]]

Page 37: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3737

GałęzieGałęzie

AnonimoweAnonimowe Nowa wersja Nowa wersja headhead zostaje utworzona zostaje utworzona impliciteimplicite (nieoczekiwanie) (nieoczekiwanie) Raczej jako Raczej jako skutki uboczneskutki uboczne innych operacji innych operacji Stosunkowo Stosunkowo krótki czas życiakrótki czas życia (zakończony przez (zakończony przez mergemerge))

NazwaneNazwane Nowa wersja Nowa wersja headhead zostaje utworzona zostaje utworzona expliciteexplicite (z zamierzeniem) (z zamierzeniem) Tworzenie jest Tworzenie jest celowe celowe (np. praca nad inną funkcjonalnością)(np. praca nad inną funkcjonalnością) Stosunkowo Stosunkowo długi czas życiadługi czas życia (niekoniecznie kończony przez (niekoniecznie kończony przez mergemerge)) Mają Mają nazwynazwy

Page 38: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3838

Przykład szkolny rozgałęzionyPrzykład szkolny rozgałęziony

Utworzenie nazwanej gałęziUtworzenie nazwanej gałęzi

# hg branch # hg branch nazwanazwa

Page 39: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

3939

Przykład szkolny rozgałęzionyPrzykład szkolny rozgałęziony

Wyświetlenie nazwanych gałęziWyświetlenie nazwanych gałęzi

# hg branches# hg branches

Page 40: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4040

Przykład szkolny rozgałęzionyPrzykład szkolny rozgałęziony

Przejście do nazwanej gałęziPrzejście do nazwanej gałęzi

# hg up# hg update date nazwanazwa

Page 41: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4141

EtykietyEtykiety

EtykietaEtykieta ( (tagtag) - ) - nazwa nazwa nadawana nadawana konkretnej wersjikonkretnej wersji

Page 42: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4242

Przykład szkolny etykietowanyPrzykład szkolny etykietowany

Oznaczenie wersji etykietąOznaczenie wersji etykietą

# hg tag # hg tag nazwanazwa

Page 43: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4343

Przykład szkolny etykietowanyPrzykład szkolny etykietowany

Wyświetlenie etykietWyświetlenie etykiet

# hg tags# hg tags

Page 44: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4444

Przykład szkolny etykietowanyPrzykład szkolny etykietowany

Przejście do wersji o danej etykieciePrzejście do wersji o danej etykiecie

# hg up# hg update date nazwanazwa

Page 45: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4545

Konfiguracja - Konfiguracja - hgrchgrc

Per Per systemsystem /etc/mercurial/hgrc/etc/mercurial/hgrc

np. wtyczki, program np. wtyczki, program diff diff itp.itp.

Per Per użytkownikużytkownik $HOME/.hgrc$HOME/.hgrc

np. nazwa użytkownikanp. nazwa użytkownika

Per Per repozytoriumrepozytorium <repo>/.hg/<repo>/.hg/hgrchgrc

np. domyślny adres repozytorium do np. domyślny adres repozytorium do pushpush i i pullpull

Kolejność interpretowaniaKolejność interpretowania

Page 46: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4646

KonfiguracjaKonfiguracja

Ignorowanie wersjonowania plikówIgnorowanie wersjonowania plików <repo>/.hgignore<repo>/.hgignore

Format ścieżek:Format ścieżek:

– glob → shell styleglob → shell style– regexp → wyrażenie regularneregexp → wyrażenie regularne

Może być (i często jest) Może być (i często jest) wersjonowanywersjonowany

Etykiety (Etykiety (tagstags)) <repo>/.hgtags<repo>/.hgtags

Lista numerów wersji i ich etykietLista numerów wersji i ich etykiet

Page 47: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4747

Mercurial vs SVNMercurial vs SVN

Architektura:Architektura: rozproszonarozproszona ↔↔ scentralizowanascentralizowana

Praca lokalna:Praca lokalna: możliwa i łatwamożliwa i łatwa ↔↔ niemożliwaniemożliwa

Relokacja repozytorium:Relokacja repozytorium: łatwa (klonowanie)łatwa (klonowanie) ↔↔ pracochłonnapracochłonna

Gałęzie (czas życia):Gałęzie (czas życia): przejrzystyprzejrzysty ↔↔ śledzenie trudniejsześledzenie trudniejsze

Zapamiętywanie zmian:Zapamiętywanie zmian: szybkieszybkie ↔↔ wymaga sieciwymaga sieci

Konflikty:Konflikty: mogą być większemogą być większe ↔↔ małe o ile częsty zapismałe o ile częsty zapis

Puste katalogi:Puste katalogi: brak obsługibrak obsługi ↔↔ obsługiwaneobsługiwane

Page 48: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4848

Mercurial vs GitMercurial vs Git

Obsługa i konfiguracja:Obsługa i konfiguracja: prostaprosta ↔↔ trudniejszatrudniejsza

Elastyczność:Elastyczność: przyzwoitaprzyzwoita ↔↔ ogromnaogromna

Porządkowanie rep.:Porządkowanie rep.: niewymaganeniewymagane ↔↔ wymaganewymagane

Historia repozytorium:Historia repozytorium: stała i rosnącastała i rosnąca ↔↔ możliwość zmianmożliwość zmian

Merge:Merge: 2 rodziców2 rodziców ↔↔ dowolnadowolna ilość ilość rodzicówrodziców

Język implementacji:Język implementacji: PythonPython ↔↔ CC

→ → http://gitvsmercurial.com/http://gitvsmercurial.com/ ←←

Page 49: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

4949

Hosting repozytoriów MercurialaHosting repozytoriów Mercuriala

BitbucketBitbucket → → http://bitbucket.org/http://bitbucket.org/

Google CodeGoogle Code → → http://code.google.com/http://code.google.com/

SourceForgeSourceForge → → http://sourceforge.net/http://sourceforge.net/

AssemblaAssembla → → http://www.assembla.com/http://www.assembla.com/

CodebaseCodebase → → http://www.codebasehq.com/http://www.codebasehq.com/

GNU SavannahGNU Savannah → → http://savannah.gnu.org/http://savannah.gnu.org/

Alioth (Debian)Alioth (Debian) → → http://alioth.debian.org/http://alioth.debian.org/

Page 50: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

5050

ŹródłaŹródła

http://mercurial.selenic.com/http://mercurial.selenic.com/

Wikipedia → Wikipedia → http://en.wikipedia.org/wiki/Mercurialhttp://en.wikipedia.org/wiki/Mercurial

http://versioncontrolblog.com/http://versioncontrolblog.com/

http://versioncontrolblog.com/comparison/http://versioncontrolblog.com/comparison/

http://koichitamura.blogspot.com/2008/06/mercurial-vs-subversion.htmlhttp://koichitamura.blogspot.com/2008/06/mercurial-vs-subversion.html

http://code.google.com/p/support/wiki/DVCSAnalysishttp://code.google.com/p/support/wiki/DVCSAnalysis

→ → http://gitvsmercurial.com/http://gitvsmercurial.com/ ←←

Page 51: DWO 2010 - Mercurial

20102010© Mikołaj Pastuszko & Michał Ptaszek© Mikołaj Pastuszko & Michał Ptaszek

5151

DziękujemyDziękujemy

Pytania?Pytania?