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 met trunk , branches en tags mappen. Subversion repositories met niet-standaard layouts vereisen dat u de locaties van de specificeren trunk map, welk / al branch mappen en de tags 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:

  1. Snelle export gebruiken :
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. Hg-Git gebruiken : een zeer gedetailleerd antwoord hier: https://stackoverflow.com/a/31827990/5283213

  2. GitHub's importeur gebruiken : volg de (gedetailleerde) instructies op GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow