Subversion 1.5

Zapewne już część z Was wie, iż w najbliższym czasie planowane jest wypuszczenie nowej wersji repozytorium kodu Subversion oznaczonej numerkiem 1.5. Zazwyczaj nie popieram publikowania na blogach informacji w stylu - “Ukazała się nowa wersja PHP” jednak w tej sytuacji postanowiłem zrobić wyjątek, a wszystko za sprawą dość istotnej zmiany funkcjonalnej kryjącej się pod nazwą “Merge tracking“.

O co tutaj właściwie chodzi - jak zapewne wiecie, a część z Was miała okazję się przekonać praca przy dużym projekcie programistycznym bez wykorzystania repozytorium kodu jest praktycznie niemożliwa, a dodatkowo praca w oparciu o blokowanie zasobów jest delikatnie mówiąć niewygodna. Dlatego też zalecaną metodą pracy w takiej sytuacji jest wykorzystanie gałęzi (branches) i okresowe łączenie zmian (merge).

Brzmi nieźle, ale na tym się kończy przyjemność, a zaczynają się trudności - wszystko za sprawą różnych szkół łączenia zmian i różnych określeń dla tych samych parametrów - efekt: nauczenie nowego programisty czym jest from, to i target wcale nie jest takie proste, a gdy do tego dołożymy “Suchy przebieg” zaczynamy wątpić w sensowność zadania. I tutaj znajduje zastosowanie w/w mechanizm śledzenia łączenia, którego zadaniem jest między innymi śledzenie tego co zostało już połączone i automatyczne naniesienie zmian które nie zostały jeszcze na niesione, dzięki czemu merge sprowadza się do:

$ cd KOPIA_ROBOCZA$ svn merge URL_DO_TRUNK

Dodatkowo dostępne są dwie nowe opcje:

  • --record-only - oznaczenie rewizji jako połączona bez wprowadzania zmian
  • --reintegrate - wykorzystywane przy mergowaniu ponownym na trunk - opcja ta ma na celu wykonanie dodatkowych sprawdzeń poprawności nanoszonych zmian

Dzięki tym zmianą stosowanie gałęzi rozwojowych w ramach projektu nie powinno już stanowić problemu nawet dla niedoświadczonego użytkownika repozytorium.

Uproszczone łączenie zmian to nie jedyna z nowości warta zauważenia w nowej wersji svn, do równie ciekawych opcji możemy zaliczyć:

  • wsparcie w automatycznym generowaniu changelog’a
  • możliwość pobrania z repozytorium tylko interesujących fragmentów drzewa ścieżek
  • interaktywne rozwiązywanie konfliktów z powłoki systemowej z wykorzystaniem klienta svn
  • wsparcie dla relatywnych adresów URL w svn:external

Dla zainteresowanych więcej informacji dostępnych jest pod adresem: http://subversion.tigris.org/svn_1.5_releasenotes.html