dominik bułaj

php developer & web designer

Wprowadzenie
W firmie, do projektu w którym biorę udział, przygotowaliśmy większą paczkę zmian. Powiedzmy, że wersja produkcyjna bazuje na rewizji sprzed miesiąca (korzystamy z SVN; przy każdym commit podajemy ID i url do ticketa).
W miÄ™dzyczasie rozwiÄ…zaliÅ›my w teamie okoÅ‚o 15 ticketów i nasz project manager potrzebowaÅ‚ ich listÄ™, aby przekazać klientowi do ostatecznego sprawdzenia na stagingu. Jako że jestem najbardziej doÅ›wiadczonÄ… osobÄ… w projekcie – padÅ‚o na mnie ;)

Sposób pierwszy (oldschool)
Niby prosta czynność, bo przecież możemy otworzyć system ticketów, wyszukać wszystkie rozwiÄ…zane w ciÄ…gu miesiÄ…ca, a nastÄ™pnie spisać ID i url każdego ticketa. TrochÄ™ czasu by to zajęło…

Sposób drugi (nu skool)
PomyÅ›laÅ‚em, “hej, musi być inna droga”.
Pomocny, po raz kolejny, okazaÅ‚ siÄ™ Eclipse. Aby usprawnić caÅ‚y proces (który zajmie nam ok 30-60 sekund) musimy przejść na perspektywÄ™ “SVN Repository Exploring”. NastÄ™pnie wybieramy w panelu “SVN Repositories” repozytorium i włączamy podglÄ…d historii (“Show history”).

W panelu “History” zaznaczamy interesujÄ…ce nas rewizje i z menu kontekstowego wybieramy “Generate ChangeLog”:
eclipse_svn_changelog_1

W okienku, które się otworzy, mamy wybór jaki format ma mieć nasz changelog oraz gdzie ma być zapisany (w schowku czy na dysku):
eclipse_svn_changelog_2

Wybrałem domyślne ustawienie (svn log + schowek). Wkleiłem do edytora zawartość schowka i oto co otrzymałem:
eclipse_svn_changelog_3

Podsumowanie
Jak widać cała operacja jest bardzo prosta i w pełni zautomatyzowana. Co więcej, jest bardzo pomocna :)

Niemal rok temu pisaÅ‚em jak zainstalować system Trac w Ubuntu. Niedawno jednak przeinstalowaÅ‚em Ubuntu “od zera” (majÄ…c oczywiÅ›cie kopie wczeÅ›niejszej wersji systemu).

Przy okazji odbudowy systemu postanowiłem przenieść repozytoria svn z /var/lib/svn (jak podałem w zeszłorocznym wpisie) na /home/subversion.
Zmiana podyktowana jest wygodÄ… i wiÄ™kszym bezpieczeÅ„stwem – po prostu /home mam na osobnej partycji, dlatego nie tracÄ™ danych przy ewentualnym padzie systemu i koniecznoÅ›ci reinstalacji.

Jak zatem “przestawić” Trac’a, aby używaÅ‚ nowej lokalizacji repozytorium svn?

Po pierwsze edytujemy konfiguracje każdego z projektów trac (/var/lib/trac/[NAZWA PROJEKTU]/conf/trac.ini).

Odszukujemy liniÄ™:

repository_dir = /var/lib/svn/[NAZWA PROJEKTU]

i zamieniamy jÄ… na:

repository_dir = /home/subversion/[NAZWA PROJEKTU]

Otwierając stronę projektu w przeglądarce (http://127.0.0.1/projects/[NAZWA PROJEKTU]) zobaczymy ostrzeżenie o treści:
Warning: Can’t synchronize with the repository (The ‘repository_dir’ has changed, a ‘trac-admin resync’ operation is needed.). Look in the Trac log for more information.

Wszystko powinno być jasne. Przechodzimy do konsoli i wykonujemy następujące polecenie (będąc w /var/lib/trac):

trac-admin [NAZWA PROJEKTU] resync

Gotowe!

24 czerwca wydano oficjalni kolejnÄ… wersjÄ™ platformy Eclipse. Wersja 3.5 nosi nazwÄ™ Galileo.
Wraz z wydaniem Galileo, ukazało się aż 33 nowych wersji projektów bazujących na Eclipse. Oczywiście jednym z nich jest PDT (PHP Development Tools), które zostało zaktualizowane do wersji 2.1.

Oto co nowego zyskamy instalujÄ…c PDT 2.1:
* wsparcie dla PHP 5.3 (swojÄ… drogÄ… – wydanego wczoraj)
** ustawienie projektu do obsługi najnowszej wersji PHP
** walidacja i kolorowanie kodu PHP 5.3 (w tym przestrzeni nazw)
** obsługa przestrzeni nazw w podpowiadaniu kodu (Code Assist)
* poprawiono wiele błędów z wersji 2.0.x
* przyśpieszono działanie (start, build projektu)
* usprawniono PHP Explorer (usability)

Z pierwszych wrażeÅ„ – widzÄ™, że błąd z obsÅ‚ugÄ… svn (czy to Subclipse, czy Subversive) nadal jest obecny. Ale to raczej sprawa maÅ‚o ważna, nie przeszkadzajÄ…ca w kodowaniu. Ciekawie prezentuje siÄ™ dostÄ™pny z Galileo i PDT 2.1 – Mylyn. Jest to plugin do zarzÄ…dzania taskami. Można przez odpowiednie connectory podpiąć siÄ™ do systemów Jira lub Trac. Bardzo fajnie dziaÅ‚a w połączeniu z klientem svn (Subversive lub Subclipse).
PDT 2.1 dziaÅ‚a zdecydowanie szybciej od poprzednika co jest najwiÄ™kszym plusem, bo do PHP 5.3 na razie nie planujÄ™ siÄ™ “zabierać” ;)

Zasadniczo, aby otrzymać kopię projektu gotową do użycia poza repozytorium możemy skorzystać z komendy:

svn export

W ten sposób wyeksportujemy sobie projekt do jakiegoÅ› katalogu, który nie bÄ™dzie zawieraÅ‚ podkatalogów .svn (meta informacje Subversion). Niestety ma to też wady, zasoby z wÅ‚aÅ›ciwoÅ›ciami svn:ignore zostanÄ… pominiÄ™te… ale nie o tym mowa ;)

Powiedzmy, że mamy projekt współdzielony w jakimś repozytorium. Powiedzmy, że serwer repozytorium padł (i nie ma backupu) lub został wyłączony, czy w końcu całkowicie chcemy zrezygnować z pracy z SVN. Co zrobić w takim przypadku?
Okazuje się, że klient svn nie umożliwia odpięcia, tudzież wypięcia, projektu z repozytorium. W takim przypadku pomocna przydaje się znajomość powłoki. Wykonujemy, będąc w katalogu projektu, następującą komendę:

$ rm -rf `find . -type d -name .svn`

OczywiÅ›cie można to sobie uproÅ›cić. UżywajÄ…c Subclipse – plugina do Eclipse – wystarczy wybrać z menu kontekstowego projektu: Team > Disconnect.

Po skoÅ„czeniu udoskonaleÅ„ i dokonaniu kilku poprawek na PinkCrow, postanowiÅ‚em w koÅ„cu zmigrować witrynÄ™ zawierajÄ…cÄ… moje portfolio do ostatniej wersji Zend Framework, czyli 1.8.1. A zmian bÄ™dzie od groma. Od wprowadzenia dawno planowanych obsÅ‚ug layoutu i formularzy przez użycie najnowszych “gadżetów” Zend_Application, Zend_Navigation etc.

Ale do rzeczy… Jako że lokalnie używam svn (historia zmian, tagowanie wersji, etc.) katalog z bibliotekÄ… Zend’a mam podpiÄ™ty przez svn:externals.
SzukajÄ…c Å›cieżki do wersji otagowanej jako “release-1.8.1″ natrafiÅ‚em na tag “release-1.8.2″.

W pliku README.txt czytamy:

Zend Framework 1.8.2 Release ([INSERT REV NUM HERE]).
Released on May 27, 2009.

Zatem wychodzi na to, że tego newsa publikuję wcześniej niż oficjalna strona frameworka!

Inna ciekawostka, plik LICENSE.txt zawiera zakres dat 2005-2008 – ot takie maÅ‚e przeoczenie ;)

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 ;-)
(wiÄ™cej…)

Postanowiłem podzielić się bardzo ciekawym zbiorem tablic czy ściągawek, tak zwanych Cheat Sheets. Zbiór nie tylko ciekawy, ale i dość pokaźny. Na stronie www.addedbytes.com zamieszczono aż 19 ściągawek, m.in. z takich tematów jak:

  • PHP
  • MySQL
  • SVN (Subversion)
  • CSS
  • mod_rewrite (Apache)
  • JavaScript
  • wyrażenia regularne (regular expressions)
  • Microsoft SQL Server
  • Microformats
  • Ruby on Rails
  • ASP / VBScript

Polecam dodać do zakładek adres http://www.addedbytes.com/cheat-sheets/, napewno kiedyś się przyda ;-)

Archiwa