Jeśli pracujesz w firmie, która używa  własnego frameworka dla wszystkich projektów oraz korzysta z systemu kontroli wersjami SVN to doskonałym  rozwiązanem jest użycie własności svn:externals. Umożliwia ona wspołdzielenie jednego projektu ( pewnego źródła danych ) dla wszystkich projektów pochodnych. Przykładowo każda aplikacja w twojej firmie korzysta z CMS’a, o bardzo podobnej funkcjonalności, czyli tak naprawdę korzysta z tych samych bibliotek. Dzięki svn możesz łatwo wspołdzielić te biblioteki dla każdego projektu.

Jakie są tego korzyści? Przykładowo, pracując nad pewną aplikacją zauważasz w bibliotece błąd, który natychmiast poprawiasz. Dzięki temu wszystkie projekty, które używają wspołdzielonych plików posiadają już aktualną, poprawioną wersję. Odpowiednie pliki wysyła się klientowi w ramach tak zwanego wsparcia dla projektu. Poza tym łatwiejszy jest rozwój projektu, nie  trzeba „skakać” po wszystich aplikacjach i zastepować pliki – robisz to w jednym miejscu.

Szybki sposób na svn:external.

Projekt składa się z katalogów: /frontend, /temp, /backend, /backend/cms, /library, z czego /library oraz /backend/cms dla każdego projektu są powielane. Stwórzmy z nich więc odrębne repo:

svnadmin create common_cms ( w nim jest /library oraz /cms)

Dalej tworzymy repozytorium dla nowego projektu, ktory będzie korzystał z common_cms.

svnadmin create nowy_projekt

Importujemy pliki oraz katalogi, które są tylko dla niego przeznaczone. Czyli /frontend, /temp, /backend  a następnie katalogi wspołdzielone.

Dodajemy więc własność svn:externals w przeznaczonym katalogu. Piszemy:

cd nowy_projekt/

svn ps svn:externals „library [protokoł]://nazwa_host/common_cms/library” .

svn commit -m „Dodaje katalog wspoldzielony library”

svn up

( zaciagnie się katalog library )

cd nowy_projekt/backend

svn ps svn:externals „cms [protokoł]://nazwa_host/common_cms/cms” .

svn commit -m „Dodaje katalog wspoldzielony cms”

svn up

( zaciagnie się katalog cms )

Jeśli chcemy usunać external z danego katalogu wykonujemy polecenie:

svn pd svn:external .

svn commit -m „usuwam katalogi wspoldzielone z biezacego katalogu”

Korzystam z tej możliwości w mojej firmie już od dłuższego czasu i potwierdzam wygodę takiego rozwiązania.

Zachęcam do wykorzystania tej możliwości SVN.