Preparazione
Il primo passo per migrare un progetto da SVN al controllo della versione basato su Git è preparare il computer locale del responsabile della migrazione. In questa fase, scaricherai un comodo script di utilità, monterai un file system con distinzione tra maiuscole e minuscole (se necessario) e mapperai le informazioni sull'autore da SVN a Git.
Tutti i passaggi seguenti devono essere eseguiti sul computer locale del responsabile della migrazione.
Scaricare lo script di migrazione
Git include la maggior parte degli strumenti necessari per importare un repository SVN; tuttavia, mancano alcuni bit di funzionalità che Atlassian ha inserito in un pratico file JAR. Questo file sarà parte integrante della migrazione, quindi assicurati di scaricare svn-migration-scripts.jar
dall'account Bitbucket di Atlassian. Questa guida presuppone che tu l'abbia salvato nella tua home directory. Avvertenza: per la migrazione svn è necessario un file system con distinzione tra maiuscole e minuscole e questo non funziona su NTFS. Suggeriamo di usarlo su una macchina Linux.
Una volta scaricato, è una buona idea verificare gli script per assicurarti di avere installato Java Runtime Environment, Git, Subversion e l'utilità git-svn. Apri un prompt dei comandi ed esegui quanto segue:
java -jar ~/svn-migration-scripts.jar verify
Verrà visualizzato un messaggio di errore nella console se non disponi dei programmi necessari per il processo di migrazione. Assicurati che il software mancante sia installato prima di procedere.
materiale correlato
Come spostare un repository Git completo
Scopri la soluzione
Impara a utilizzare Git con Bitbucket Cloud
Se ricevi un avviso sull'impossibilità di determinare una versione, esegui export LANG=C
(*nix) o SET LANG=C
(Windows) e riprova.
Se stai eseguendo la migrazione su un computer con OS X, vedrai anche il seguente avviso:
You appear to be running on a case-insensitive file-system. This is unsupported, and can result in data loss.
Ne parleremo nella prossima sezione.
Montare un'immagine del disco 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 danneggiare il repository. Questo è un problema se stai eseguendo la migrazione su un computer con OS X, poiché il file system OS X non fa distinzione tra maiuscole e minuscole.
Se non usi OS X, tutto ciò che devi fare è creare una directory sul tuo computer locale chiamata ~/GitMigration
. Qui è dove eseguirai la conversione. Dopodiché, puoi passare alla sezione successiva.
Se usi OS X, devi montare un'immagine del disco con distinzione tra maiuscole e minuscole con lo script create-disk-image
incluso in svn-migration-scripts.jar
. Richiede due parametri:
1. La dimensione dell'immagine del disco da creare in gigabyte. Puoi usare qualsiasi dimensione tu voglia, purché sia più grande del repository SVN che stai cercando di migrare.
2. The name of the disk image. This guide uses GitMigration
for this value.
Ad esempio, il comando seguente crea un'immagine del disco da 5 GB chiamata GitMigration
:
java -jar ~/svn-migration-scripts.jar create-disk-image 5 GitMigration
L'immagine del disco è montata nella tua home directory, quindi ora dovresti vedere una directory chiamata ~/GitMigration
sul tuo computer locale. Questa fungerà da file system virtuale con distinzione tra maiuscole e minuscole ed è dove archivierai il repository Git convertito.
Estrarre le informazioni sull'autore
SVN registra solo il nome utente dell'autore per ogni revisione. Git, tuttavia, memorizza il nome completo e l'indirizzo e-mail dell'autore. Ciò significa che devi creare un file di testo che mappi i nomi utente SVN alle loro controparti Git.
Esegui i seguenti comandi per generare automaticamente questo file di testo:
cd ~/GitMigration
java -jar ~/svn-migration-scripts.jar authors <svn_repo_uri> > authors.txt
Assicurati di sostituire
con l'URI del repository SVN che vuoi migrare. Ad esempio, se il repository risiedeva all'indirizzo https://svn.esempio.com
, esegui quanto segue:
java -jar ~/svn-migration-scripts.jar authors https://svn.example.com > authors.txt
Viene creato un file di testo chiamato authors.txt
che contiene il nome utente di ogni autore nel repository SVN insieme al nome e all'indirizzo e-mail generati. Dovrebbe avere il seguente aspetto:
j.doe = j.doe <j.doe@mycompany.com>
m.smith = m.smith <m.smith@mycompany.com>
Cambia la parte a destra del segno uguale con il nome completo e l'indirizzo e-mail dell'utente corrispondente. Ad esempio, potresti cambiare gli autori di cui sopra in:
j.doe = John Doe <john.doe@atlassian.com>
m.smith = Mary Smith <mary.smith@atlassian.com>
Riepilogo
Ora che hai gli script di migrazione, l'immagine del disco (solo OS X) e le informazioni sull'autore, hai tutto il necessario per importare la cronologia SVN in un nuovo repository Git. La fase successiva spiega come funziona questa conversione.
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.