SVN jako system kontroli wersji w aplikacjach internetowych - wstęp

Wstecz
Kategorie:  

Tworzenie aplikacji  internetowej jest zazwyczaj długotrwałym procesem niosącym ze sobą niebezpieczeństwo bezpowrotnej utraty fragmentów tworzonego kodu (np. brak możliwości odtworzenia kodu funkcji ze starszej wersji modułu) oraz niespójności  tworzonego rozwiązania podczas grupowej pracy nad projektem. Aby ustrzec się przed tego typu zagrożeniami  jednocześnie zwiększając efektywność  naszej pracy warto zastanowić się nad zastosowaniem systemu kontroli wersji. Systemy kontroli wersji  umożliwiają synchronizację pracy nad danym zasobem włącznie z rozwiązywaniem konfliktów  pomiędzy jego wersjami, odtwarzaniem poprzednich wersji  plików, tworzeniem kopii zapasowych itd. 
W tym artykule zamierzam opisać przykładowy  sposób pracy z systemem kontroli wersji Subversion (SVN) w kontekście wsparcia procesu tworzenia aplikacji internetowych. Subversion jest następcą popularnego systemu CVS i wydaje się być obecnie najlepszym tego typu rozwiązaniem. Poniżej krok po kroku przedstawię etapy tworzenia i konfiguracji repozytorium SVN (w środowisku linii poleceń systemu Linux).

 

Po pierwsze musimy stworzyć nowe repozytorium plików.

 

svnadmin create projektX

 

Następnie importujemy nasz projekt poleceniem:

 

svn import scieżka_do_katalogu_repozytoriów/projektX/
file:///sciezka_do_katalogu_projektów/projektX --message="Import projektu"

 

W powyższym poleceniu proszę używać pełnych ścieżek czyli począwszy od '/home'

Mając już stworzone repozytorium i zaimportowany do niego projekt, możemy  stworzyć (w zależności od potrzeb) 2 obszary robocze - developerski i produkcyjny.  Tworzymy je poleceniem svn checkout, czyli przykładowo:

 

 
 
svn checkout file:///scieżka_do_katalogu_repozytoriów/projektX sciezka_do_katalogu_projektow/projektX_dev
svn checkout file:///scieżka_do_katalogu_repozytoriów/projektX sciezka_do_katalogu_projektow/projektX_live

 

Ok, mamy już repozytorium i 2 powiązane z nim lokalizacje, co dalej !? Przykładowo zmodyfikowaliśmy pliki w obszarze developerskim (katalog 'projektX_dev'). Zmiany (po ich wcześniejszym przetestowaniu) wysyłamy do repozytorium poleceniem:

 

svn commit -m "Zmiany w module X"

 

Następnie przechodząc do obszaru produkcyjnego możemy wdrożyć zamiany poleceniem:

 

svn update

 

Oczywiście w ten sposób wdrożymy wszystkie zmiany, zazwyczaj lepiej jednak mieć lepszakontrole nad tym procesem... Stosując polecenie:

 

svn st -u

 

otrzymamy w ten sposób listę zmodyfikowanych plików, możemy więc wybrać te które mają zostać zaktualizowane na serwerze produkcyjnym:

 

svn up ściezka_do_pliku_1 ściezka_do_pliku_2

 

Proces ten może zostać zautomatyzowany tzn. dla wybranego obszary roboczego instrukcja 'svn up' może być wywoływana automatycznie - jest to szczególnie przydatne gdy nasze repozytorium podepniemy do IDE (np. Zend Studio lub Eclipse).  Tak więc musimy stworzyć plik 'scieżka_do_katalogu_repozytoriów/projektX/hooks/post-commit' umieszczając w nim:

 

#!/bin/sh
/usr/bin/svn update sciezka_do_katalogu_projektow/projektX_dev

 

oraz nadając uprawnienia:

 

chmod 755 post-commit

 

Tak więc z każdym razem gdy zewnętrznie wywołana zostanie instrukcja 'commit' zmiany będą propagowane w obszarze 'projektX_dev'.

Bardzo ważną kwestią jest uniemożliwienie przeglądania zawartości katalogów '.svn' tworzonych automatycznie przez SVN z poziomu przeglądarki internetowej. Zakładając że naszym serwerem WWW jest Apache możemy to uniemożliwić poprzez dodanie dyrektywy: 

 

RedirectMatch 403 /\.svn.*$

 

do pliku .htaccess

 

Ostatnią poruszoną przeze mnie w tym artykule kwestia będzie ignorowanie zasobów. Sprawa nie jest banalna a z punktu widzenia zastosowania SVN w aplikacjach internetowych bardzo istotna. Aby wyłączyć wersjonowanie niektórych zasobów np. pliki z logami, cache itp. należy w pierwsze kolejności usunąć zasoby:

 

svn delete cache/*
svn ci -m 'Ununięcie z repozytorium'

 

Po czym należy zastosować polecenie svn propset, czyli:

 

svn propset svn:ignore '*' cache/

 

Sprawa ignorowanie zasobów dokładniej opisana jest na heavymind.net

Na tym zakończę  wstęp  do zagadnienia stosowania systemów kontroli wersji w aspekcie aplikacji internetowych  - proszę spodziewać się kontynuacji  tego (moim zdaniem bardzo ważnego) tematu w kolejnych artykułach.

Komentarze

Dzięki, bardzo fajny materiał, dokładnie opisu takiego przepływu danych poszukiwałem, teraz już wiem wszystko co potrzebowałem, choć de facto na temat subversion poświęciłem tylko kilka h. :)

Dodaj nowy komentarz

Anty-spam
Poniższe pytanie chroni serwis przed spamem.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.
Wstecz

Kategorie

Ankieta

Czy podoba Ci się ten serwis !?

Tak, jest super !!!
22% (16 głosów)
Fajny jest :)
39% (28 głosów)
Może być...
8% (6 głosów)
Ujdzie w tłumie...
10% (7 głosów)
Nie, jest beznadziejny :P
21% (15 głosów)
Razem głosów: 72