Systemy kontroli wersji Public enemy number one czy twój największy przyjaciel? Not Yet Another Conference Kraków, Maciej Hryniszak
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? 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
Początki… Na początku był chaos… Na początku był chaos… TGZ + Patch TGZ + Patch RCS RCS
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
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
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
CLMC – to czego nikt nie lubi Jola Monika Karolina Dorota Jolanta Centralne Repozytorium Kodu
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
CMMC na ratunek! Jola Monika Karolina Dorota Centralne Repozytorium Kodu
Systemy scentralizowane Subversion Subversion Bazaar Bazaar
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
CMMC na ratunek! Jola Monika Karolina Dorota
Systemy zdecentralizowane Git Git Bazaar Bazaar Mercurial Mercurial SVK SVK
Best practices Jak sprawić by pracowało się przyjemnie…
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
Subversion w codziennej pracy trunk trunk branches branches tags tags releases releases
Subversion w codziennej pracy svn merge -c REVISION URL svn merge -c REVISION URL svn merge --reintegrate URL svn merge --reintegrate URL svn log svn log
Subversion w codziennej pracy svnsync initialize DEST_URL SRC_URL svnsync initialize DEST_URL SRC_URL svnsync synchronize DEST_URL svnsync synchronize DEST_URL
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
Bazaar w codziennej pracy bzr branch bzr branch bzr import-svn bzr import-svn bzr bind URL bzr bind URL bzr unbind bzr unbind
Mercurial w codziennej pracy Fizyka mergowania Fizyka mergowania Patch queues Patch queues Performance Performance
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