Porządki w repozytorium GIT

Przy instalacji FishEye i importowaniu doń repozytoriów GIT natknąłem się na nie mały problem – zaimportowane do GITa repozytorium miało już dodanych sporo twórców, co powodowało zatrzymanie indeksowania – bo licencja nie pozwalała na więcej osób. Rozwiązanie okazało się być bardzo proste – wystarczy scalić wiele identyfikatorów twórców do jednoznacznych. Banał! Nawet jest do tego ładne graficzne narzędzie w FishEye… tylko, że nie działa 🙁

Do rzeczy – czyli jak połączyć wiele identyfikatorów twórców:

Poleceniem

git shortlog -se

możemy wyeksportować wszystkich obecnych twórców. Z tej listy potrzebne są nam tylko maile/identyfikatory zaimportowane z SVNa.

W głównym katalogu repozytorium (tam gdzie jest katalog .git) tworzymy plik .mailmap w wstawiamy do niego wszystkie identyfikatory twórców – po jednym na linię. Następnie poprzedzamy każdy błędny wpis przez właściwy odpowiednik. Jeżeli jakiś twórca ma tylko prawidłowy wpis, to można go pominąć. Przykładowy plik .mailmap może wyglądać tak:

Bakus <[email protected]> <bakus@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
Pan Pierwszy <[email protected]> <misiu@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
Pan Pierwszy <[email protected]> <[email protected]>
InnaFirma <[email protected]> <commiter1@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <[email protected]> <commiter2@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <[email protected]> <commiter3@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <[email protected]> <commiter4@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>

Po zapisaniu pliku robimy commit i push. Dopiero po tej operacji można bezpiecznie zaimportować repozytorium do FishEye. Wszystkie wpisy przykładowych commiter* trafią do FishEye jako jeden użytkownik – InnaFirma. Przydaje się to nie tylko w przypadku mapowania użytkowników po imporcie z SVNa, ale także i przy niereformowalnych deweloperach, którzy nie są w stanie prawidłowo ustawić wszystkich miejsc z których wysyłają zmiany 🙂