SubGit (vs Blue Screen of Death)
subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
To wszystko.
+ Aby zaktualizować z SVN, repozytorium Git utworzone przez pierwsze polecenie.
subgit import directory/path/Local.git.Repo
Skorzystałem ze sposobu natychmiastowej migracji do Git, aby uzyskać ogromne repozytorium.
Oczywiście potrzebujesz przygotowania.
Ale wcale nie możesz zatrzymać procesu rozwoju.
Oto moja droga.
Moje rozwiązanie wygląda następująco:
- Przeprowadź migrację SVN do repozytorium Git
- Zaktualizuj repozytorium Git tuż przed zmianą zespołu .
Migracja zajmuje dużo czasu w przypadku dużego repozytorium SVN.
Ale aktualizacja ukończonej migracji zajmuje zaledwie kilka sekund.
Oczywiście, że używam SubGit , mamo. git-svn sprawia, że jestem niebieskim ekranem śmierci . Po prostu ciągle. A git-svn nudzi mnie fatalnym błędem „ zbyt długiej nazwy pliku ” Gita .
KROKI
1. Pobierz SubGit
2. Przygotuj polecenia migracji i aktualizacji.
Powiedzmy, że robimy to dla systemu Windows (portowanie w systemie Linux jest banalne).
W katalogu bin instalacji SubGit (subgit-2.XX \ bin) utwórz dwa pliki .bat.
Treść pliku / polecenia do migracji:
start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo
Polecenie „start” jest tutaj opcjonalne (Windows). Pozwoli to zobaczyć błędy przy starcie i pozostawić otwartą powłokę po zakończeniu SubGit.
Możesz dodać tutaj dodatkowe parametry podobne do git-svn . Korzystam tylko z --default-domain myCompanyDomain.com, aby naprawić domenę adresu e-mail autorów SVN.
Mam standardową strukturę repozytorium SVN (trunk / branch / tags) i nie mieliśmy problemów z „mapowaniem autorów”. Więc nic więcej nie robię.
(Jeśli chcesz migrować tagi, takie jak oddziały lub Twoja SVN ma wiele folderów oddziałów / tagów, możesz rozważyć użycie bardziej szczegółowego podejścia SubGit )
Wskazówka 1 : Użyj opcji --minimal-rewizja YourSvnRevNumber, aby zobaczyć, jak szybko wszystko się ułoży (jakiś rodzaj debugowania). Szczególnie przydatne jest wyświetlanie nazwisk autorów lub e-maili.
Lub ograniczyć głębokość historii migracji.
Wskazówka 2 : Migrację można przerwać ( Ctrl+ C) i przywrócić, uruchamiając następne polecenie / plik aktualizujący.
Nie radzę tego robić dla dużych repozytoriów. Otrzymałem „Wyjątek braku pamięci Java + Windows”.
Wskazówka 3 : Lepiej jest utworzyć kopię swojego pustego repozytorium wyników.
Treść pliku / polecenia do aktualizacji:
start subgit import directory/path/Local.git.Repo
Możesz uruchomić go dowolną ilość razy, gdy chcesz uzyskać zatwierdzenia ostatniego zespołu do repozytorium Git.
Ostrzeżenie! Nie dotykaj nagiego repozytorium (na przykład tworzenie oddziałów).
Weźmiesz kolejny błąd krytyczny:
Błąd nieodwracalny: nie są zsynchronizowane i nie można ich zsynchronizować ... Tłumaczenie wersji Subversion na Git zatwierdza ...
3. Uruchom pierwsze polecenie / plik. Duże repozytorium zajmie dużo czasu. 30 godzin na moje skromne repozytorium.
To wszystko.
Możesz zaktualizować swoje repozytorium Git z SVN w dowolnym momencie i dowolnym czasie, uruchamiając drugi plik / polecenie. A przed zmianą zespołu programistów na Git.
To zajmie tylko sekundy.
Jest jeszcze jedno przydatne zadanie.
Wciśnij lokalne repozytorium Git do zdalnego repozytorium Git
Czy to twoja sprawa? Kontynuujmy.
- Skonfiguruj swoje piloty
Biegać:
$ git remote add origin url://your/repo.git
- Przygotuj się do początkowego wysłania dużego lokalnego repozytorium Git do zdalnego repozytorium
Domyślnie Twój Git nie może wysyłać dużych fragmentów.
fatal: Odległy koniec odłożył słuchawkę nieoczekiwanie
Biegnijmy po to:
git config --global http.postBuffer 1073741824
524288000 - 500 MB 1073741824 - 1 GB itp.
Napraw problemy z certyfikatem lokalnym . Jeśli twój serwer git używa uszkodzonego certyfikatu.
Mam wyłączone certyfikaty .
Również twój serwer Git może mieć ograniczenia ilości żądań wymagające korekty .
- Prześlij całą migrację do zdalnego repozytorium Git zespołu.
Uruchom z lokalnym Gitem:
git push origin --mirror
( git push origin „*: *” dla starszych wersji Git)
Jeśli pojawi się następujący błąd : błąd: nie można spawnować git: Brak takiego pliku lub katalogu ... Dla mnie pełne odtworzenie mojego repozytorium rozwiązuje ten błąd (30 godzin). Możesz wypróbować kolejne polecenia
git push origin --all
git push origin --tags
Lub spróbuj ponownie zainstalować Git ( bezużyteczne dla mnie ). Lub możesz tworzyć gałęzie ze wszystkich tagów i przesuwać je. Lub, lub, lub ...