31
Wersjonowanie kodu Dobre praktyki na przykładzie przejścia z CVS na GITa Lublin, 2013

Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Embed Size (px)

DESCRIPTION

Zdobądź wiedzę z Performance Media

Citation preview

Page 1: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

Dobre praktyki na przykładzie przejścia z CVS na GITa

Lublin, 2013

Page 2: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Marek Misztal

• 2005 – 2010 Politechnika Lubelska, kierunek Informatyka

• Obecnie programista w firmie Performance Media

• Wykorzystywane technologie:

• PHP 5 (Zend, Symfony, Kohana),

• MySQL 5,

• JS (jQuery),

• XHTML, CSS.

• Inne zainteresowania informatyczne: wirtualizacja Microsoft Hyper-V, VMware ESXi, VirtualBox

• Czas wolny: rower, góry

Wersjonowanie kodu

Page 3: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Agenda

• Wprowadzenie do kontroli wersji

• Porównanie CVS i GIT

• Historia GITa

• Podstawy GITa

• Praca na gałęziach

• Projekt SeoSpace

• Warto wiedzieć

Wersjonowanie kodu

Page 4: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wprowadzenie do kontroli wersji

Wersjonowanie kodu

Co to jest kontrola wersji

Page 5: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Lokalne systemy kontroli wersji

Wersjonowanie kodu

Kopie plików

Lokalny system kontroli wersji – RSC (Unix)

Poprzednie wersje (Windows)

Aplikacje do automatycznego wykonywania kopii

Page 6: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Scentralizowane systemy kontroli wersji

Wersjonowanie kodu

Współpraca z innymi programistami, CVCS

Główny serwer:

łatwe zarządzanie uprawnieniami

zawiera wszystkie pliki projektu

przechowuje historię wszystkich zmian

Awaria serwera:

uniemożliwia wspólną pracę, zapisywanie zmian, przeglądanie historii, pobieranie projektu

może być przyczyną utraty wszystkich danych

Page 7: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozproszone systemy kontroli wersji

Wersjonowanie kodu

Pełna kontrola całego repozytorium

Zewnętrzny serwer nie jest wymagany

Awaria dowolnego komputera z repozytorium nie wpływa na pozostałych użytkowników

Odtworzenie repozytorium jest możliwe poprzez skopiowanie dowolnego innego repozytorium

Szybkie przeglądanie zmian i historii

Page 8: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

vs

Porównanie CVS i GIT

Page 9: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

GIT vs CVS

Wersjonowanie kodu

Rozproszony system kontroli wersji (DVCS) zamiast scentralizowanego (CVCS)

Odporny na błędy i awarie pojedynczego serwera

Szybsze działanie (zapisywanie zmian, przeglądanie historii)

Atomowe operacje

Lepszy model uwierzytelniania użytkowników

Coraz częściej wybierany, CVS nie jest rozwijany

Wsparcie refaktoringu

Webowe narzędzie do zarządzania repozytoriami (np. GitLab)

Elastyczna organizacja pracy w projekcie

Kilka protokołów dostępu (lokalny, SSH, HTTP(S), GIT)

Page 10: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

Historia

Kto stworzył GITa

Page 11: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Historia

Wersjonowanie kodu

Twórca: Linus Torvalds

Narzędzie wspomagające rozwój Linuxa, który zastąpił BitKeepera

Pierwsze wydanie: 7 kwietnia 2005

Aktualna wersja: 1.8.2 - 13 marca 2013

Założenia:

szybkość i stabilność działania

rozproszenie pracy

nieliniowy rozwój kodu

integralność repozytorium

obsługa dużej ilości plików

Page 12: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

Podstawy GITa

Page 13: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

CVS – lista zmian

Wersjonowanie kodu

CVS

Page 14: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

GIT – zestaw migawek

Wersjonowanie kodu

GIT

Page 15: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Stany, w jakich mogą znajdować się pliki

Wersjonowanie kodu

Page 16: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Dodatkowe informacje

Wersjonowanie kodu

Niemal każda operacja jest lokalna:

większość operacji wymaga jedynie dostępu do lokalnych plików

przeglądanie historii zmian z lokalnej bazy danych

Wbudowane mechanizmy spójności danych

zastosowanie SHA1 (40-znakowy łańcuch składający się z liczb szesnastkowych (0–9 oraz a–f), wyliczany na podstawie zawartości pliku lub struktury katalogu)

Brak możliwości zmiany pliku bez reakcji GIT

Standardowo Git wyłącznie dodaje nowe dane

w łatwe przywrócenie dowolnej wersji projektu

Page 17: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

Praca na gałęziach

Co to jest gałąź

Page 18: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Gałęzie GITa

Wersjonowanie kodu

Gałąź GITa to prosty plik zawierający 40 znaków sumy kontrolnej SHA-1 zestawu zmian

Stworzenie nowej gałęzi nie powoduje skopiowania wszystkich plików projektu

Page 19: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #1

Wersjonowanie kodu

Na początek załóżmy, że pracujemy nad swoim projektem i mamy już zatwierdzonych kilka zestawów zmian

Page 20: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #2

Wersjonowanie kodu

Tworzymy nową gałąź dla nowej funkcjonalności (iss53)

Page 21: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #3

Wersjonowanie kodu

Mamy do wykonania poprawkę, tworzymy nową gałąź hotfix i dokonujemy zmiany

Page 22: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #4

Wersjonowanie kodu

Po połączeniu hotfix i master wskazują na ten sam commit (c4)

Page 23: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #5

Wersjonowanie kodu

Wracamy do gałęzi iss53 i dokonujemy kolejnych modyfikacji

Page 24: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Rozgałęzianie i scalanie #6

Wersjonowanie kodu

Gdy praca nad nową funkcjonalnością dobiegnie końca, możemy scalić zmiany z gałęzią master. GIT samodzielnie określa najlepszego wspólnego przodka jako punkt wyjściowy scalania

Page 25: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

SeoSpace

Page 26: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Przejście z CVS na GITa

Wersjonowanie kodu

cd /home/serwer/www/seospace

find . -depth -name 'CVS' -exec rm -rf '{}' \; -print

find . -depth -name '.cvsignore' -exec rm -rf '{}' \; -print

git init

git add *

git commit -m 'init commit'

git remote add origin git@_serwer_git_:marek.misztal/seospace.git

git push -u origin master

Page 27: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Skrypt instalacyjny na produkcji

Wersjonowanie kodu

#!bin/bash

echo 'Pobranie SeoApi z GITa'

git archive --remote=git@_serwer_git_:marek.misztal/seoapi.git --format=tar --output=seoapi.tar master

if [ -e seoapi.tar ] ; then

tar -C ../public_html -xvf seoapi.tar

else

echo 'NIE UDAŁO SIĘ POBRAĆ SKRYPTU!!'

fi

Page 28: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Wersjonowanie kodu

Warto wiedzieć

Page 29: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Kto używa GITa?

Wersjonowanie kodu

Page 30: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Przydatne linki

Wersjonowanie kodu

http://git-scm.com/book/ - bardzo dobra dokumentacja, lista komend, tutoriale, również po polsku

http://rogerdudler.github.com/git-guide/ - GIT krok po kroku

https://help.ubuntu.com/community/Git - GIT w Ubuntu

https://code.google.com/p/msysgit/ - GIT w Windows

http://wiki.eclipse.org/EGit/User_Guide - dokumentacja wtyczki do Eclipse

Page 31: Wersjonowanie kodu. Dobre praktyki na przykładzie przejścia z CVS na GITa

Dziękuję za uwagę.