ponad 90 000 pracowników ponad 60 000 pracowników ponad 30 000 pracowników ponad 3 000 pracowników
finanse firmy Ventures Capital, a potem reklamy kwestie socjalne darmowe jedzenie, transport do pracy, pranie, sporty kwestie lokalowe ciągłe przeprowadzki do coraz większych biur, mnóstwo lokalizacji w Dolinie Krzemowej rzesza programistów!
Problemy: współdzielenie kodu konflikty występujące w zmianach naprawianie/wycofywanie usterek zawodność elektroniki Przykład: edytor tekstu Text firmy X.
Serwer - repozytorium Komputer programisty cały kod lokalna kopia kodu
Standardowe kroki: 1. Pobranie aktualnej wersji repozytorium (svn update). 2. Zmiany: svn add, svn delete, svn move, svn copy, edycja plików 3. Wysłanie pakietu zmian na serwer (svn commit).
Początkowe repozytorium Zmiany pierwszego programisty Zmiany drugiego programisty Zmiany pierwszego programisty itd. wersja 1 wersja 2 wersja 3 wersja 4
Przykładowe konflikty: dwie osoby zmieniają ten sam plik jeden programista wprowadził zmiany w pliku, a drugi w tym samym czasie przeniósł go albo usunął Co wtedy? komenda svn commit nie powiedzie się pechowiec musi rozwiązać konflikty
linia niezmieniona <<<<<<<.mine // nowy kod #define ZWIERZĘ ŚWISTAK ======= // stary kod #define ZWIERZĘ ŚLIMAK >>>>>>>.r214565 linia niezmieniona
Początkowe repozytorium Zmiany pierwszego programisty Zmiany drugiego programisty Zmiany pierwszego programisty wersja 1 wersja 2 wersja 3 wersja 4
Początkowe repozytorium Zmiany pierwszego programisty Zmiany drugiego programisty Zmiany pierwszego programisty wersja 1 wersja 2 wersja 3 wersja 4
Przykładowy scenariusz: Firma X pracuje nad edytorem Text. Firma wypuszcza stabilną wersję Text 2010. Firma równolegle wprowadza poprawki do Text 2010 i szykuje Text 2011 5G na komórki. Firma wypuszcza Text 2011 5G. Teraz firma równocześnie wprowadza poprawki do dwóch wersji i szykuje Text 2012
Text 2010 bugfix bugfix Text 2011 5G bugfix master master master master master Text 2012
Kolejny scenariusz: W bieżącym repozytorium jest prosta wersja modułu do wstawiania obrazków. W tym czasie grupa programistów pracuje nad ulepszonym modułem do obrazków 3D. Po zakończeniu prac grupa chciałaby umieścić swoje zmiany w głównym repozytorium (master), tak aby znalazły się w wersji Text 2012.
Text 2010 bugfix bugfix Text 2011 5G bugfix master master master master master obrazki obrazki Text 2012
Przypadek jednego programisty: Zajmuje się modułem do obrazków: usuwaniem tła z obrazków i przerabianiem ich na czarno-białe. Czasem wprowadza drobne poprawki do modułu do wstawiania wzorów matematycznych. Często wyjeżdża i nie ma wtedy dostępu do serwera z repozytorium.
System kontroli wersji stworzony przez Linusa Torvaldsa, wykorzystywany w pracach nad jądrem Linuksa. Z Wikipedii: Prace nad Gitem rozpoczęły się 3 kwietnia 2005 roku, projekt został ogłoszony 6 kwietnia, 7 kwietnia Git obsługiwał kontrolę wersji swojego własnego kodu, 18 kwietnia pierwszy raz wykonano łączenie kilku gałęzi kodu, 27 kwietnia Git został przetestowany pod względem szybkości z wynikiem 6,7 łat na sekundę, a 16 czerwca Linux 2.6.12 był hostowany przez Gita.
master master master master master obrazki wzory usuwanie tła czarnobiałe
my_master obrazki wzory usuwanie tła czarnobiałe
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
pick f408319 wzory pick fc62e55 zmiana 1 pick 9824bf4 zmiana 2 pick 21d80a5 zmiana 3 # Commands: # p, pick = use commit # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted.
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1+2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1+2 wzory zmiana 1 zmiana 2 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1+2 wzory zmiana 2 zmiana 1 zmiana 3
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1+2 wzory zmiana 2 zmiana 1 zmiana 3
my_master obrazki usuwanie tła czarnobiałe zmiana 1a zmiana 1b zmiana 2 zmiana 1+2 wzory zmiana 2 zmiana 1 zmiana 3
master master master merge zmiana 1 zmiana 2
master master master zmiana 1 zmiana 2 zmiana 1 zmiana 2
Podobnie jak w pracy naukowej, fragmenty kodu przed zaakceptowaniem są poddawane recenzji współpracowników. Taka recenzja może trochę potrwać
usuwanie tła zmiana 1 zmiana 2 my_master obrazki czarnobiałe zmiana 1 zmiana 2 wzory zmiana 1 zmiana 2 zmiana 3
Każdej nocy sprawdzana jest poprawność kompilacji kodu na wszystkich platformach (różne systemy operacyjne i różne rodzaje urządzeń mobilnych). Jak szukać błędu, jeśli się nie skompilowało?
master master master master master OK ŹLE
master master master master master OK ŹLE
master master master master master OK ŹLE ŹLE
master master master master master OK ŹLE ŹLE
master master master master master OK OK ŹLE
master master master master master OK OK ŹLE
Wszystkie wielkie korporacje informatyczne wykorzystują systemy kontroli wersji. Ale czy są one przydatne zwykłemu śmiertelnikowi? TAK! małe projekty informatyczne redakcja książek nawet dla jednej osoby!
Text 2010 bugfix bugfix Text 2011 5G bugfix master master master master master obrazki obrazki Text 2012