Git
Migrerar till Git
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 tilltrunk
,branches
ochtags
. Subversionarkiv med icke-standardiserade layouter kräver att du ange platser itrunk
mappen någon / allabranch
mappar ochtags
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
:
- 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
Använda Hg-Git : Ett mycket detaljerat svar här: https://stackoverflow.com/a/31827990/5283213
Använda GitHubs importör : Följ (detaljerade) instruktioner på GitHub .