Szukaj…


Przeprowadź migrację z SVN do Git za pomocą narzędzia do konwersji Atlassian

Pobierz narzędzie do konwersji Atlassian tutaj . To narzędzie wymaga Java, więc upewnij się, że masz zainstalowane środowisko Java Runtime Environment JRE na komputerze, na którym chcesz wykonać konwersję.

Użyj komendy java -jar svn-migration-scripts.jar verify sprawdź, czy na twoim komputerze brakuje programów niezbędnych do ukończenia konwersji. W szczególności to polecenie sprawdza narzędzia Git, subversion i git-svn . Sprawdza również, czy przeprowadzasz migrację w systemie plików z rozróżnianiem wielkości liter. Migracja do Git powinna odbywać się w systemie plików z rozróżnianiem wielkości liter, aby uniknąć uszkodzenia repozytorium.

Następnie musisz wygenerować plik autorów. Subversion śledzi zmiany tylko według nazwy użytkownika osoby odpowiedzialnej. Git wykorzystuje jednak dwie informacje, aby odróżnić użytkownika: prawdziwe imię i adres e-mail. Następujące polecenie wygeneruje plik tekstowy odwzorowujący nazwy użytkowników subversion na ich odpowiedniki Git:

java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt

gdzie <svn-repo> to adres URL repozytorium subversion, które chcesz przekonwertować. Po uruchomieniu tego polecenia informacje identyfikujące authors.txt zostaną zmapowane w authors.txt . Adresy e-mail będą miały postać <username>@mycompany.com . W pliku autorów musisz ręcznie zmienić domyślną nazwę każdej osoby (która domyślnie stała się nazwą użytkownika) na rzeczywiste imiona i nazwiska. Przed kontynuowaniem sprawdź także poprawność wszystkich adresów e-mail.

Następujące polecenie sklonuje repozytorium svn jako Git:

git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>

gdzie <svn-repo> to ten sam adres URL repozytorium, który został użyty powyżej, a <git-repo-name> to nazwa folderu w bieżącym katalogu, w którym ma zostać sklonowane repozytorium. Przed użyciem tego polecenia należy wziąć pod uwagę kilka uwag:

  • Flaga --stdlayout powyżej pokazuje --stdlayout , że używasz standardowego układu z folderami trunk , branches i tags . Repozytoria Subversion z niestandardowymi układami wymagają określenia lokalizacji folderu trunk , dowolnych / wszystkich folderów branch i folderu tags . Można to zrobić, postępując zgodnie z tym przykładem: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Wykonanie tego polecenia może zająć wiele godzin, w zależności od rozmiaru repozytorium.
  • Aby skrócić czas konwersji dla dużych repozytoriów, konwersję można uruchomić bezpośrednio na serwerze obsługującym repozytorium subversion w celu wyeliminowania narzutu sieciowego.

git svn clone importuje gałęzie subversion (i trunk) jako gałęzie zdalne, w tym tagi subversion (zdalne gałęzie poprzedzone tags/ ). Aby przekonwertować je na rzeczywiste gałęzie i znaczniki, uruchom następujące polecenia na komputerze z systemem Linux w kolejności, w jakiej zostały dostarczone. Po ich uruchomieniu git branch -a powinna wyświetlać prawidłowe nazwy gałęzi, a git tag -l powinien pokazywać tagi repozytorium.

git for-each-ref refs/remotes/origin/tags | cut -d / -f 5- | grep -v @ | while read tagname; do git tag $tagname origin/tags/$tagname; git branch -r -d origin/tags/$tagname; done
git for-each-ref refs/remotes | cut -d / -f 4- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/origin/$branchname"; git branch -r -d "origin/$branchname"; done

Konwersja svn na Git jest teraz zakończona! Po prostu push lokalne repozytorium na serwer, a będziesz mógł nadal wnosić wkład przy użyciu Git, a także mając całkowicie zachowaną historię wersji z svn.

SubGit

SubGit może być użyty do jednorazowego importu repozytorium SVN do git.

$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git

Przeprowadź migrację z SVN do Git za pomocą svn2git

svn2git to Ruby otacza natywną obsługę SVN gita przez git-svn , pomagając w migracji projektów z Subversion do Git, zachowując historię (w tym historię trunk, tagów i gałęzi).

Przykłady

Aby przeprowadzić migrację repozytorium svn ze standardowym układem (tj. Gałęzie, znaczniki i pień na poziomie głównym repozytorium):

$ svn2git http://svn.example.com/path/to/repo

Aby przeprowadzić migrację repozytorium svn, które nie ma standardowego układu:

$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir

Jeśli nie chcesz migrować (lub nie masz) gałęzi, tagów lub pnia, możesz użyć opcji - --notrunk , --nobranches i --notags .

Na przykład $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches migruje tylko historię trunk.

Aby zmniejszyć przestrzeń wymaganą przez nowe repozytorium, możesz wykluczyć wszelkie katalogi lub pliki, które raz dodałeś, a których nie powinieneś (np. Katalog kompilacji lub archiwa):

$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'

Optymalizacja po migracji

Jeśli masz już kilka tysięcy zatwierdzeń (lub więcej) w nowo utworzonym repozytorium git, możesz chcieć zmniejszyć przestrzeń używaną przed wypchnięciem repozytorium na zdalne. Można to zrobić za pomocą następującego polecenia:

$ git gc --aggressive

Uwaga: poprzednie polecenie może zająć do kilku godzin w dużych repozytoriach (dziesiątki tysięcy zatwierdzeń i / lub setki megabajtów historii).

Przeprowadź migrację z Team Foundation Version Control (TFVC) do Git

Możesz migrować z kontroli wersji fundacji zespołu do git za pomocą narzędzia open source o nazwie Git-TF. Migracja przeniesie również twoją istniejącą historię, konwertując zameldowanie tfs do git commits.

Aby umieścić swoje rozwiązanie w Git za pomocą Git-TF, wykonaj następujące kroki:

Pobierz Git-TF

Możesz pobrać (i zainstalować) Git-TF z Codeplex: Git-TF @ Codeplex

Sklonuj swoje rozwiązanie TFVC

Uruchom program PowerShell (Win) i wpisz polecenie

git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep

Przełącznik --deep jest słowem kluczowym, na które należy zwrócić uwagę, ponieważ mówi Git-Tf, aby skopiował historię meldowania. Masz teraz lokalne repozytorium git w folderze, z którego wywołałeś polecenie cloe.

Sprzątać

  • Dodaj plik .gitignore. Jeśli korzystasz z programu Visual Studio, edytor może to zrobić za Ciebie, w przeciwnym razie możesz to zrobić ręcznie, pobierając pełny plik z github / gitignore .
  • Usuń powiązania kontroli źródła TFS z rozwiązania (usuń wszystkie pliki * .vssscc). Możesz również zmodyfikować plik rozwiązania, usuwając GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection

Commit & Push

Zakończ konwersję, zatwierdzając i przekazując lokalne repozytorium do pilota.

git add .
git commit -a -m "Coverted solution source control from TFVC to Git"

git remote add origin https://my.remote/project/repo.git

git push origin master

Migracja Mercurial do Git

Można za pomocą następujących metod zaimportować Mercurial Repo do Git :

  1. Korzystanie z szybkiego eksportu :
cd
git clone git://repo.or.cz/fast-export.git
git init git_repo
cd git_repo
~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repo
git checkout HEAD
  1. Korzystanie z Hg-Git : bardzo szczegółowa odpowiedź tutaj: https://stackoverflow.com/a/31827990/5283213

  2. Za pomocą importera GitHub : postępuj zgodnie z instrukcjami (szczegółowymi) w GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow