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

Post on 26-Jun-2015

2.387 views 3 download

description

Zdobądź wiedzę z Performance Media

Transcript of 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

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

Agenda

• Wprowadzenie do kontroli wersji

• Porównanie CVS i GIT

• Historia GITa

• Podstawy GITa

• Praca na gałęziach

• Projekt SeoSpace

• Warto wiedzieć

Wersjonowanie kodu

Wprowadzenie do kontroli wersji

Wersjonowanie kodu

Co to jest kontrola wersji

Lokalne systemy kontroli wersji

Wersjonowanie kodu

Kopie plików

Lokalny system kontroli wersji – RSC (Unix)

Poprzednie wersje (Windows)

Aplikacje do automatycznego wykonywania kopii

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

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

Wersjonowanie kodu

vs

Porównanie CVS i GIT

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)

Wersjonowanie kodu

Historia

Kto stworzył 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

Wersjonowanie kodu

Podstawy GITa

CVS – lista zmian

Wersjonowanie kodu

CVS

GIT – zestaw migawek

Wersjonowanie kodu

GIT

Stany, w jakich mogą znajdować się pliki

Wersjonowanie kodu

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

Wersjonowanie kodu

Praca na gałęziach

Co to jest gałąź

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

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

Rozgałęzianie i scalanie #2

Wersjonowanie kodu

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

Rozgałęzianie i scalanie #3

Wersjonowanie kodu

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

Rozgałęzianie i scalanie #4

Wersjonowanie kodu

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

Rozgałęzianie i scalanie #5

Wersjonowanie kodu

Wracamy do gałęzi iss53 i dokonujemy kolejnych modyfikacji

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

Wersjonowanie kodu

SeoSpace

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

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

Wersjonowanie kodu

Warto wiedzieć

Kto używa GITa?

Wersjonowanie kodu

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

Dziękuję za uwagę.