W codziennej pracy przy projektach, w których udział bierze kilka osób nie ma problemów z SVN. Jedyny minus pojawia się, gdy szybko chcemy naszą roboczą wersję przenieść na serwer developerski i jedyną opcję jest kopiowanie. Niestety do wersji 1.6 każdy katalog w ramach repozytorium lokalnego posiadał podkatalog .svn, gdzie są zapisane informacje dot. danej gałęzi. Jeśli było sporo commitowanych zmian, kopiowanie setek .svn może zająć sporo czasu.
To i wiele innych usprawnień przyniósł Subversion w wersji 1.7, który ukazał się w stabilnej wersji… W październiku 2011 roku. Niestety do dzisiaj, w wielu systemach domyślna wersja to 1.6, a naprawdę warto „przeskoczyć”.
Najważniejsza sprawa, po aktualizacji do wersji 1.7 starsze repozytoria nadal są wspierane i nie musimy ich aktualizować. Zmiany warte odnotowania w 1.7:
- svn up repo1 repo2 repo3…
Od teraz poleceniem svn update możemy zaktualizować wiele repozytoriów, a nie jedno. Dodatkowo svn up potrafi rozpoznać status odpowiedzi (301 / 302) i podążyć za przekierowaniem, gdy repozytorium zostało przeniesione. - svn diff
Bardziej zrozumiały rezultat komendy svn diff dzięki zastosowaniu formatu unidiff - svn remove
Gdy chcemy usunąć katalog za pomocą svn remove, od razu zostaje on usunięty fizycznie z naszego dysku. Wcześniej podczas wydania polecenia usunięcie katalogu było tylko „kolejkowana”, a fizyczne wykonanie usunięcia odbywało się dopiero podczas commitu. Powodowało to sporo problemów, gdy przypadkiem po svn rm, dokonaliśmy jakiś zmian. - svn log potrafi robić diff
Komenda svn log została wzbogacona o parametr –diff, w szybki sposób poza listą plików zobaczymy konkretne zmiany. - svn relocate
Polecenie svn switch –relocate zostało zastąpione przez nową komendę svn relocate. - svn switch
Od wersji 1.7 komenda svn switch sprawdza pochodzenie gałęzi, na którą chcemy przełączyć. Dzięki temu mamy dodatkowe zabezpieczenie przed zbyt pochopną decyzją.
1svn switch ^/branches/SOME-BRANCH
Dodatkowo poprawiono komunikację po HTTP(S), pod Windowsem w końcu możemy wykonać polecenie svn mv plik.js Plik.js, a po stronie serwera wprowadzono wiele optymalizacji.
OS X
I teraz najważniejsze. O zaletach SVN 1.7 dowiedziałem się przez przypadek. W pewnej firmie mają za nic standardy, i klepią nazwy plików jak popadnie – spacje, znaki specjalne i pl-znaczki. Niestety Subversion 1.6 pod OS X sobie z tym nie radzi (jeśli jest wynikiem svn co).
Problem rozwiązuje aktualizacja SVN do wersji 1.7 z parametrem unicode_path, a następnie aktualizacja naszego repozytorium:
1 |
sudo port install subversion +unicode_path |