Kontrola wersji w 5 minut

12

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:

  1. nie wiedzą że takie coś istnieje
  2. celowo ignorują te narzędzia bo “po co, jestem twardy i dobrze mi bez tego” – czyli nie znają ich możliwości
  3. 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) [nie do końca aktualne – patrz update na końcu postu]

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!


UPDATE 30/12/2008
Trochę czasu minęło i się punkt dotyczący instalacji serwera zdeaktualizował. Aktualną wersję instalatora znajdziecie zawsze pod adresem http://www.collab.net/downloads/subversion/. Przed pobraniem należy się bezpłatnie zarejestrować. Cały proces jest teraz jeszcze prostszy, ponieważ instalator sam utworzy nam usługę Windows nasłuchującą na wybranym porcie.

Nie przegap kolejnych postów!

Dołącz do ponad 9000 programistów w devstyle newsletter!

Tym samym wyrażasz zgodę na otrzymanie informacji marketingowych z devstyle.pl (doh...). Powered by ConvertKit
Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

12 Comments

  1. Co do "Ankh SVN", używam go od około 4 miesięcy w pracy i muszę powiedzieć, że da się żyć, choć jest trochę oporny jak dla mnie ;) No ale nadrabia integracją z Visual Studio :)

    I chciałem się także podzielić, wydaje mi się, prostszą metodą na własny SVN. Umieszczony nie na lokalnym komputerze i konfigurowalny w minute :P A jest nim: [b]http://www.assembla.com[/b] Na stronie tej, możemy zupełnie za free założyć własne repozytorium, dodać userów, skonfigurować dostęp i issue tracker. Opcja za free jest dostępna tylko dla projektów niekomercyjnych, a więc dla własnego użytku możemy robić co chcemy.

    Pozdro,
    Jacek

  2. Ech… ze Ci sie chce % :)

    Kiedy na to znajdujesz czas co? Przyznaj sie :)

    Gutek

  3. Tortoise SVN jest ok, ale ma podobną przypadłość co Source Save: do czasu kiedy wszystko działa dobrze, działa dobrze. Jak nie działa dobrze, repozytorium jest do wywalenia. Ale da się z tym przeżyć ;)

  4. @Jacek:
    Spoko link, dzięki! Do "jednoosobowej pracy lokalnej" moim zdaniem lepsza jest własna instancja SVN, ale dobrze wiedzieć o takiej stronce.

    @Gutek:
    Czasami się chce, czasami się nie chce – jak się chce to piszę kilka postów jednego dnia i je potem dozuję:). A z czasem już lepiej, zatem i częściej będzie się chciało.

    @Tom2:
    Taką przypadłość ma pewnie i Notatnik – nieumiejętne korzystanie z CZEGOKOLWIEK skończy się prędziej czy później smutkiem i zerojedynkową masakrą. Zdarzały mi się wpadki z SVN (ale nigdy winny nie był temu sam system) i zawsze dało się wyjść na prostą. SVN Boook naprawdę daje radę:).

  5. Jakub Jałbrzykowski on

    Skorzytałem z Twojej instrukcji i zainstalowałem w… 6 minut. Moja magisterka jest bezpieczna :) Dzięki

  6. Jakiś czas temu o Subversion było na spotkaniu Warszawskiej Grupy .NET. Prezentację z tamtej sesji oraz film można znaleźć tutaj http://zine.net.pl/blogs/arkadiusz_wasniewski/archive/tags/Subversion/default.aspx. Trochę reklamy jednym słowem ;-). Użytkownikom polecam również skorzystanie z Subversion w trybie dostępu bezpośredniego czyli według schematu file://<repozytorium><katalog>. Można wówczas repozytorium na paluchu USB i zawsze aktualne dane mieć przy sobie.

    Pozdrawiam
    Arek

  7. hmm a mi przy probie czeckoutu pokazuje:
    Oczekiwany format systemu plików ‘2’; znaleziony format ‘3’
    i co teraz?

  8. a gdzie wpisuje sie naze uzytkownika i haslo przy pobieraniu i wysylaniu do repozytorium ?

  9. "Oczekiwany format systemu plików ‘2’; znaleziony format ‘3’" tez mialem taki komunikat ale po zaktualizowaniu do wer SVN 1.5.3 zaczelo wszystko dzialac

  10. @Beyo mam dokładnie taki sam komunikat jak Ty, @h4 mam svn 1.5.4, any ideas ??