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

Made with Slides.com