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 <krzysztof.blachut@firma.it> <bakus@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
Pan Pierwszy <pan.pierwszy@firma.it> <misiu@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
Pan Pierwszy <pan.pierwszy@firma.it> <misiaczek@gmail.com>
InnaFirma <support@innafirma.it> <commiter1@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <support@innafirma.it> <commiter2@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <support@innafirma.it> <commiter3@1a2b3c5d-d18e-12ed-a22c-987fabcd1234>
InnaFirma <support@innafirma.it> <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 🙂