maja 31

Synchronizacja plików PHP w Eclipse część 2 – SVN w Subclipse

Tag: Eclipse, PHPMatheW @ 19:03. . Post odwiedzany 13554 razy. Trackback

Jeżeli pracowaliśmy kiedyś nad projektem w kilka osób z pewnością natrafiliśmy na problem, w którym każdy z programistów pracuje nad częścią aplikacji, powiązaną z innymi, tworzonymi przez inne osoby. Każda zmiana danej części projektu powinna być od razu dostępna dla naszych współpracowników, by mogli oni operować na zmodyfikowanych, bądź nowo stworzonych przez nas plikach. Można to uzyskać poprzez synchronizację plików projektu.

Systemy kontroli wersji

Wykorzystanie systemów kontroli wersji to jedna z najpopularniejszych metod synchronizacji plików i projektów programistycznych. O synchronizacji jako takiej a w szczególności poprzez FTP pisałem w pierwszej części artykułu.

System kontroli wersji (ang. version/revision control system) służy do śledzenia zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu i modyfikacji zmian dokonanych przez wiele osób w różnych momentach.

Systemy kontroli wersji można podzielić na scentralizowane, oparte na architekturze klient-serwer (np. CVS, Subversion) i rozproszone, oparte na architekturze P2P (np. BitKeeper, svk). W tych pierwszych istnieje jedno centralne repozytorium, z którym wszyscy użytkownicy systemu synchronizują swoje zmiany, a te drugie pozwalają na prowadzenie równoprawnych, niezależnych gałęzi, które można dowolnie synchronizować ze sobą nawzajem. Wybór odpowiedniego typu systemu kontroli wersji zależy od potrzeb projektu.

Przez długi czas najpopularniejszym systemem był CVS. Jego następcą został SVN, który wzbogacony o wersjonowanie nazw plików czy przechowywanie danych w bazie danych Berkley DB, właściwie w pełni w nowych projektach wyeliminował CVS z użytku.

Można zauważyć, iż mimo, że głównym celem SVN jest praca w grupie, to doskonale sprawdzi się także w przypadku gdy pracujemy sami i chcemy po prostu tworzyć kopie zapasowe naszych projektów, wraz z kontrolą wersji plików, by w każdej chwili móc bez problemu cofnąć nasze modyfikacje, bądź skontrolować zmiany w projekcie. Dzięki temu nie musimy sami troszczyć się o kopie zapasowe, śmiało możemy edytować pliki, bez obawy, że zmiana coś zniszczy – w każdej chwili istnieje możliwość przywrócenia starszych wersji, sprzed edycji.

Tworzenie repozytorium

Zwykle w trakcie pracy grupowej repozytorium SVN jest dostępne na wspólnym serwerze, często zabezpieczone hasłem. Często projekty open-source posiadają własne repozytoria, umożliwiające użytkownikom pobranie nowych wersji. Rzadko będziemy korzystać z repozytorium na własnym komputerze, ale dla testów, bądź tworzenia systemu backup pokażę jak korzystać z SVN na Linuksie i Windowsie.

Linux

Podstawa to instalacja pakietu subversion. Przykładowo w debianach zainstalujemy go za pomocą:

sudo apt-get install subversion

Własne repozytorium tworzymy za pomocą polecenia:

sudo svnadmin create /home/username/svn

Windows

Ściągamy odpowiednie pliki i instalujemy. Po instalacji wpisujemy w konsoli (Start > Uruchom > cmd):

svnadmin create "c:\Documents and Settings\username\svn"

Aby udostępniać nasze repozytorium możemy połączyć jego wykorzystanie z serwerem Apache, co jest bardzo często wykorzystywane. Stosowne linki do tekstów opisujących wspomnianą możliwość znajdziecie na końcu artykułu.

Instalacja Subclipse

Wykorzystamy potęgę SVN korzystając z dodatku Subclipse do potężnego środowiska programistycznego Eclipse, o którym już nieraz pisałem.

Aby zainstalować Subclipse z menu edytora wybieramy Help > Software Updates > Find and install, następnie zaznaczamy Search for new features to install.. i klikamy Next. Naszym oczom ukazuje się lista stron na których znajdujemy aktualizacje i nowe wtyczki.

Instalacja Subclipse

Dodajemy nową stronę klikając New Remote Site, nadajemy jej dowolną nazwę a w pole adresu wpisujemy http://subclipse.tigris.org/update_1.2.x. Następnie zatwierdzamy, zaznaczamy nowo dodaną witrynę i klikamy Finish. Eclipse kilkakrotnie wyświetli nam okna z potwierdzeniami, we wszystkich przechodzimy dalej, aż Subclipse nam się zainstaluje.

Połączenie projektu z repozytorium

Aby dodać repozytorium do naszego Eclipse klikamy PPM na nasz projekt. Wybieramy Team > Share Project…, w nowym oknie wybieramy SVN, potem zaznaczamy Create a new repository location.

Po przejściu do nowego okna musimy wpisać adres naszego repozytorium. Przykładowo, jeżeli posiadamy repozytorium na lokalnym komputerze utworzone w sposób pokazany prze ze mnie wyżej w artykule na Linuksie wpisujemy: file://localhost/home/username/svn.

W kolejnym oknie nic nie zmieniamy, przechodzimy dalej. W ostatnim oknie aplikacja wyśle wszystkie pliki projektu do repozytorium. Możemy tam wpisać komentarz (komentarze są bardzo ważne – pozwolą nam na rozróżnienie kolejnych modyfikacji, co umożliwi cofnięcie się do odpowiedniej wersji pliku). Podczas importu Subclipse spyta nas o nazwę autora oraz o listę plików, które być może zechcemy wykluczyć.

Import plików z repozytorium

Widok plików w synchronizowanym projekcie

Po dodaniu SVN do projektu pliki w nim zgromadzone zyskały nowe małe ikonki.

Ikony

Na załączonym screenie widzimy plik index.php, który jest w aktualnej wersji na serwerze (po prawej widzimy numer wersji i datę wysłania pliku). Plik info.php nie istnieje jeszcze w repozytorium i nie zostanie sam do niego dodany. Natomiast ikonka przy pliku test.php świadczy o tym, że plik zostanie skontrolowany podczas następnego wysyłania plików do repozytorium. Plik testClass.php został natomiast zmieniony w naszym projekcie i należy jego nową wersję wysłać do repozytorium.

Operacje na repozytorium

Właściwie wszystko co możemy zrobić z Subversion jest zamieszczone w menu Team, dostępnym po kliknięciu PPM na plik, folder bądź cały projekt. Omówię tu najważniejsze funkcje SVN.

Menu kontekstowe

Update

Update wykonujemy, by pobrać z repozytorium pliki, które zostały zmienione bądź dodane względem naszej lokalnej wersji. Powinniśmy dokonywać update przed każdą inną operacją, by mieć aktualne wersje plików w projekcie.

Commit

Poprzez komendę Commit możemy wysłać nowe, bądź zmienione wersje plików na serwer. Powinniśmy ją używać w miare często, po każdej większej edycji, by repozytorium posiadało nasze aktualne pliki. Commit możemy przeprowadzić zarówno na całym projekcie jak i pojedynczych plikach, czy folderach.

Wysyłanie zmian do repozytorium

Operację tę należy opatrzeć stosownym komentarzem opisującym zmiany, by w przyszłości móc się zorientować co zmieniło się po danym commicie. Dostępną mamy listę plików, które zostaną wysłane do repozytorium, możemy naturalnie z niektórych zrezygnować.

Add to Version Control

Gdy stworzymy nowy plik w projekcie należy go dodać do kontroli wersji poleceniem Add to Version Control. Dzięki temu, gdy następnym razem przeprowadzimy Commit to nasz plik zostanie wysłany do repo.

Add to svn:ignore

Ignorowanie plików

Czasami nie chcemy by niektóre pliki były wysyłane do repo (np. osobista konfiguracja aplikacji). Wtedy należy wybrać opcję Add to svn:ignore. Możemy ignorować konkretne pliki, konkretne rozszerzenia czy też utworzyć własne wyrażenie regularne.

Usuwanie plików z repozytorium

Aby usunąć plik lub folder z repozytorium po prostu usuwamy go w naszym projekcie i przeprowadzamy Commit. Nie obawiajmy się, że plik przepadnie na wieki – pamiętajmy, że w repozytorium trzymana jest każda wersja plików, więc w każdej chwili możemy przejrzeć i przywrócić archiwalne pliki.

Patch

Patche to małe cząstki projektu, które możemy np. wysyłać między współpracownikami, by ci wgrali sobie je do własnej kopii aplikacji. Przydaje się to zwłaszcza, gdy nie mamy dostępu do commita i aby przyjąć zmiany, inny developer musi wgrać sobie (poprzez Apply Patch) odpowiedni, stworzony przez nas (poprzez Create Patch) patch.

Synchronize with Repositority

Po kliknięciu na synchronizację możemy przekonać się jakie zmiany mogą zostać przeprowadzone na naszej lokalnej kopii i w repozytorium. Dzięki tej perspektywie możemy zobaczyć wszystkie zmiany, jakie zaszły w projekcie.

Przykładowo kliknijmy PPM na jakikolwiek plik, który zostanie zmieniony i wybierzmy Open in Compare Editor. Otworzy nam się zakładka z porównanymi i podświetlonymi zmianami w pliku, pomiędzy wersją lokalną a tą na serwerze.

Synchronizacja

Po wybraniu Show history zobaczymy historię wersji pliku, możemy klikać na poszczególne wersje i podglądać ich zawartość.

Na górze zakładki Synchronize umieszczone są ikony, umożliwiające przeprowadzenie Update czy Commit. Są też przyciski filtrujące zmiany na wychodzące i przychodzące.

Przeglądanie repozytorium

Aby przejrzeć repozytoria udajmy się na perspektywę SVN Repository Exploring. Klikamy na przycisk pokazany na screenie i wybieramy wspomnianą opcję.

Wybór perspektywy

Widzimy listę repozytoriów, które możemy rozwijać by dostać się do odpowiednich plików. Podobnie jak przy synchronizacji z menu kontekstowego możemy wybrać wyświetlenie historii wersji pliku.

Przeglądanie repozytoriów

Tworzenie projektu wprost z repozytorium

Użyteczną może być też możliwość utworzenia nowego projektu wprost z repozytorium. W tym celu wybieramy z menu Eclipse File > New > Other. W nowym oknie szukamy SVN > Checkout Projects From SVN.

SVN Checkout

W kolejnym oknie wybieramy repozytorium. Następnie określamy folder, który będziemy przywracać. Ostatnie dwa okna służą do wybrania nazwy i położenia nowego projektu.

Chceckout

Dzięki temu zabiegowi utworzyliśmy projekt będący aktualną kopią repozytorium, możemy więc włączyć się w tworzenie projektu i przeprowadzanie w nim zmian.

Podsumowanie

Subversion to bardzo przydatne narzędzie dla każdego programisty, nawet pracującego samodzielnie. Mam nadzieję, że przedstawione tu porady do Eclipsowego pluginu Subclipse, nie wyczerpujące co prawda tematu, będą przydatne dla czytelników, tym bardziej, że w polskiej części Internetu zbyt wiele o Subclipse nie ma :)

Na koniec podam kilka przydatnych linków na ten temat:

Podobne wpisy

Dodaj do: Dodaj do del.icio.us Dodaj do Wykop.pl Dodaj do Google Reader lub Google IG
Licencja: Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 2.5 Polska.

Zostaw komentarz