Git
Migreren naar Git
Zoeken…
Migreer van SVN naar Git met behulp van het conversieprogramma Atlassian
Download de Atlassian conversie utility hier . Voor dit hulpprogramma is Java vereist. Zorg er daarom voor dat Java Runtime Environment JRE is geïnstalleerd op de computer die u wilt converteren.
Gebruik de opdracht java -jar svn-migration-scripts.jar verify
te controleren of uw machine een van de programma's mist die nodig zijn om de conversie te voltooien. In het bijzonder controleert deze opdracht op de hulpprogramma's Git, subversion en git-svn
. Het controleert ook of u de migratie uitvoert op een hoofdlettergevoelig bestandssysteem. Migratie naar Git moet gebeuren op een hoofdlettergevoelig bestandssysteem om corruptie van de repository te voorkomen.
Vervolgens moet u een auteursbestand genereren. Subversion volgt wijzigingen alleen op basis van de gebruikersnaam van de committer. Git gebruikt echter twee soorten informatie om een gebruiker te onderscheiden: een echte naam en een e-mailadres. De volgende opdracht genereert een tekstbestand dat de subversiegebruikersnamen toewijst aan hun Git-equivalenten:
java -jar svn-migration-scripts.jar authors <svn-repo> authors.txt
waarbij <svn-repo>
de URL is van de subversionrepository die u wilt converteren. Na het uitvoeren van deze opdracht worden de identificatiegegevens van de bijdragers toegewezen aan authors.txt
. De e-mailadressen hebben de vorm <username>@mycompany.com
. In het auteursbestand moet u de standaardnaam van elke persoon (die standaard zijn gebruikersnaam is geworden) handmatig wijzigen in de werkelijke naam. Zorg ervoor dat u ook alle e-mailadressen op juistheid controleert voordat u doorgaat.
De volgende opdracht zal een svn-repo als een Git-kloon klonen:
git svn clone --stdlayout --authors-file=authors.txt <svn-repo> <git-repo-name>
waarbij <svn-repo>
dezelfde repository-URL is die hierboven is gebruikt en <git-repo-name>
de mapnaam in de huidige map is om de repository in te klonen. Er zijn enkele overwegingen voordat u deze opdracht gebruikt:
- De
--stdlayout
vlag van bovenaf verteld Git dat je met een standaard lay-out mettrunk
,branches
entags
mappen. Subversion repositories met niet-standaard layouts vereisen dat u de locaties van de specificerentrunk
map, welk / albranch
mappen en detags
map. Dit kan gedaan worden door dit voorbeeld te volgen:git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name>
. - Dit commando kan vele uren duren om te voltooien, afhankelijk van de grootte van je repo.
- Om de conversietijd voor grote repositories te verkorten, kan de conversie rechtstreeks worden uitgevoerd op de server die de subversion-repository host om netwerkoverhead te elimineren.
git svn clone
importeert de subversion branches (en trunk) als remote branches inclusief subversion tags (remote branches voorafgegaan door tags/
). Om deze te converteren naar werkelijke branches en tags, voert u de volgende opdrachten uit op een Linux-machine in de volgorde waarin ze worden verstrekt. Nadat ze zijn uitgevoerd, zou git branch -a
de juiste git branch -a
moeten tonen, en git tag -l
zouden de repository-tags moeten tonen.
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
De conversie van svn naar Git is nu voltooid! push
eenvoudig uw lokale repo naar een server en u kunt blijven bijdragen met Git en een volledig bewaarde versiegeschiedenis van svn hebben.
SubGit
SubGit kan worden gebruikt om een eenmalige import van een SVN-repository naar git uit te voeren.
$ subgit import --non-interactive --svn-url http://svn.my.co/repos/myproject myproject.git
Migreer van SVN naar Git met behulp van svn2git
svn2git is een Ruby-wrapper rond git's native SVN-ondersteuning via git-svn , die je helpt bij het migreren van projecten van Subversion naar Git, geschiedenis bijhouden (incl. trunk, tags en branches history).
Voorbeelden
Om een svn-repository met de standaardlay-out te migreren (bijv. Branches, tags en trunk op het rootniveau van de repository):
$ svn2git http://svn.example.com/path/to/repo
Om een SVN-repository te migreren die niet in de standaardindeling is:
$ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --tags tags-dir --branches branches-dir
Als u geen takken, tags of trunk wilt migreren (of niet hebt), kunt u opties --notrunk
, --nobranches
en --notags
.
Bijvoorbeeld, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches
zullen alleen de $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches
migreren.
Om de benodigde ruimte voor uw nieuwe repository te verminderen, wilt u misschien mappen of bestanden uitsluiten die u eenmaal hebt toegevoegd terwijl u dat niet had moeten doen (bijv. Directory of archieven samenstellen):
$ svn2git http://svn.example.com/path/to/repo --exclude build --exclude '.*\.zip$'
Optimalisatie na migratie
Als je al een paar duizend commits (of meer) in je nieuw gemaakte git-repository hebt, wil je misschien de gebruikte ruimte verminderen voordat je je repository op een remote pusht. Dit kan met de volgende opdracht:
$ git gc --aggressive
Opmerking: het vorige commando kan enkele uren duren op grote repositories (tienduizenden commits en / of honderden megabytes geschiedenis).
Migreren van Team Foundation Version Control (TFVC) naar Git
Je zou kunnen migreren van versiebeheer van teamstichting naar git met behulp van een open source tool genaamd Git-TF. Migratie zal ook je bestaande geschiedenis overzetten door tfs checkins om te zetten naar git commits.
Volg deze stappen om uw oplossing in Git te plaatsen met behulp van Git-TF:
Git-TF downloaden
U kunt Git-TF downloaden (en installeren) van Codeplex: Git-TF @ Codeplex
Kloon uw TFVC-oplossing
Start powershell (win) en typ het commando
git-tf clone http://my.tfs.server.address:port/tfs/mycollection '$/myproject/mybranch/mysolution' --deep
De --deep-schakelaar is het sleutelwoord om op te merken, omdat dit Git-Tf vertelt om je incheckgeschiedenis te kopiëren. Je hebt nu een lokale git repository in de map van waaruit je je cloe-commando hebt opgeroepen.
Schoonmaken
- Voeg een .gitignore-bestand toe. Als u Visual Studio gebruikt, kan de editor dit voor u doen, anders zou u dit handmatig kunnen doen door een volledig bestand te downloaden van github / gitignore .
- RemoveTFS bronbesturingsbindingen uit oplossing (verwijder alle * .vssscc-bestanden). U kunt ook uw oplossingsbestand wijzigen door de GlobalSection (TeamFoundationVersionControl) te verwijderen ...... EndClobalSection
Commit & Push
Voltooi uw conversie door uw lokale repository naar uw afstandsbediening te verbinden en te pushen.
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
Mercurial migreren naar Git
Je kunt de volgende methoden gebruiken om een Mercurial
Repo in Git
te importeren:
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
Hg-Git gebruiken : een zeer gedetailleerd antwoord hier: https://stackoverflow.com/a/31827990/5283213
GitHub's importeur gebruiken : volg de (gedetailleerde) instructies op GitHub .