OCB?
Systemy kontroli wersji to narzędzia cudne. Jeżeli jesteś samodzielnym programistą i ich nie używasz... no trudno, nikt cię bić nie będzie. Ale ZACZNIJ! Jeżeli natomiast jesteś członkiem zespołu programistycznego i ich nie używasz (przenosisz kod na pendrive i ręcznie go synchronizujesz pomiędzy komputerami...?) to wstydź się, posyp głowę popiołem, wypal na czole gorącym żelazem napis "Nie pójdę do nieba" i... też zacznij, od zaraz! Z kolei w przypadku, gdy nie programujesz i znalazłeś się tutaj przez pomyłkę - zostań, przeczytaj do końca i także zastosuj się do zawartych poniżej instrukcji. Przydadzą się także gdy piszesz artykuły, sprawozdania, wypracowania, albo nawet listę zakupów!
Dzięki systemom kontroli wersji zawsze sprawdzisz kiedy nastąpiła jaka zmiana w twoich dokumentach, kto jej dokonał i dlaczego. I najważniejsze - w dowolnym momencie wrócisz do dowolnej poprzedniej wersji pliku! Możesz też pracować nad kilkoma wersjami jednego dokumentu jednocześnie, a następnie w bezbolesny sposób połączyć owe zmiany. NIGDY więcej dziesiątków plików o nazwie "MojProjekt_2008_05_01_1205.rar"! Kontrola wersji pozwoli oszczędzić ci czas, zautomatyzuje cały proces, ułatwi zarządzanie dokumentami oraz zmniejszy ilość miejsca na dysku konieczną do tego celu.
Dlaczego tak wiele osób NIE korzysta z repozytorium oferowanego przez wspomniane systemy? Powodów może być kilka:
- nie wiedzą że takie coś istnieje
- celowo ignorują te narzędzia bo "po co, jestem twardy i dobrze mi bez tego" - czyli nie znają ich możliwości
- może by się i zdecydowali, ale to pewnie dużo konfiguracji, dużo nauki, dużo zachodu...
Udowodnię tu, że w KILKA MINUT odmienisz swój sposób pracy, a więc swoje życie. Brzmi groźnie i obiecująco, niczym promocja w TELE-MANGO-GDYNIA? Być może... Ale do Klaudiusza z BigBradera podobny nie jestem, więc mi można wierzyć;) - naprawdę WARTO poświęcić te parę chwil. Po wykonaniu poniższych punktów będziesz miał na swoim komputerze działające, skonfigurowane i gotowe do użycia repozytorium dokumentów wraz z wygodnym sposobem jego wykorzystania.
DO DZIEŁA!
1) Intalujemy SVN (1 minuta)
Idziemy tutaj: http://subversion.tigris.org/servlets/ProjectDocumentView?documentID=41686&showInfo=true i ściągamy plik svn-1.4.6-setup.exe. 3,5 MB, więc zajmie to chwilkę. Następnie klikamy 2x na ściągnięty plik i akceptujemy wszystko co podleci - domyślne ustawienia są jak najbardziej odpowiednie.
2) Instalujemy Tortoise SVN (2 minuty)
Do tej pory mamy jedynie narzędzia administracyjne, obsługiwane z linii komend. Ten tutorial jest jednak kierowany do laików, więc zaopatrzymy się w perfekcyjnie wykonany, ślicznie integrujący się z Windowsami, program kliencki gdzie wszystko da się "wyklikać". Tak więc idziemy do strony http://tortoisesvn.net/downloads i ściągamy TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi (albo x64, gdy 32 bity to dla nas, phi, za mało). Tylko 9 MB dzieli nas od pełni szczęścia... Po ściągnięciu dwuklik, OK->OK->OK->OK->... i już.
3) RESET (od kilku sekund do kwadransa, jak to było u mnie w przypadku Visty dopóki jej nie pogoniłem gdzie nie tylko pieprz, ale w ogóle nic nie rośnie)
Coby się wszystko pięknie w systemie poukładało.
4) Zakładamy katalog dla repozytorium (5 sekund)
Tworzymy sobie katalog, który będzie domkiem dla wszystkich naszych repozytoriów, przykładowo c:\repos. Stwórzmy w nim kolejny folder (np TestRepo) i załóżmy tam pierwsze repozytorium:
Akceptujemy domyślne "Native filesystem" i już, po chwili mamy pierwsze repozytorium!
5) Podstawowa konfiguracja (1 minuta)
Mamy już swoje repozytorium, teraz uczynimy bardzo podstawowe "pimp my repo":
- plik conf\passwd
Otwieramy go w notatniku i zastępujemy całą początkową zawartość wpisem:
[users]
slonce_peru = promiennehaslo
- plik conf\svnserve.conf
Zamieniamy jego dotychczasową zawartość tymi linijkami:
[general]
anon-access = none
auth-access = write
password-db = passwd
realm = MyRepos
Te dwie modyfikacje oznaczają co następuje:
- stworzylismy jednego użytkownika o loginie "slonce_peru" i haśle "promiennehaslo"
- wyłączyliśmy jakikolwiek anonimowy dostęp do repozytorium
- nadaliśmy pełną władzę zalogowanym użytkownikom
6) Uruchamiamy SVN (0,5 minuty)
Katalog ma już wszystko na swoim miejscu. Pozostało uruchomić program, który potrafi zrobić z niego użytek. Najwygodniejszym sposobem jest stworzenie działającej non-stop usługi, dzięki czemu nie będziemy musieli po każdym resecie pamiętać o starcie aplikacji. Z linii komend wywołujemy polecenie:
sc create svn binpath= "\"C:\program files\Subversion\bin\svnserve.exe\" --service -r c:\repos" displayname= "Subversion Server" depend= Tcpip start= auto
I koniec - gotowe! Po każdym uruchomieniu komputera SVN będzie działał automatycznie.
Żeby ręcznie wystartować usługę już teraz - wpisujemy w konsoli polecenie
net start svn
, bądź idziemy do odpowiedniego okna (start->run->services.msc), tam odnajdujemy usługę Subversion Server i klikamy Start.
CO DALEJ?
1) Kojarzymy katalog z repozytorium
Mam dziewiczy katalog czekający z niecierpliwością aż delikatnie umieścimy w nim pierwsze dane. Zakładamy sobie jakiś folder (np c:\MyProject) i kojarzymy go z utworzonym repozytorium:

Każdy katalog skojarzony z repozytorium ma ukryty folder ".svn", gdzie przechowywane są wszystkie niezbędne dla systemu informacje. Nawet tam nie zaglądamy.
2) Modyfikujemy dane
Załóżmy przykładowy plik:
i umieśćmy go w repozytorium. W tym celu wychodzimy poziom wyżej i klikamy prawym przyciskiem na MyProject, lub bezpośrednio w katalogu klikamy na pusty obszar i wybieramy SVN Commit:
Po wpisaniu komentarza do wprowadzonych zmian (nieobowiązkowe, ale zalecane) wybieramy plik do dodania i zatwierdzamy OK.
3) Śledzimy zmiany
Ostatnia demonstracja: zmodyfikujmy plik dopisując do niego kolejną linijkę i ponownie wykonajmy Commit. W tym czasie możemy zauważyć jak zmienia się stan pliku: z zielonego znaczka oznaczającego "stan niezmieniony", przez czerwony "zawiera zmiany", na ostatecznie ponownie zielony po wysłaniu zmian.
Następnie z tego samego menu (lub po rozwinięciu podmenu Tortoise SVN) wybieramy Show Log:
W oknie mamy historię zmian wraz z komentarzami, typem zmian oraz plikami modyfikowanymi podczas tego "commita" (tudzież "wbitki"). Po dwukrotnym kliknięciu na interesujący nas plik otrzymujemy porównanie poprzedniej wersji z wersją aktualnie wybraną, więc możemy zaobserwować co dokładnie kiedy zostało zmienione:
"A NIE MÓWIŁEM?"
Koniec, to tyle. Ile czasu zajęła nam konfiguracja środowiska, wliczając w to ściągnięcie wszystkiego co potrzebne z internetu? Niecałe 5 minut + restart systemu! Naprawdę warto poświęcić tą chwilę i zapoznać się z tak niesamowicie potężnym narzędziem i używać go na co dzień. Oczywiście zademonstrowane przeze mnie możliwości to tylko sam czubek... czegokolwiek co jest duże, aczkolwiek są one wystarczające do jednoosobowego codziennego korzystania z SVN. Proste, prawda?
Osoby złaknione dalszego zagłębienia się w morzu wiedzy o kontroli wersji zachęcam do choćby pobieżnego zapoznania się z "SVN Book" zainstalowaną wraz z SVN, domyślnie tu: C:\Program Files\Subversion\doc\svn-book.chm.
Natomiast zespoły zaczynające przygodę z SVN powinny dodatkowo poświęcić trochę czasu na lekturę książki "Pragmatic Version Control using Subversion".
Jak dało się zauważyć unikałem postawienia znaku równości pomiędzy korzystaniem z SVN a tworzeniem oprogramowania. Dzięki temu, mam nadzieję, udało się przedstawić kontrolę wersji jako narzędzie DLA WSZYSTKICH, a nie tylko informatyków.
Do programistów z kolei kilka osobnych słów: dostępne są wtyczki do Visual Studio integrujące zarządzanie kodem wprost do naszego ulubionego IDE: Ankh SVN oraz Visual SVN. Polecić nie mogę żadnej z nich, gdyż z żadnej nie korzystałem. Ja osobiście wolę mieć wyraźną grubą krechą narysowaną granicę pomiędzy tworzeniem kodu a jego wersjonowaniem, więc Tortoise jest dokładnie tym co mi potrzeba. I dlatego między innymi (pomijając już nieustanne błędy, zwalnianie komputera i inne niedogodności) wg mnie SVN bije na głowę "zawszesamdecyzjepodejmujący" TFS, od którego niestety często nie ma ucieczki... Ale to chyba temat na osobną dyskusję.
Cóż zostało do napisania... happy versioning!