Systemy kontroli wersji
Na przykładzie GIT
Prelegent: Tomasz Banasiak
Systemy kontroli wersji - GIT
Co to jest kontrola wersji?
- Narzędzie zapisujące stan kodu
- Narzędzie kooperacji deweloperów
- System pozwalający jednocześnie utrzymywać i rozwijać aplikację
Systemy kontroli wersji - GIT
Potrzeby stojące za powstaniem CVS
- Możliwość wrócenia do dowolnej wersji kodu
- Praca zespołowa nad jednym kodem
- Praca nad kodem Open Source
- Ustalanie odpowiedzialności za kod
- Automatyzacja procesu Code Review
Systemy kontroli wersji - GIT
Rozpoczynamy pracę z GIT
1. Utworzenie własnego repozytorium
git init
2. Pobranie istniejącego repozytorium
git clone git@gitlab:22/devschool/testrepo.git
Systemy kontroli wersji - GIT
Umieszczenie plików w repozytorium
1. Dodanie plików do indeksu
git add . # dodanie wszystkich plików
git add nazwapliku.txt # dodanie konkretnego pliku
git add *.php # dodanie plików wg. maski
2. Zapisanie aktualnej wersji
git commit -m "Dodanie plików tekstowych"
Systemy kontroli wersji - GIT
Synchronizacja danych z GitLabem
1. Pobranie zmian dokonanych przez programistów
git pull origin master # Pobranie gałęzi master z głównego repozytorium
git pull ssh://git@gitlab:22 develop # Pobranie gałęzi develop z zadanego repozytorium
git remote add piotrek ssh://192.168.0.123:22
git pull piotrek master # Zdefiniowanie własnego zewnętrznego repo i pobranie zmian
2. Wysłanie własnych zmian
git push origin master # Wysłanie własnych commitów
Systemy kontroli wersji - GIT
Przeglądanie zmian w repozytorium
1. Przeglądanie zmian w indeksie
git status
2. Przeglądanie zmian w repozytorium
git log
Systemy kontroli wersji - GIT
Praca na gałęziach (branching)
Systemy kontroli wersji - GIT
Dobra praktyka pracy na gałęziach
Systemy kontroli wersji - GIT
Prace developerskie
-
wydzielamy feature z gałęzi develop
-
git checkout -b feature/my-branch
-
-
pracujemy na własnym branchu (modyfikujemy kod)
-
git add . && git commit -m "Modified"
-
- swoje zmiany wysyłamy do głównego repozytorium
-
git push origin feature/my-branch
-
-
po zakończeniu prac w GitLabie tworzymy merge request: feature/my-branch -> develop
Systemy kontroli wersji - GIT
Mrożenie kodów
-
tworzymy nowy release z developa, np. release/1.0
-
testujemy i stabilizujemy kod w środowisku RC
-
poprawki tworzymy jako feature wydzielany z release
-
poprawki po CR mergujemy do release
-
jeśli poprawka musi być na developie używamy narzędzia git cherry-pick
-
wszystkie poprawki możemy przenieść mergując release do developa
Systemy kontroli wersji - GIT
Wdrożenie produkcyjne
-
mergujemy release do mastera (kod produkcyjny)
-
mergujemy release do developa (kod developerski)
- usuwamy release i tworzymy tag z numerem wersji
- wdrażamy kod z mastera na produkcję
- poprawki na produkcję wrzucamy za pomocą hotfixów ( hotfix/bug-id ) wydzielonych z mastera
-
po CR hotfixa mergujemy go do mastera i przesuwamy tag (lub tworzymy kolejną minorową wersję)
Systemy kontroli wersji - GIT
Skomplikowane?
Systemy kontroli wersji - GIT
Systemy kontroli wersji - GIT
- GitFlow to tylko nakładka
- Jest prosty - to tylko 5 komend do zapamiętania!
- Wprowadza porządek i jednolite zasady
- Dla kochających klikać istnieje narzędzie SourceTree
GitFlow
Systemy kontroli wersji - GIT
Power Tools
Hooki
git bisect
git cherry
git stash
Systemy kontroli wersji - GIT
Pytania?
Systemy kontroli wersji - GIT
Dziękuję za uwagę!
Kontakt ze mną:
E-mail: tomasz.banasiak@rst.com.pl
WEB: http://banasiak.pro
Systemy Kontroli Wersji na przykładzie GIT
By Tomasz Banasiak
Systemy Kontroli Wersji na przykładzie GIT
- 1,427