Tortoise Drukuj
Ocena użytkowników: / 1
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
sobota, 16 października 2010 21:23

W poniższym artykule opiszę jeden z najpopularniejszy program kliencki SVN na WIndowsa - Tortoise. Moim celem jest pokazanie, co można dzięki niemu zrobić (przynajmniej skromną część możliwości), a nie wychwalanie go jako jedynego i słusznego.

Opiszę:

 

Na początek

  • Musisz mieć zainstalowany program Tortoise (pobierz ze strony).
  • W artykule będę używał google code. Jeśli chcesz sprawdzać, czy to co tu opisuję jest prawdą, warto założyć tam konto (jeśli masz Gmail to masz automatycznie konto i tu). Opisane szerzej w osobnym artykule. U mnie projekt będzie się nazywał "yc-svn-example". Ty siłą rzeczy będziesz musiał mieć inną nazwę (google code nie zezwala na dwa projekty o tej samej nazwie). Ważne, abyś w miejscu "yc-svn-example" wstawiał nazwę swojego projektu.

 

import

Import pozwala na wysłanie plików z naszego komputera.

Zakładam, że masz już założony projket na google code.

Tworzę katalog "yc-svn-example", a w nim pliki:

  • index.php
  • program.c
  • readme.txt

Celowo stworzyłem pliki różnego typu, aby pokazać, że SVN może być wykorzystywany do wielu rodzajów plików (wliczając w to graficzne, audio, exe itd.)

Następnie klikam na ikonkę folderu wybieram `Tortoise SVN -> import into', jak na poniższym obrazku:

Tortoise -> Import

 

Oraz podaję adres mojego zdalnego repozytorium:

Tortoise -> Import 2

 

 

Oraz podaję hasło. Hasło można skopiować ze strony https://code.google.com/hosting/settings (oczywiście, jeśli jesteś zalogowany - zobaczysz swoje ustawienia, a wśród nich hasło).

Tortoise -> Import - podanie hasła

Pliki ze wskazanego folderu zostaną zaimportowane do zdalnego repozytorium, o czym użytkownik zostanie poinformowany:

Command: Import D:\youthcoders\yc-svn-example to https://yc-svn-example.googlecode.com/svn/trunk  

	Adding: D:\youthcoders\yc-svn-example\readme.txt  

	Adding: D:\youthcoders\yc-svn-example\program.c  

	Adding: D:\youthcoders\yc-svn-example\index.php  

	Completed: At revision: 2  

Pliki te powinny być widoczne pod adresem: http://yc-svn-example.googlecode.com/svn/trunk/ (u ciebie adres może być inny - w zależności od nazwy projektu).

Jeśli wszystko poszło po twojej myśli, możesz właśnie cieszyć się swoim pierwszym repozytorium!

 

checkout

Pozwala na pobranie plików ze zdalnego repozytorium na lokalny komputer. Tworzy lokalne repozytorium, dzięki czemu można pracować nad podbranym projektem z wykorzystaniem mechanizmów SVN.

Stwórz katalog o nazwie 'yc-project'. Następnie kliknij na nim prawym przyciskiem i z podręcznego menu wybierz 'checkout':

Tortoise checkout

Następnie sprawdź,czy dane są poprawne (adres repozytorium zdalnego oraz lokalny katalog, do którego mają zostać pobrane pliki):

Tortoise checkout - potwierdzenie danych

 

Teraz powinna się wyświetlić lista pobranych plików. Gdy odświeżysz katalog, w którym się znajdujesz ikonka katalogu `yc-project' powinna wyglądać podobnie do tej:

Tortoise status

Oznacza to, że:

  • dany katalog jest podpięty pod system zarządzania wersjami SVN
  • wszystkie pliki lokalnie przechowywane są aktualne (czyli, że nie różnią sięod tych na serwerze)

 

status

Jeśli używasz Tortoise, to nie musisz jawnie wykonywać polecenia `status'. Jest ono wykonywane automatycznie. Ty widzisz jedynie wynik. Na powyższym rysunku widać znak "ok" (tzn. "ptaszek"). Oznacza on, że wszystkie pliki są takie jak ich odpowiedniki na serwerze.

Otwórz teraz folder `yc-project'. Powienieneś zobaczyć coś takiego:

Tortoise status

Zmiana w pliku

Wejdź do pliku `index.php' i wpisz w nim taki tekst:

<?php echo 'Działa'; ?>

Zapisz plik i odśwież folder 'yc-project'. Powinieneś zobaczyć coś takiego:

Tortoise status- zmieniony plik

 

Dodanie pliku

Dodaj do katalogu 'yc-project' plik o nazwie `nowy.txt'. Po odświeżeniu katalogu powinieneś zobaczyć coś takiego:

Tortoise status - dodany plik

 

diff

Czasem chciałbyś zobaczyć, co tak naprawdę zmieniłeś w pliku. Wtedy bardzo przydatnym i często wykorzystywanym poleceniem jest diff. Polecenie to wskazuje różnice między plikami - lokalnym i tym ze zdalnego repozytorium. Porównajmy naszą lokalną wersję `index.php' z wersją ze zdalnego ropozytorium.

Tortoise status - porównywanie plików

 

Po chwili (jej długość zależy od wielkości plików i szybkości łącza) zostanie wyświetlony wynik:

Tortoise status - porównywanie plików: wynik porównania

Jak widać na powyższym obrazku pokazana jest linia, w której nastąpiła zmiana. W tym wypadku dodanie (o czym świadczy znak plusa). W tym wypadku porównanie można byłoby zrobić ręcznie ("ocznie"), ale jeśli plik miałby tysiąc linii, to musisz przyznać, że automatyzacja wydaje się bardzo wygodną opcją :)

 

commit

Pozwala wysłać zawartość lokalnie zmienionego pliku do zdalnego repozytorium. Wyślijmy plik `index.php':

Tortoise status - commit

 

Teraz podajmy jeszcze informację o tym, co zmieniliśmy:

Tortoise status - commit: wpisywanie wiadomości

Wiadomość powinna mówić, co zostało zmienione w porównaniu z poprzednią wersją. Później jest to przydatne przy poszukiwaniu błędu i przywracaniu do działającej wersji (obyś nigdy nie musiał się tym zajmować, gdy wszyscy commitują z informacją "moja zmiana").

Po chwili powinniśmy dostać informację, że wszystko jest dodane prawidłowo. Tu czasem może nie być tak różowo. Szczególnie, jeśli natrafimy na konflikty. Ale to jest temat na osobny artykuł.

 

blame

Blame jest podobnym poleceniem, jak `diff'. Pokazuje jednak dodatkowo autora zmian. Blame po angielsku znaczy "oskarż". Pokazuje podobnie jak diff plik, z addnotacją kto dokonał ostani zmian w konkretnej linii:

Tortoise status - blame

 

następnie skonfigurujmy ustawienia:

Tortoise status - blame: ustawienia

 

poczekajmy chwilę:

Tortoise status - blame: przetwarzanie danych

 

i sprawdźmy, kto zmieniał jaką linię jako ostatni:

Tortoise status - blame: wynik

Widać, że w tym pliku, za wszystko odpowiedziany jest użytkownik o loginie Jar.Patryk. Czyli ja :) To by się zgadzało. U Ciebie będzie pewnie inaczej :)

 

update

Update jest poleceniem pozwalającym na pobranie plików ze zdalnego repozytorium. Można powiedzieć, że jest to polecenie komplementarne do commit - działa w drugą stronę. W naszym projekcie jest tylko jedna osoba pracująca na jednym komputerze. Tak więc nie zauważysz faktycznego działania. Załączam rysunek, który być może rozjaśni Ci trochę:

Tortoise status - update

 

Na koniec

To co odpisałem w tym artykule to całkowite podstawy SVN. Tak prosty w obsłudze program jak Tortoise ma jeszcze dużo więcej opcji i możliwości. Popróbuj jednak sam! Na pewno sporo się nauczysz :)

Warto też jest założyć sobie - nawet na tym samym komputerze - drugie repozytorium SVN odnoszące się do tego samego projektu. I spróbować edytować oba pliki na raz, wywołując konflikty. Konkflikty, to zgroza SVN. Choć z drugiej strony pomyśleć, że kiedyś nie było automatu, który by nam mówił,  że coś zepsuliśmy i trzeba było to robić ręcznie oO.