Používanie SVN repozitárov prostredníctvom Gitu
Git používam dlhšiu dobu a celkom som si na neho zvykol. Na aktuálnom projekte však musím pracovať s SVN repozitárom hostovaným u klienta, ktorý je dostupný len po pripojení na VPN klienta. Nechcel som skončiť ako niektorí kolegovia, ktorí kvôli tomu commitujú len 1x denne (po pripojení na VPN na konci dňa) s viditeľne nepostačujúcou granularitou a tak som hľadal riešenie.
Riešením je použitie SVN repozitára prostredníctvom Gitu a je prekvapivo jednoduché. Celá myšlienka je naklonovať si SVN repozitár do lokálneho Git repozitára, commitovať do tohto lokálneho Git repozitára a z času na čas to zosynchronizovať so vzdialeným SVN repozitárom.
Založenie lokálneho Git repozitára viazaného na vzdialený SVN repozitár je jednoduché
git svn clone svn-repo-url
na synchronizáciu so vzdialeným SVN repozitárom je možné použiť rebase, ktorý stiahne všetky zmeny zo SVN a na nich aplikuje vaše lokálne nepushnuté commity
git svn rebase
rovnako jednoduchý je potom samotný push do SVN
git svn dcommit
Jedinou nevýhodou tohto riešenia je, že všetky commity budú mať následne v SVN dátum a čas zodpovedajúci dátumu a času príkazu dcommit. Podľa môjho názoru to však nie je až taký problém a pozitíva tohto riešenia výrazne prevyšujú.