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.