Sök…


Migrera från SVN till Git med hjälp av Atlassian-konverteringsverktyget

Ladda ner Atlassian-konverteringsverktyget här . Det här verktyget kräver Java, så se till att Java Runtime Environment JRE är installerad på den maskin du planerar att konvertera.

Använd kommandot java -jar svn-migration-scripts.jar verify att kontrollera om din maskin saknar något av programmen som är nödvändiga för att slutföra konverteringen. Specifikt kontrollerar detta kommando efter verktygen Git, subversion och git-svn . Det verifierar också att du utför migreringen i ett skiftlägeskänsligt filsystem. Migrering till Git bör göras på ett skiftlägeskänsligt filsystem för att undvika att skada förvaret.

Därefter måste du generera en författarfil. Subversionsspår ändras endast med kommandorns användarnamn. Git använder emellertid två informationer för att skilja användaren: ett riktigt namn och en e-postadress. Följande kommando genererar en textfil som mappar subversionsnamnen till deras Git-ekvivalenter:

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

där <svn-repo> är webbadressen till det subversionsförvaret som du vill konvertera. Efter att detta kommando har körts, kommer bidragsgivarnas identifieringsinformation att kartläggas i authors.txt . E-postadresserna kommer att ha formen <username>@mycompany.com . I författarfilen måste du manuellt ändra varje persons standardnamn (som som standard har blivit sitt användarnamn) till sina faktiska namn. Se till att alla e-postadresser är korrekta innan du fortsätter.

Följande kommando klonar en svn-repo som en Git-en:

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

där <svn-repo> är samma URL-adress som används ovan och <git-repo-name> är mappnamnet i den aktuella katalogen för att klona förvaret till. Det finns några överväganden innan du använder detta kommando:

  • Flaggan --stdlayout ovanifrån berättar för Git att du använder en standardlayout med mappar till trunk , branches och tags . Subversionarkiv med icke-standardiserade layouter kräver att du ange platser i trunk mappen någon / alla branch mappar och tags mapp. Detta kan göras genom att följa detta exempel: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Detta kommando kan ta många timmar att slutföra beroende på storleken på din repo.
  • För att minska konverteringstiden för stora arkiv kan konverteringen köras direkt på servern som är värd för subversionsförvaret för att eliminera nätverkskostnader.

git svn clone importerar subversionens grenar (och trunk) som fjärrgrenar inklusive subversionstaggar (fjärrgrenar förinställda med tags/ ). För att konvertera dessa till faktiska grenar och taggar, kör följande kommandon på en Linux-maskin i den ordning de tillhandahålls. Efter att ha kört dem ska git branch -a visa rätt grennamn, och git tag -l ska visa arkivtaggarna.

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

Konverteringen från svn till Git är nu klar! Enkelt push din lokala repo till en server och du kan fortsätta att bidra med hjälp av Git samt ha en helt bevarade versionshistorik från SVN.

SubGit

SubGit kan användas för att utföra en engångsimport av ett SVN-arkiv till git.

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

Migrera från SVN till Git med svn2git

svn2git är ett Ruby wrapper runt gits ursprungliga SVN-stöd genom git-svn , som hjälper dig med att migrera projekt från Subversion till Git, behålla historik (inkl. trunk, taggar och grenhistorik).

exempel

Så här migrerar du ett svn-arkiv med standardlayouten (dvs grenar, taggar och bagageutrymme på förvarets rotnivå):

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

Så här migrerar du ett svn-arkiv som inte finns i standardlayout:

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

Om du inte vill migrera (eller inte har) grenar, taggar eller trunk kan du använda alternativ - --notrunk , --nobranches och --notags .

Till exempel $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches kommer endast att migrera trunkhistorik.

För att minska det utrymme som krävs av ditt nya arkiv kanske du vill utesluta kataloger eller filer som du en gång har lagt till medan du inte borde ha (t.ex. bygga katalog eller arkiv):

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

Optimering efter migration

Om du redan har några tusentals åtaganden (eller mer) i ditt nyligen skapade gitförvar kanske du vill minska utrymmet som används innan du skjuter ditt förvar på en fjärrkontroll. Detta kan göras med följande kommando:

$ git gc --aggressive

Obs: Det föregående kommandot kan ta upp till flera timmar på stora förvar (tiotusentals kommit och / eller hundratals megabyte historia).

Migrera från Team Foundation Version Control (TFVC) till Git

Du kan migrera från version av lagerstiftning till git med hjälp av ett öppet källverktyg som heter Git-TF. Migrering överför också din befintliga historik genom att konvertera tfs checkins till git commits.

Så här sätter du din lösning i Git med Git-TF:

Ladda ner Git-TF

Du kan ladda ner (och installera) Git-TF från Codeplex: Git-TF @ Codeplex

Klona din TFVC-lösning

Starta powershell (win) och skriv kommandot

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

Knappen --deep är inte det nyckelordet att notera eftersom detta säger till Git-Tf att kopiera din checkhistorik. Du har nu ett lokalt gitförvar i mappen som du ringde från ditt cloe-kommando från.

Städa

  • Lägg till en .gitignore-fil. Om du använder Visual Studio kan redaktören göra detta åt dig, annars kan du göra det manuellt genom att ladda ner en komplett fil från github / gitignore .
  • Ta bort bindningskoder för källkontroll från lösningen (ta bort alla * .vssscc-filer). Du kan också ändra din lösningsfil genom att ta bort GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection

Commit & Push

Slutför din konvertering genom att begå och skjuta ditt lokala arkiv till din fjärrkontroll.

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

Migrerar Mercurial till Git

Man kan använda följande metoder för att importera en Mercurial Repo till Git :

  1. Med snabb export :
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. Använda Hg-Git : Ett mycket detaljerat svar här: https://stackoverflow.com/a/31827990/5283213

  2. Använda GitHubs importör : Följ (detaljerade) instruktioner på GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow