Ricerca…


Migrazione da SVN a Git utilizzando l'utilità di conversione Atlassian

Scarica qui l' utility di conversione Atlassian. Questa utility richiede Java, quindi assicurati di aver installato Java Runtime Environment JRE sul computer che intendi effettuare.

Utilizzare il comando java -jar svn-migration-scripts.jar verify per verificare se sulla propria macchina mancano i programmi necessari per completare la conversione. In particolare, questo comando controlla le utilità Git, subversion e git-svn . Verifica inoltre che si sta eseguendo la migrazione su un file system con distinzione tra maiuscole e minuscole. La migrazione a Git dovrebbe essere eseguita su un file system con distinzione tra maiuscole e minuscole per evitare di corrompere il repository.

Successivamente, è necessario generare un file di autori. Le tracce di Subversion cambiano solo dal nome utente del committer. Git, tuttavia, utilizza due informazioni per distinguere un utente: un vero nome e un indirizzo email. Il seguente comando genererà un file di testo che associa i nomi utente di subversion ai loro equivalenti Git:

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

dove <svn-repo> è l'URL del repository di subversion che si desidera convertire. Dopo aver eseguito questo comando, le informazioni di identificazione dei contributori verranno mappate in authors.txt . Gli indirizzi email saranno nella forma <username>@mycompany.com . Nel file degli autori, dovrai modificare manualmente il nome predefinito di ciascuna persona (che per impostazione predefinita è diventato il loro nome utente) nei loro nomi effettivi. Assicurati di controllare anche tutti gli indirizzi email per correttezza prima di procedere.

Il seguente comando clonerà un repository svn come Git:

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

dove <svn-repo> è lo stesso URL del repository usato sopra e <git-repo-name> è il nome della cartella nella directory corrente per clonare il repository in. Ci sono alcune considerazioni prima di usare questo comando:

  • Il flag --stdlayout di Git indica che stai utilizzando un layout standard con le cartelle trunk , branches e tags . Gli archivi di Subversion con layout non standard richiedono di specificare le posizioni della cartella trunk , di eventuali / tutte le cartelle delle branch e della cartella dei tags . Questo può essere fatto seguendo questo esempio: git svn clone --trunk=/trunk --branches=/branches --branches=/bugfixes --tags=/tags --authors-file=authors.txt <svn-repo> <git-repo-name> .
  • Questo comando potrebbe richiedere molte ore per completare a seconda delle dimensioni del repository.
  • Per ridurre il tempo di conversione per repository di grandi dimensioni, la conversione può essere eseguita direttamente sul server che ospita il repository subversion per eliminare il sovraccarico della rete.

git svn clone importa i rami di subversion (e trunk) come rami remoti incluse le tag di sovversione (branch remoti con prefisso tags/ ). Per convertirli in rami e tag effettivi, eseguire i seguenti comandi su una macchina Linux nell'ordine in cui sono forniti. Dopo averli eseguiti, git branch -a dovrebbe mostrare i nomi dei rami corretti, e git tag -l dovrebbe mostrare i tag del repository.

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

La conversione da svn a Git è ora completa! Basta push il vostro repo locale a un server e si può continuare a contribuire utilizzando Git, oltre ad avere una cronologia delle versioni completamente conservato da SVN.

SubGit

SubGit può essere utilizzato per eseguire un'importazione una tantum di un repository SVN su git.

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

Passa da SVN a Git usando svn2git

svn2git è un wrapper di Ruby attorno al supporto SVN nativo di git attraverso git-svn , che ti aiuta nella migrazione dei progetti da Subversion a Git, mantenendo la cronologia (inclusa la cronologia di trunk, tag e rami).

Esempi

Per migrare un repository svn con il layout standard (cioè rami, tag e trunk al livello root del repository):

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

Per migrare un repository svn che non è nel layout standard:

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

Nel caso in cui non si desideri migrare (o non avere) rami, tag o trunk, è possibile utilizzare le opzioni --notrunk , --nobranches e --notags .

Ad esempio, $ svn2git http://svn.example.com/path/to/repo --trunk trunk-dir --notags --nobranches migrerà solo la cronologia del tronco.

Per ridurre lo spazio richiesto dal tuo nuovo repository potresti voler escludere qualsiasi directory o file che hai aggiunto una volta mentre non dovresti avere (ad es. Compilare directory o archivi):

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

Ottimizzazione post-migrazione

Se hai già qualche migliaio di commit (o più) nel tuo repository git appena creato, potresti voler ridurre lo spazio utilizzato prima di spingere il tuo repository su un telecomando. Questo può essere fatto usando il seguente comando:

$ git gc --aggressive

Nota: il comando precedente può richiedere diverse ore su repository di grandi dimensioni (decine di migliaia di commit e / o centinaia di megabyte di cronologia).

Migrazione da Team Foundation Version Control (TFVC) a Git

È possibile eseguire la migrazione dal controllo della versione della base del team a git utilizzando uno strumento open source chiamato Git-TF. La migrazione trasferirà anche la cronologia esistente convertendo i check-in tfs in commit git.

Per inserire la tua soluzione in Git usando Git-TF, segui questi passaggi:

Scarica Git-TF

Puoi scaricare (e installare) Git-TF da Codeplex: Git-TF @ Codeplex

Clona la tua soluzione TFVC

Avvia powershell (win) e digita il comando

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

L'opzione --deep è la keeyword da notare mentre questo dice a Git-Tf di copiare la cronologia di check-in. Ora hai un repository git locale nella cartella da cui hai chiamato il tuo comando cloe.

Pulire

  • Aggiungi un file .gitignore. Se stai usando Visual Studio, l'editor può farlo per te, altrimenti potresti farlo manualmente scaricando un file completo da github / gitignore .
  • Rimuovi i collegamenti del controllo del codice sorgente da una soluzione (rimuovi tutti i file * .vssscc). È anche possibile modificare il file della soluzione rimuovendo GlobalSection (TeamFoundationVersionControl) ...... EndClobalSection

Commit & Push

Completa la conversione impegnando e spingendo il repository locale sul telecomando.

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

Migrazione di Mercurial a Git

È possibile utilizzare i seguenti metodi per importare un Mercurial Repo in Git :

  1. Usando l' esportazione veloce :
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. Usando Hg-Git : una risposta molto dettagliata qui: https://stackoverflow.com/a/31827990/5283213

  2. Utilizzo dell'importatore di GitHub : seguire le istruzioni (dettagliate) su GitHub .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow