wtorek, 25 stycznia 2011

This client is too old to work with working copy...

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! :)

2 komentarze:

  1. SVN... prawdziwi programiści używają GIT'a ;P

    OdpowiedzUsuń
  2. O, znajomy błąd, który mnie męczył podczas projektu z teleradiologii :)

    @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)

    OdpowiedzUsuń