Trochę ponad rok temu podczas pracy z NetBeansem i SVNem, często witał mnie taki oto komunikat:
This client is too old to work with working copy ; please get a newer Subversion client
Ostatnio podobnym komunikatem uraczył mnie Eclipse...
Sprawę już omawiałem na blogu (http://wojtek-m.blogspot.com/2009/12/netbeans-i-subversion_20.html), ale wtedy nie poznałem przyczyny takiego zachowania. Teraz starczyło mi na to cierpliwości...
Problem byłby o wiele prostszy do zrozumienia, gdyby komunikat brzmiał tak:
This working copy is too new to work with this client
Co się okazuje? Na tym samym repozytorium SVN pracowałem używając IDE jak i TortoiseSVN, a problemy zaczynają się kiedy za pomocą tego drugiego zrobi się np. update repozytorium.
TortoiseSVN używa nowszej wersji klienta SVN (1.5) i kiedy pracuje na repozytorium, to automatycznie zmienia jego wersję na nowszą (modyfikuje te ukryte pliki konfiguracyjne) - żebyś jako użytkownik mógł wykorzystać te wszystkie "extra goodies".
Zła wiadomość jest taka, że starszy klient, który to repozytorium założył (nasze kochane IDE, w moim przypadku jest to 1.4) teraz przy próbie pracy widzi "oho! to jest jakaś nowsza wersja, nie wiadomo co się mogło zmienić, lepiej nie będę grzebał w tym".
OK, a czy jest rozwiązanie tego problemu poza zmianą wersji klienta SVN w IDE (takie coś zaproponowałem w grudniu 2009)? Tak, potrzebny nam będzie tylko Python i ten oto skrypt:
http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/change-svn-wc-format.py
Teraz wystarczy go uruchomić, podając jako parametr docelową wersję SVN, np:
python change-svn-wc-format.py <nazwa katalogu z naszym repo> 1.4
Voila! :)
wtorek, 25 stycznia 2011
Subskrybuj:
Komentarze do posta (Atom)
SVN... prawdziwi programiści używają GIT'a ;P
OdpowiedzUsuńO, znajomy błąd, który mnie męczył podczas projektu z teleradiologii :)
OdpowiedzUsuń@maddox
prawdziwi programiści nie używają żadnego systemu kontroli wersji, lecą na żywca, a gdy potrzebują wymienić się kodem, po prostu wysyłają go mailem (to prawie tak, jak prywatne commity w GITcie :P)