Wstęp
Subversion – Ci co zasmakowali nie potrafią żyć bez niego, a Ci co nie spróbowali uważają go za zbędny. System kontroli wersji kodu i innych dokumentów jest dla mnie narzędziem nieocenionym. Nie jest to bynajmniej moja ocena tego narzędzia, a wynik doświadczenia wielu programistów. Dlatego chciałbym opisać jak korzystać z tego narzędzia na Mac OS X. Co mamy do wyboru, i czego obecnie ja używam oraz dlaczego? Nie będę tu opisywał co to jest system kontroli wersji ;)
Co mamy do wyboru?
Z dostępnych narzędzie na OS X mamy:
- narzędzie konsolowe svn
- Versions
- Cornerstone
- SmartSVN
- SvnX
- narzędzia wbudowane w IDE (NetBeans, Eclipse, IntelliJ IDEA, Xcode)
Nie jestem pewien czy to pełna lista, ale pokrywa większość aplikacji jakie znalazłem wybierając narzędzie do pracy.
SVN w konsoli
Jest to narzędzie, które musimy zainstalować przez macporty. W tym celu po instalacji portów wpisujemy:
sudo port install subversion
Po instalacji mamy dostęp do wszystkich możliwości systemu kontroli wersji zarówno poprzez clienta (svn) jak i administracyjne (svnadmin). Narzędzie konsolowe svn jest w pełni funkcjonalnym klientem Subversion. W codziennej pracy deveolperskiej może być lekko uciążliwe. Jednak jest dla mnie podstawowym narzędziem pracy na serwerach, dlatego trzeba umieć go używać, a przynajmniej umieć czytać pomoc do tego narzędzia ;) W tym celu warto zapamiętać te trzy polecenia:
svn help svn help commit svn help up
Pierwsze dwa polecenia pozwolą poznać możliwości narzędzia. Ostatnie oprócz pomocy do polecenia wyświetli listę oznaczeń statusów plików. Dlaczego warto poznać to narzędzie?
- Nie zawsze mamy dostęp do GUI (serwery)
- Nie wszystkie narzędzia mają wszystkie możliwości
- Jest bardziej niezawodne niż narzędzia z GUI
- Często szybciej niektóre rzeczy zrobić w konsoli np.: dodać wszystkie niewersjonowane pliki do repozytorium: svn st . | grep '^?’ | awk '{ print $2}’ | while read f; do svn add $f; done
Versions (€39) i Cornerstone (€59)
Są to dwie aplikacje tworzone specjalnie pod systemu Mac OS X. Aplikacje te są bardzo podobne do siebie. Niestety obie aplikacje nie wspierają mergowania i branchowania, co jest ich największa wadą. Versions jest lekko uboższy od Cornerstone. Versions posiada wszystkie podstawowe funkcjonalności + wsparcie dla zewnętrznych aplikacji do wyświetlania różnic. Sam jednak nie wspiera przyjemnie oglądania różnic. Co utrudnia codzienną pracę z kodem, szczególnie przy konfliktach.
To wyróżna Cornerstone, który ma wiele możliwości oglądania różnic w plikach, czy też oglądanie zmian w plikach na linii czasu. Co ciekawe jest też narzędziem które informuje o zmianach, które pojawiły się na serwerze, a nie zostały jeszcze pobrane. Tym samym przed wprowadzeniem zmian widać, że trzeba uaktualnić kod oraz co za pliki zostały zmienione (i przez kogo).
Przy pracy z zewnętrznymi repozytoriami ukazały się dwie cechy narzędzia z jednej strony bardzo łatwo wspiera dodawanie i edytowanie zewnętrznych repozytoriów. Natomiast wprowadzanie zmian w zewnętrznych repozytoriach jest utrudnione. Program nie dzieli listy albo w żaden inny sposób nie oddziela tych repozytoriów. Przez co przy commitowaniu zmian trzeba oddzielnie zaznaczyć pliki z repozytorium właściwego od zewnętrznego. Natomiast ciekawą opcją są zakładki do filtrowania plików według statusów.
Do codziennej pracy używam właśnie Cornerstone ponieważ okazał się ładny, funkcjonalny oraz Macowo użyteczny.
SmartSVN (79USD)
Jest to aplikacja, która zapewnia pełne wsparcie dla funkcji Subversion w szczególności mergowanie i branchowanie. Jest jednak aplikacją, która jest przeniesieniem aplikacji z systemu Windows. Stąd trochę przytłacza swoim skomplikowaniem. Jest to aplikacja raczej dla użytkowników przesiadających się z Windowsa.
SVNx
Jest to wolne oprogramowanie dostępne bez opłat. Można je polecić na początek do zapoznania się z Subversion. Jednak stanowi mało przystępną alternatywę dla konsoli. Poruszanie się po tej aplikacji oraz uzyskiwanie szybko informacji nie jest proste. Wymaga to wszystko czasu i zrozumienia filozofii aplikacji. Jest też bardziej nastawione na działaniu bezpośrednio na repozytorium niż na jego kopii lokalnej. Wg mojej opinii może to powodować pewne niebezpieczeństwo generowania błędów poprzez nieświadome zmiany. Ja osobiście wole bardziej użyć konsoli niż SVNxa ;)
Narzędzia w IDE
Większość nowoczesnych środowisk programistycznych takich jak NetBeans, Eclipse, IntelliJ IDEA, Xcode, bez większego problemu można zintegrować z systemami kontroli wersji. Co daje sporo dodatkowych możliwości już w trakcie tworzenia oprogramowania, co daje dużo komfortu. Często posiadają one:
- możliwość oznaczania zmodyfikowanych/usuniętych/dodanych linii bezpośrednio w edytorze
- oznaczenia dodanych/usuniętych/zmodyfikowanych plików
- dodawanie/usuwanie plików powoduje odzwierciedlenie zmian w svnie (svn add, svn del)
- Pokazywanie autorów danej lini
- Pokazywanie historii plików
- i wiele innych
Dlatego jeżeli nie chcesz dokonywać zakupu oprogramowania sprawdź czy wsparcie w IDE nie jest wystarczające dla Ciebie. Nie mniej połączenie IDE z np. Subversion tylko ułatwia pracę z kodem, dlatego korzystajcie z tego dobrodziejstwa bez znaczenia czy masz też osobną aplikację ;)
Podsumowanie
To jakiego narzędzia będziesz używał zależy w większości od Ciebie i projektu, który tworzysz. Innymi czynnikami decydującymi o decyzji co do narzędzia są wielkość zespołu tworzącego oprogramowanie, zestaw funkcji z których korzystasz (branchowanie, tagowanie). Dla mnie podstawą jest połączenie mojego IDE z Subversion oraz zewnętrzny program do przeprowadzania większych operacji. A co wy używacie?
PS. Najlepszym klientem do SVNa jest w mojej opinii Tortoise SVN, niestety obecnie wyłącznie dostępny na Windowsa w pełnej funkcjonalności.
Najnowsze komentarze