sobota, 25 maja 2013

Migracja z CVS na Git

Dla tych wszystkich, których nurtują pytania: czy warto, czy to się w ogóle uda, czy Git nie będzie wolniejszy - krótka relacja z migracji dość sporego projektu.

Migracja.

Sprzęt: RedHat, D2 Intel(R) Xeon(R) CPU 5160 @ 3.00GHz,  4 G ramu.
  • oryginalnie projekt na CVS ważył 7 G. Teoretycznie można go było odchudzić do ok. 5-6, aczkolwiek warto było sprawdzić jak będzie wyglądała praca z Gitem na takiej kobyle;
  • do migracji zostało użyte narzędzie Tigrisa: http://cvs2svn.tigris.org/cvs2git.html
    • standardowe ustawienia + 2 rodzaje kodowań plików (wyszło na to, że pliki są inaczej kodowane niż np. same wiadomości commitów, na szczęście można podać wiele kodowań i skrypt dopasowuje aż trafi na odpowiednie);
  • migracja wymagała od 50 do 60 G (tak GIGA) wolnego miejsca na dysku;
  • czas trwania wyniósł ok. 2,5 dnia (tak dnia);
  • rezultatem było serwerowe repo gita, które ważyło 800 M, a lokalne (takie do pracy) repo ok 1.1 G.

Praca z gitem.

Sprzęt: Win Xp, 4 rdzenie, 4 G ramu, dysk SSD.
  • utworzenie nowej gałęzi, commit kilku plików, wysłanie commita do zdalnego repo, fetch zmian - wszystkie te operacje zajmowały maks 3 sekund;
  • przełączanie się pomiędzy gałęziami nowo utworzonymi przez gita - również 3 sekundy;
  • przełączanie się pomiędzy gałęziami utworzonymi przez skrypt migrujący - ok. 30 sekund. Tak "długo" głównie przez to, że wszystkie pliki musiały zostać odświeżone;
  • clone z repo gita: 15 minut. Pewnie szybkość sieci miała tu największy wpływ. Mogłoby być trochę szybciej, ale jest to jednorazowa operacja.

Osobiste wrażenia.

Przyznam szczerze, że po tym jak plik dump zaczął ważyć 50G, skrypt chodził już 1,5 dnia i właściwie nie wiadomo co robił (obciążenie procesora minimalnie, na dysku nie pojawiały się żadne zmiany), to nie wierzyłem, że cała operacja zakończy się powodzeniem. Na szczęście warto było cierpliwie czekać i dzięki temu wiem, że na Gita nie ma mocnych:) Ogólnie zysk całego przedsięwzięcia: przełączenie miedzy gałęziami spadło z 40 minut, do maks 30 sekund.