240 likes | 369 Views
Maciej Hryniszak. Not Yet Another Conference Kraków , 2010-06-19. Systemy kontroli wersji. Public enemy number one czy twój największy przyjaciel?. Przesłanie.
E N D
Maciej Hryniszak Not YetAnotherConference Kraków , 2010-06-19 Systemy kontroli wersji Public enemy number one czy twój największy przyjaciel?
Przesłanie Zainteresowanie różnorodnością dostępnych systemów kontroli wersji aby lepiej i bardziej efektywnie wykorzystywać dostępne narzędzia
Agenda • Po co nam to wszystko? • Początki bywają trudne • Thenewage, czyli Subversion • Git – skąd to się wzięło? • Inne rozproszone systemy kontroli wersji • SVN/HG/Bazaarbestpractices
Początki… • Na początku był chaos… • TGZ + Patch • RCS
Początki… RevisionControl System (RCS), to komputerowy system do kontrolowania wersji plików tekstowych stosowany w środowiskach UNIX/Linux, np. tekstów źródłowych programów, dokumentów itp. Dzięki temu można dokumentować poszczególne zmiany wprowadzane w danym pliku oraz odtworzyć jego wcześniejsze wersje, gdy zajdzie taka potrzeba. RCS służy do kontrolowania zmian pojedynczych plików. Wikipedia
Ewolucja • EditAndPray • CheckoutLockModifyCheckin • CheckoutModifyMergeCheckin • CloneModifyCheckinPush
CLMC – to czego nikt nie lubi • Każda zmiana w pliku może zostać dokonana dopiero po bezpośrednim ustaleniu dostępu do tego pliku • Każdy plik zatwierdzany jest osobno • CVS, ClearCase
CLMC – to czego nikt nie lubi Jola Jolanta Monika Centralne Repozytorium Kodu Dorota Karolina
CMMC na ratunek! • Atomiczne zatwierdzanie zmian • Lepsza wydajność w rozproszonych środowiskach • Wygodniejsza obsługa • Światełko w tunelu
CMMC na ratunek! Jola Monika Centralne Repozytorium Kodu Dorota Karolina
Systemy scentralizowane • Subversion • Bazaar
CMCP – Thenewage • Centralizacja nie jest zła • Ale czasami bywa nieodpowiednia • Rozproszony model zarządzania kodem źródłowym
CMMC na ratunek! Jola Monika Dorota Karolina
Systemy zdecentralizowane • Git • Bazaar • Mercurial • SVK
Best practices Jak sprawić by pracowało się przyjemnie…
Subversion w codziennej pracy • Poprawna struktura repozytorium • Śledzenie łączenia zmian (merge) • Wyjmowanie wisienek • Fizyka mergowania • Praca w scentralizowanym środowisku • Problem powolnej sieci • Performance
Subversion w codziennej pracy • trunk • branches • tags • releases
Subversion w codziennej pracy • svnmerge -c REVISION URL • svn merge --reintegrate URL • svn log filename.ext@rev
Subversion w codziennej pracy • svnsyncinitializeDEST_URLSRC_URL • svnsyncsynchronizeDEST_URL
Bazaar w codziennej pracy • Śledzenie łączenia zmian (merge) • Fizyka mergowania • Praca w scentralizowanym środowisku • Praca w decentralizowanym środowisku • Performance
Bazaar w codziennej pracy • bzrbranch • bzrimport-svn • bzr bind URL • bzrunbind
Mercurial w codziennej pracy • Fizyka mergowania • Patchqueues • Performance
Mercurial w codziennej pracy • hgqinit NAZWA • hgqrefresh • hgqfinish • hgqpush / hgqpop