Igor Kulman

Používanie SVN repozitárov prostredníctvom Gitu

· Igor Kulman

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ú.