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.