Przegląd rozwiązań

Pierwszym powszechnie używanym repozytorium kodu był CVS. Dostrzeżone w pracy z CVS wady miało usunąć oprogramowanie SVN (Subversion). Do najważniejszych ulepszeń należy śledzenie zmian nazw katalogów i plików, transakcyjność (zachowują się wszystkie zmiany transakcji, lub żadna) oraz wykorzystanie rozszerzenia protokołu HTTP o nazwie WebDAV. Obydwa opisane rozwiązania są nadal stosowane i mają swoje zalety. Jednak potrzeby dużych, rozproszonych zespołów programistycznych są większe, niż mogą zaoferować cvs/svn. Przede wszystkim chodzi o możliwość tworzenia lokalnych wersji repozytoriów i łączenia (synchronizacji ich) w razie potrzeby. Ta funkcjonalność wiąże się z potrzebą tworzenia gałęzi kodu i manipulowania tymi gałęziami. Nowoczesne systemy kontroli wersji udostępniają takie właśnie możliwości. Należy tu wymienić przede wszystkim: Mercurial, Baazar i GIT. Ostatnio dużą popularność zyskuje zwłaszcza ten ostatni, którego stworzył Linus Torvalds pod potrzeby rozwoju jądra Linux'a. Do tej popularności przyczynia się rozwój serwisu github.com, który jest darmowy dla projektów open source.

Tego typu serwisy umożliwiają nie tylko zarządzanie kodem oprogramowania, ale dokumentowanie projektu (najczęściej w formie Wiki), publikowanie plików, dokumentowanie kolejnych wydań (issue) itp...

Wybierając rozwiązanie dla obsługi naszego projektu, możemy skorzystać z jednego z kilku publicznych serwisów, albo postawić własny serwer. Najpopularniejsze serwisy publiczne to wspomniany http://www.githost.com, http://code.google.com i http://www.sourceforge.net (zob. porównanie tych i innych rozwiązań).

Jeśli chcemy postawić własny serwer, to także mamy wiele możliwości. Na przykład:

Wśród tych propozycji szczególnie ciekawie wygląda Phabricator. Jest to udostępniany na zasadach open source produkt firmy Facebook. Tego oprogramowania Facebook używa dla zarządzaniu swoją aplikacją (która jest prawdopodobnie najbardziej złożonym produktem napisanym w PHP).

Phabricator składa się z kilku modułów, z których najważniejsze są:

  1. Differential. Osoba, która stworzyła dany fragment kodu, wysyła go do rewizji do differentiala i dodaje osoby, które powinny ten kod przejrzeć. Te osoby z kolei mogą dodać kolejnych recenzentów, zaakceptować lub "odesłać do poprawy". Każda osoba może sprawdzić, jakie rewizje czekają na jego akcję (zmiany, recenzja).

  2. Maniphest. Służy do tworzenia zadań (tworzenie nowej funkcjonalności i/lub naprawiania bugów) oraz przydzielania ich do konkretnych osób.

  3. Diffusion. Przeglądanie repozytorium, zawierającego informacje o kodzie i dokonanych w nim zmianach.

Poza modułami (dostępnymi poprzez stronę www) Phabricatora, Facebook udostępnia dodatkowy produkt o nazwie Arcanist. Jest to narzędzie uruchamiane z wiersza poleceń, zastępujące polecenia git'a. Używanie Arcanista zamiast polecenia git pozwala na lepszą integrację z Phabricatorem. Kod przed zapisem do repozytorium może podlegać akceptacji. Dostępne są dodatkowe działania na gałęziach etc. Arcanist pozwala na powiązanie ze sprawdzarkami kodu (good practices), testami jednostkowymi, itd. Składnia jest podobna do poleceń git'a (arc commit, arc diff). Jak piszą twórcy Phabricator'a, Arcanist był testowany w środowisku Windows. Nie obsługuje też innych poza Git i SVN systemów wersjonowania. Jest to produkt na bieżąco rozwijany i udoskonalany.

Zalety Phabricatora:

  1. Gromadzi w zasadzie wszystkie potrzebne narzędzia to wspólnego tworzeniu projektu.

  2. "Kolejki" w Differentialu i Manipheście obrazują, czym dany inżynier powinien się zająć. Upraszcza to zarządzanie

  3. Współpracuje z Gitem i SVNem.

  4. Jest bardzo wydajny (choć to pewnie przydaje się w dopiero BARDZO dużych projektach).

  5. Jest prosty w obsłudze.

  6. Łatwa instalacja (jednak wymaga własnego serwera - nie da się go zainstalować w hostingu).

Ostatnia modyfikacja: wtorek, 9 październik 2012, 23:00