1 Systemy kontroli wersji Public enemy number one czy twój największy przyjaciel? Not Yet Another Conference Kraków, 2010-06-19 Maciej Hryniszak
2 Przesłanie Zainteresowanie różnorodnością dostępnych systemów kontroli wersji aby lepiej i bardziej efektywnie wykorzystywać dostępne narzędzia
3 Agenda Po co nam to wszystko? Po co nam to wszystko? Początki bywają trudne Początki bywają trudne The new age, czyli Subversion The new age, czyli Subversion Git – skąd to się wzięło? Git – skąd to się wzięło? Inne rozproszone systemy kontroli wersji Inne rozproszone systemy kontroli wersji SVN/HG/Bazaar best practices SVN/HG/Bazaar best practices
4 Początki… Na początku był chaos… Na początku był chaos… TGZ + Patch TGZ + Patch RCS RCS
5 Początki… Revision Control 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
6 Ewolucja E dit A nd P ray E dit A nd P ray C heckout L ock M odify C heckin C heckout L ock M odify C heckin C heckout M odify M erge C heckin C heckout M odify M erge C heckin C lone M odify C heckin P ush C lone M odify C heckin P ush
7 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żda zmiana w pliku może zostać dokonana dopiero po bezpośrednim ustaleniu dostępu do tego pliku Każdy plik zatwierdzany jest osobno Każdy plik zatwierdzany jest osobno CVS, ClearCase CVS, ClearCase
8 CLMC – to czego nikt nie lubi Jola Monika Karolina Dorota Jolanta Centralne Repozytorium Kodu
9 CMMC na ratunek! Atomiczne zatwierdzanie zmian Atomiczne zatwierdzanie zmian Lepsza wydajność w rozproszonych środowiskach Lepsza wydajność w rozproszonych środowiskach Wygodniejsza obsługa Wygodniejsza obsługa Światełko w tunelu Światełko w tunelu
10 CMMC na ratunek! Jola Monika Karolina Dorota Centralne Repozytorium Kodu
11 Systemy scentralizowane Subversion Subversion Bazaar Bazaar
12 CMCP – The new age Centralizacja nie jest zła Centralizacja nie jest zła Ale czasami bywa nieodpowiednia Ale czasami bywa nieodpowiednia Rozproszony model zarządzania kodem źródłowym Rozproszony model zarządzania kodem źródłowym
13 CMMC na ratunek! Jola Monika Karolina Dorota
14 Systemy zdecentralizowane Git Git Bazaar Bazaar Mercurial Mercurial SVK SVK
15 Best practices Jak sprawić by pracowało się przyjemnie…
16 Subversion w codziennej pracy Poprawna struktura repozytorium Poprawna struktura repozytorium Śledzenie łączenia zmian (merge) Śledzenie łączenia zmian (merge) Wyjmowanie wisienek Wyjmowanie wisienek Fizyka mergowania Fizyka mergowania Praca w scentralizowanym środowisku Praca w scentralizowanym środowisku Problem powolnej sieci Problem powolnej sieci Performance Performance
17 Subversion w codziennej pracy trunk trunk branches branches tags tags releases releases
18 Subversion w codziennej pracy svn merge -c REVISION URL svn merge -c REVISION URL svn merge --reintegrate URL svn merge --reintegrate URL svn log filename.ext@rev svn log filename.ext@rev
19 Subversion w codziennej pracy svnsync initialize DEST_URL SRC_URL svnsync initialize DEST_URL SRC_URL svnsync synchronize DEST_URL svnsync synchronize DEST_URL
20 Bazaar w codziennej pracy Śledzenie łączenia zmian (merge) Śledzenie łączenia zmian (merge) Fizyka mergowania Fizyka mergowania Praca w scentralizowanym środowisku Praca w scentralizowanym środowisku Praca w decentralizowanym środowisku Praca w decentralizowanym środowisku Performance Performance
21 Bazaar w codziennej pracy bzr branch bzr branch bzr import-svn bzr import-svn bzr bind URL bzr bind URL bzr unbind bzr unbind
22 Mercurial w codziennej pracy Fizyka mergowania Fizyka mergowania Patch queues Patch queues Performance Performance
23 Mercurial w codziennej pracy hg qinit NAZWA hg qinit NAZWA hg qrefresh hg qrefresh hg qfinish hg qfinish hg qpush / hg qpop hg qpush / hg qpop
24