Git
Migrazione a Git
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 cartelletrunk
,branches
etags
. Gli archivi di Subversion con layout non standard richiedono di specificare le posizioni della cartellatrunk
, di eventuali / tutte le cartelle dellebranch
e della cartella deitags
. 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
:
- 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
Usando Hg-Git : una risposta molto dettagliata qui: https://stackoverflow.com/a/31827990/5283213
Utilizzo dell'importatore di GitHub : seguire le istruzioni (dettagliate) su GitHub .