SVN w służbie aplikacji webowej
Tytuł postu nieco przewrotny i niezrozumiały zapewne, ale już tłumaczę o co chodzi
Subversion, w sktócie SVN, to system kontroli wersji, wzorowany na używanym bardzo często niegdyś CVS.
Osobiście, oraz w pracy, korzystam(y) z SVN bardzo często. Praktycznie każdy projekt podpinam do repozytorium. Dzięki temu mam możliwość cofnięcia aplikacji do dowolnego jej stanu (czy to do rewizji, czy tagu/brancha), no i co najważniejsze dzięki systemowi kontroli wersji nad projektem może pracować niemalże nieskończona ilość developerów.
Nie chcę się tu rozpisywać o tym czym są owe tagi i branche (gałęzie kodu) oraz jak obsługiwać SVN - na to przyjdzie jeszcze czas ![]()
Na razie, chcę zainteresować samą technologią oraz przedstawić wielką korzyść używania repozytorium - aktualizację aplikacji webowej za pomocą tego systemu.
Powiedzmy, że mamy dwa serwery - developerski oraz produkcyjny. Na obu korzystamy z SVN (dla przykładu http://naszserwer.pl/svn/aplikacja).
Na serwerze developerskim rozwijamy aplikację wg założeń, aktualizujemy kod, poprawiamy błędy. Wszystko commitujemy (zapiusujemy) w repozytorium (http://naszserwer.pl/svn/aplikacja/trunk).
Na serwerze produkcyjnym tylko(!) pobieramy daną wersję z repozytorium (głównie z branachy).
Powiedzmy, że mamy osiągnęliśmy pułap, który kwalifikuje nasz kod do wydania kolejnej wersji aplikacji. Tworzymy nowy branch (np. “V2.0″ - http://naszserwer.pl/svn/aplikacja/branches/V2.0). Chcemy pokazać światu nową wersję naszej aplikacji, w tym celu na serwerze produkcyjnym nie pozostaje nam nic innego jak “przepiąć” się na nową wersję.
Aby to zrobić wykonujemy (będąc w katalogu głównym aplikacji):
svn switch http://naszserwer.pl/svn/aplikacja/branches/V2.0
Dzięki temu nasz kod zostanie zaktualizowany do wersji oznaczonej jako “V2.0″.
W każdej chwili, oczywiście, możemy wrócić do aktualnie rozwijanej wersji. W tym celu należy wykonać polecenie:
svn switch http://naszserwer.pl/svn/aplikacja/trunk
Uwaga: pliki konfiguracyjne nie powinny być dostępne w repozytorium (można nadpisać konfigurację serwera produkcyjnego). Sugeruję zapisanie w repozytorium obu wersji plików (np. config.inc.php.dev i config.inc.php.live) i w zależności od typu serwera utworzyć plik config.inc.php będący kopią jednego z wariantów dostępnych w repozytorium.