"Cześć, Amigo!"

"Cześć!"

„Dzisiaj opowiem Ci o systemach kontroli wersji.”

„Jak zapewne już wiesz, programy są często bardzo duże i ich napisanie zajmuje bardzo dużo czasu. Czasami dziesiątki osób mogą spędzić lata na pisaniu programu”.

„Projekty z milionami linii kodu są rzeczywistością”.

"Wow."

„To wszystko jest bardzo skomplikowane. Ludzie często sobie przeszkadzają i często modyfikują ten sam kod i tak dalej, i tak dalej”.

„Aby zaprowadzić porządek w tym bałaganie, programiści zaczęli używać systemów kontroli wersji swojego kodu”.

System kontroli wersji to program składający się z klienta i serwera.

„Program przechowuje dane (kod napisany przez programistów) na serwerze, a programiści dodają je lub zmieniają za pomocą klientów”.

„Główna różnica między systemem kontroli wersji a programami, które po prostu umożliwiają wspólną pracę nad dokumentami, polega na tym, że przechowuje on wszystkie poprzednie wersje wszystkich dokumentów (pliki kodu)”.

„Czy możesz podać mi więcej szczegółów. Jak to wszystko działa?”

„Wyobraź sobie, że jesteś programistą i chcesz wprowadzić niewielkie zmiany w kodzie źródłowym programu przechowywanego w repozytorium na serwerze”.

„Oto, co musisz zrobić:”

"1) Zaloguj się do serwera."

„2) Skopiuj najnowszą wersję wszystkich plików na swój komputer za pomocą polecenia Checkout”.

„3) Wprowadź zmiany w wymaganych plikach”.

„4) Uruchom program lokalnie, aby upewnić się, że się kompiluje i działa”.

„5) Wyślij swoje „zmiany” na serwer za pomocą polecenia Zatwierdź.

„Ogólnie rzecz biorąc, ma to sens”.

„Ale to nie wszystko. Wyobraź sobie, że przychodzisz rano do pracy, ale w Indiach jest już pora obiadowa. Więc twoi indyjscy koledzy już dokonali zmian i zatwierdzili je do twojego repozytorium na serwerze”.

„Musisz pracować z najnowszą wersją kodu. Wykonujesz więc polecenie Aktualizuj ”.

„Czym to się różni od Checkout ?”

Checkout jest przeznaczony do kopiowania wszystkich plików z repozytorium, ale Update aktualizuje tylko te pliki, które zostały zaktualizowane na serwerze od czasu ostatniego uruchomienia polecenia Checkout / Update ”.

„Tak to mniej więcej działa:”

Kasa :

Systemy kontroli wersji - 1

„Teraz powiedzmy, że zmieniliśmy plik B i chcemy przesłać go na serwer. Aby to zrobić, musimy użyć polecenia Zatwierdź ”.

Systemy kontroli wersji - 2

„A oto jak działa polecenie Aktualizuj :”

Systemy kontroli wersji - 3

„Jakie to ciekawe! Czy są jakieś inne polecenia?”

„Tak, jest ich całkiem sporo. Ale różnią się one w zależności od wybranego programu kontroli wersji. Próbuję więc po prostu wyjaśnić ogólne zasady”.

„Istnieje również operacja zwana scalaniem – połączenie dwóch dokumentów. Załóżmy, że dwóch programistów modyfikuje ten sam plik w tym samym czasie. Wtedy program na serwerze nie pozwoli na zatwierdzenie obu zmian. lub jej zmiany”.

„Więc co robi druga osoba?”

„Zostanie on lub ona poproszony o przeprowadzenie operacji aktualizacji w celu pobrania najnowszych zmian z serwera. Nawiasem mówiąc, wykonanie aktualizacji przed zatwierdzeniem jest dobrą praktyką”.

„Następnie podczas operacji aktualizacji program kliencki spróbuje scalić zmiany lokalne ze zmianami otrzymanymi z serwera”.

„Jeżeli programiści zmienili różne części pliku, to program kontroli wersji prawdopodobnie będzie w stanie pomyślnie je scalić.  Jeśli zmiany są w tym samym miejscu, program kontroli wersji zgłosi konflikt scalania i poprosi użytkownika o ręczne scalić zmiany”.

„Na przykład często zdarza się to, gdy obaj programiści dodają coś na końcu pliku”.

– Rozumiem. Ogólnie rzecz biorąc, wydaje się to rozsądne.

„I jest jeszcze jedna rzecz: gałęzie”.

„Wyobraź sobie, że dwóch programistów z zespołu ma za zadanie przepisać ten sam moduł. Albo jeszcze lepiej — napisać go od nowa. Dopóki ten moduł nie zostanie ukończony, program nie będzie mógł działać, a może nawet się nie skompilować”.

— Więc co mają robić?

„Posuwają się naprzód, dodając gałęzie do repozytorium. Z grubsza mówiąc, oznacza to, że repozytorium zostaje podzielone na dwie części. Nie według plików lub katalogów, ale według wersji”.

„Wyobraź sobie, że nigdy nie odkryto elektryczności i nigdy nie wynaleziono robotów. Wtedy trzy wojny wyzwoleńcze nigdy by się nie wydarzyły, a cała historia ludzkości potoczyłaby się zupełnie inną drogą ” .

„Ta ścieżka jest alternatywną gałęzią historii”.

„Albo możesz po prostu spróbować wyobrazić sobie oddział jako po prostu kopię repozytorium. Innymi słowy, w pewnym momencie zrobiliśmy klon repozytorium na serwerze, aby oprócz głównego repozytorium (często nazywanego trunkiem ), mamy kolejny oddział .”

„Cóż, to wydaje się bardziej zrozumiałe.

„Dlaczego nie mogłeś po prostu powiedzieć, że skopiowaliśmy repozytorium?”

„To nie jest zwykłe kopiowanie”.

„Te gałęzie można nie tylko oddzielić od pnia, ale także połączyć z nim”.

„Innymi słowy, część pracy można wykonać w gałęzi, a po jej zakończeniu można dodać gałąź repozytorium do pnia repozytorium?”

"Tak."

– A co stanie się z aktami?

„Pliki zostaną scalone”.

„Cóż, to brzmi fajnie. Mam nadzieję, że w akcji jest równie fajne”.

– A potem trochę. Dobra, zróbmy sobie przerwę.

„ Tutaj jest garść przydatnych informacji  ”