Git
Migracja do Git
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 folderamitrunk
,branches
itags
. Repozytoria Subversion z niestandardowymi układami wymagają określenia lokalizacji folderutrunk
, dowolnych / wszystkich folderówbranch
i folderutags
. 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
:
- 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
Korzystanie z Hg-Git : bardzo szczegółowa odpowiedź tutaj: https://stackoverflow.com/a/31827990/5283213
Za pomocą importera GitHub : postępuj zgodnie z instrukcjami (szczegółowymi) w GitHub .