Close

Synchronize Git repositories

Repozytorium Git można bardzo łatwo zsynchronizować z nowymi commitami w oryginalnym repozytorium SVN. Zapewnia to komfortowy okres przejściowy w procesie migracji, w którym można nadal korzystać z istniejącego przepływu pracy SVN, ale zacząć eksperymentować z Git.

Możliwe jest synchronizowanie w obu kierunkach. Zalecamy jednak jednokierunkową synchronizację z SVN do Git. Podczas okresu przejściowego należy dodawać commity tylko do repozytorium SVN, a nie do repozytorium Git. Gdy będziesz mieć pewność, że Twój zespół jest gotowy do zmiany, możesz ukończyć proces migracji i zacząć zatwierdzać zmiany za pomocą Git zamiast SVN.

Migracja do Git: zalecamy jednokierunkową synchronizację z SVN do Git.

W międzyczasie należy kontynuować zatwierdzanie do repozytorium SVN i synchronizować repozytorium Git w razie potrzeby. Ten proces jest podobny do fazy Konwertowanie, ale ponieważ zajmujesz się tylko zmianami przyrostowymi, powinien on być znacznie bardziej wydajny.


Aktualizowanie pliku autorów


Plik authors.txt, którego użyliśmy w celu mapowania nazw użytkowników SVN do imion i nazwisk oraz adresów e-mail, jest niezbędny w procesie synchronizacji. Jeśli został przeniesiony z lokalizacji ~/GitMigration/authors.txt, z której korzystaliśmy do tej pory, musisz zaktualizować jego lokalizację za pomocą polecenia:

git config svn.authorsfile 

Jeżeli nowi programiści dodawali commity do repozytorium SVN od chwili ostatniej synchronizacji (lub początkowego klonowania), plik autorów musi zostać odpowiednio zaktualizowany. Możesz to zrobić poprzez ręczne dodanie nowych użytkowników do pliku authors.txt. Alternatywnie możesz też użyć opcji --authors-prog, co omówimy w następnej sekcji.

W przypadku synchronizacji jednorazowych często łatwiej jest bezpośrednio edytować plik autorów, jednak opcja --authors-prog jest preferowana, jeśli wykonujesz synchronizację bez nadzoru (tj. w zaplanowanym zadaniu).

Bazy danych
materiały pokrewne

Jak przenieść pełne repozytorium Git

Logo Bitbucket
POZNAJ ROZWIĄZANIE

Poznaj środowisko Git z rozwiązaniem Bitbucket Cloud

Automatyczne generowanie autorów Git


Jeśli plik autorów nie wymaga aktualizacji, możesz przejść do następnej sekcji.

Polecenie git svn zawiera opcję o nazwie --authors-prog odwołującą się do skryptu, który automatycznie przekształca nazwy użytkowników SVN w autorów Git. Musisz skonfigurować ten skrypt tak, aby akceptował nazwę użytkownika SVN jako jedyny argument i zwracał pojedynczy wiersz w postaci Nazwa (podobnie jak po prawej stronie istniejącego pliku autorów). Ta opcja może być bardzo przydatna, jeśli musisz okresowo dodawać nowych programistów do swojego projektu.

Aby użyć opcji --authors-prog, utwórz plik o nazwie authors.sh w katalogu ~/GitMigration. Dodaj następujący wiersz do pliku authors.sh, aby zwrócić fałszywą nazwę Git i adres e-mail dla wszystkich autorów, których nie znaleziono w pliku authors.txt:

echo "$1 <$1@example.com>"

Wygeneruje to tylko fałszywe imię i nazwisko oraz adres e-mail na podstawie nazwy użytkownika SVN, więc zmień je, jeśli możesz zapewnić bardziej znaczące mapowanie.

Pobieranie nowych commitów z SVN


W przeciwieństwie do SVN system Git dokonuje rozróżnienia między pobieraniem commitów z gałęzi nadrzędnej a integracją ich z projektem. To pierwsze nazywa się „pobieraniem”, a drugie można osiągnąć poprzez scalanie lub zmianę bazy. W katalogu ~/GitMigration uruchom następujące polecenie, aby pobrać nowe commity z oryginalnego repozytorium SVN.

git svn fetch

Jest to podobne do polecenia git svn clone z poprzedniej fazy, ponieważ tylko aktualizuje zdalne gałęzie repozytorium Git — lokalne gałęzie nie będą jeszcze odzwierciedlać żadnych aktualizacji. Z drugiej strony gałęzie zdalne powinny dokładnie pasować do historii repozytorium SVN.

Jeśli używasz opcji --authors-prog, musisz ją uwzględnić w powyższym poleceniu, w ten sposób:

git svn fetch --authors-prog=authors.sh

Synchronizacja z pobranymi commitami

Aby zastosować pobrane commity w repozytorium, uruchom następujące polecenie:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Pozwoli to zmienić bazę pobranych commitów na lokalne gałęzie, tak aby były zgodne z ich zdalnymi odpowiednikami. Teraz nowe commity powinny być widoczne w danych wyjściowych polecenia git log.

Czyszczenie repozytorium Git (ponownie)

Dobrym pomysłem jest również ponowne uruchomienie skryptu git-clean, aby usunąć wszelkie przestarzałe tagi lub gałęzie, które usunięto z oryginalnego repozytorium SVN od ostatniej synchronizacji:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git --force

Twoje lokalne repozytorium Git powinno być teraz zsynchronizowane z repozytorium SVN.

Podsumowanie


W tym okresie przejściowym bardzo ważne jest, aby Twoi programiści dodawali commity tylko do oryginalnego repozytorium SVN. Repozytorium Git powinno być aktualizowane tylko poprzez proces synchronizacji omówiony powyżej. Jest to znacznie łatwiejsze niż zarządzanie dwukierunkowym przepływem pracy synchronizacji, ale nadal pozwala na rozpoczęcie integracji Git z procesem kompilacji.


Udostępnij ten artykuł
Następny temat

Zalecane lektury

Dodaj te zasoby do zakładek, aby dowiedzieć się więcej na temat rodzajów zespołów DevOps lub otrzymywać aktualności na temat metodyki DevOps w Atlassian.

Ludzie współpracujący przy ścianie pełnej narzędzi

Blog Bitbucket

Ilustracja DevOps

Ścieżka szkoleniowa DevOps

Demonstracje funkcji z ekspertami Atlassian

Zobacz, jak Bitbucket Cloud współpracuje z Atlassian Open DevOps

Zapisz się do newslettera DevOps

Thank you for signing up