Voorbereiden
De eerste stap om een project van SVN naar versiebeheer op basis van Git te migreren, is het voorbereiden van het lokale systeem van de migratieleider. In deze fase download je een handig hulpprogramma-script, koppel je een hoofdlettergevoelig bestandssysteem (indien nodig) en wijs je auteursinformatie vanuit SVN toe aan Git.
Alle volgende stappen moeten worden uitgevoerd op de lokale computer van de migratieleider.
Het migratiescript downloaden
Git wordt geleverd met de meeste hulpmiddelen die nodig zijn voor het importeren van een SVN-repository. Er ontbreken echter enkele stukjes functionaliteit die Atlassian in een handig JAR-bestand heeft verwerkt. Dit bestand vormt een integraal onderdeel van de migratie. Zorg er dus voor dat je svn-migration-scripts.jar
downloadt van het Bitbucket-account van Atlassian. In deze handleiding wordt ervan uitgegaan dat je het hebt opgeslagen in je hoofdmap. Disclaimer: voor de migratie naar svn heb je een hoofdlettergevoelig bestandssysteem nodig. Dit werkt niet op NTFS. We raden aan om een Linux-machine te gebruiken.
Na het downloaden is het een goed idee om de scripts te verifiëren om er zeker van te zijn dat Java Runtime Environment, Git, Subversion en het git-svn-hulpprogramma zijn geïnstalleerd. Open een opdrachtprompt en voer de volgende opdracht uit:
java -jar ~/svn-migration-scripts.jar verify
Er wordt een foutmelding in de console weergegeven als je niet over de benodigde programma's voor het migratieproces beschikt. Zorg ervoor dat alle ontbrekende software is geïnstalleerd voordat je verder gaat.
gerelateerd materiaal
Een volledige Git-repository verplaatsen
Oplossing bekijken
Git leren met Bitbucket Cloud
Als je een waarschuwing krijgt dat je geen versie kunt bepalen, moet je export LANG=C
(*nix) of SET LANG=C
(Windows) uitvoeren en het opnieuw proberen.
Als je de migratie op een computer met OS X uitvoert, krijg je ook de volgende waarschuwing te zien:
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.
We zullen deze in de volgende sectie behandelen.
Een hoofdlettergevoelige installatiekopie koppelen
De migratie naar Git moet worden uitgevoerd op een hoofdlettergevoelig bestandssysteem om beschadiging van de repository te voorkomen. Dit is een probleem als je de migratie uitvoert op een OS X-computer, omdat het OS X-bestandssysteem niet hoofdlettergevoelig is.
Als je geen OS X gebruikt, hoef je alleen maar een directory op je lokale computer aan te maken met de naam ~/GitMigration
. Hier voer je de conversie uit. Daarna kun je doorgaan naar de volgende sectie.
Als je OS X gebruikt, moet je een hoofdlettergevoelige installatiekopie koppelen met het create-disk-image
script dat is opgenomen in svn-migration-scripts.jar
. Er zijn twee parameters nodig:
1. De grootte van de schijfkopie die aangemaakt moet worden in gigabytes. Je kunt elke gewenste grootte gebruiken, zolang die maar groter is dan de SVN-repository die je probeert te migreren.
2. The name of the disk image. This guide uses GitMigration
for this value.
Met de volgende opdracht wordt bijvoorbeeld een schijfkopie van 5 GB aangemaakt met de naam GitMigration
:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
De schijfkopie is gekoppeld aan je hoofdmap. Je zou nu dus een map met de naam ~/GitMigration
op je lokale computer moeten zien. Deze dient als een virtueel hoofdlettergevoelig bestandssysteem, en daar sla je de geconverteerde Git-repository in op.
Informatie over de auteur extraheren
SVN registreert voor elke revisie alleen de gebruikersnaam van de auteur. Git slaat echter de volledige naam en het e-mailadres van de auteur op. Dit betekent dat je een tekstbestand moet maken dat SVN-gebruikersnamen koppelt aan hun Git-tegenhangers.
Voer de volgende opdrachten uit om dit tekstbestand automatisch te genereren:
cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt
Zorg ervoor dat je
vervangt door de URI van de SVN-repository die je wilt migreren. Als je repository bijvoorbeeld op https://svn.example.com
zou staan, moet je het volgende uitvoeren:
java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt
Er wordt een tekstbestand aangemaakt met de naam authors.txt
dat de gebruikersnaam van elke auteur in de SVN-repository bevat, samen met een gegenereerde naam en e-mailadres. Dit ziet er ongeveer als volgt uit:
j.doe = j.doe <j.doe@mycompany.com>
m.smith = m.smith <m.smith@mycompany.com>
Wijzig het gedeelte rechts van het isgelijkteken naar de volledige naam en het e-mailadres van de bijbehorende gebruiker. Je zou de bovenstaande auteurs bijvoorbeeld kunnen wijzigen in:
j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>
Samenvatting
Nu je over je migratiescripts, schijfkopie (alleen OS X) en informatie over de auteur beschikt, ben je klaar om je SVN-geschiedenis te importeren in een nieuwe Git-repository. In de volgende fase wordt uitgelegd hoe deze conversie werkt.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.