[Subversion] Spostamento di una repository da un server SVN ad un altro

In un precedente articolo si è parlato della installazione e configurazione di un server SVN su ambiente Linux (distribuzione Debian). Una  volta configurato il server, però, mi si è posto il problema dell’importazione di una repository salvata su un server SVN installato su un’altra macchina (Windows), eseguendo una procedura alquanto semplice e che ha “travasato” tutta la history, senza perdere nessun dato.

Ecco i passi da eseguire:

1. Backup della vecchia repository: Occorre effettuare un dump della repository che si occorre importare eseguendo il comando da terminale (DOS su Windows; shell/bash su Unix)

svnadmin dump /path/to/repository > repo_name.svn_dump
									

Tale comando invoca il servizio svnadmin (occorre ovviamente essere amministratori della macchina) che esegue il comando dump, seguito dal path assoluto della repository (il path è quello del file system e non la URL della repository). Il dump copia tutta la repository in un file che ha estensione svn_dump che potete chiamare come preferite (potete specificare anche un path assoluto in cui salvare tale file).

2. Creazione della nuova repository: se non avete già creato una repository sul nuovo server SVN, occorre crearla con il comando svnadmin create

svnadmin create /path/to/repository
									

3. Importazione del dump sulla nuova repository: a questo punto, copiare il dump che avete esportato sulla nuova macchina, posizionatevi da terminale nella directory dove avete copiato il file di dump e lanciate il comando svnadmin load

svnadmin load /path/to/repository < repo_name.svn_dump
									

In alcuni casi, occorre forzare che l’UUID della nuova repository sia uguale a quella della vecchia. Per cui, se vi viene visualizzato un errore del genere dopo aver lanciato il comando load, potete rilanciare la precedente riga di codice specificando l’opzione –force-uuid (l’UUID della vecchia repository la potete vedere con un client SVN visionando le proprietà della working copy).

Ecco dei comandi utili per poter visualizzare e settare la UUID di una repository:

$ svnlook uuid /var/svn/repos cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec 
$ svnadmin setuuid /var/svn/repos  #NOTA. generate a new UUID 
$ svnlook uuid /var/svn/repos 3c3c38fe-acc0-11dc-acbc-1b37ff1c8e7c 
$ svnadmin setuuid /var/svn/repos  cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec #NOTA. restore the old UUID 
$ svnlook uuid /var/svn/repos cf2b9d22-acb5-11dc-bc8c-05e83ce5dbec
									

Importazione di una repository a partire da una specifica revisione

E’ possibile importare una vecchia repository anche a partire da una specifica revisione. Occorre effettuare il dump specificando quale revisione importare e importando poi in modo incrementale. Ecco i comandi:

svnadmin dump --incremental -r 1234 /path/to/repository > rev1234.svn_dump

L'importazione nella nuova repository si importa allo stesso modo:
svnadmin load /path/to/repository < rev1234.svn_dump
									

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *


6 − = cinque