Domanda

Sto tentando di migrare parte di un repository Subversion su un nuovo server Subversion.

http://server1/svn/repo1/path1/path2/path3 -> http://server2/svn/repo2/path3

Ho creato un dump completo tramite:

svnadmin dump repo1 > repo1.dump

Filtrato il dump tramite:

svndumpfilter include /path1/path2 --drop-empty-revs < repo1.dump > repo1_filtered.dump

Tramite Cygwin sed, sto sostituendo / path1 / path2:

sed -e 's,^Node-path: WM/BI,Node-path: ,' < repo1_filtered.dump > repo1_fixed.dump

Durante il tentativo di importare il dump in un repository nuovo / vuoto, ottengo il seguente errore:

<<< Started new transaction, based on original revision 32
 * adding path :  ...svnadmin: File already exists: filesystem 'bi\db', transaction '0-2', path ''

Credo che il problema sia che svndumpfilter includa il percorso / percorso1 / percorso2.In realtà, voglio solo i figli di / path1 / path2.Dopo aver eseguito sed, vicino all'inizio di repo1_fixed.dump, trovo:

2010-03-10T15:56*:59.595747Z
PROPS-END

Node-path:
Node-action: add
Node-kind: dir
Prop-content-length: 10
Content-length: 10

PROPS-END

La mia ipotesi è che il percorso del nodo vuoto sia la vera causa del problema.

Qualche suggerimento su come procedere?

È stato utile?

Soluzione

Ho riprodotto il tuo problema abbastanza facilmente e sei sincero sulla tua analsi.Il problema è la revisione che crea la cartella di base.

Se rimuovi questa transazione dal tuo dump, viene importata correttamente

 sed -e "s,^Node-path: rep1/rep3,Node-path: ," < temp_filtered.dump > temp_hacke.txt

L'ho fatto manualmente, è abbastanza facile: cerca solo le righe con Node-path vuoto: e rimuovi dal precedente "Revision-number:" al successivo "PROPS-END".Alcuni python / awk / perl potrebbero farlo (non ho provato).

Se non hai cose speciali in questa cartella (come le proprietà che si evolvono nel tempo), dovresti avere una sola occorrenza.

Un'altra soluzione è importare il tuo repository in una singola cartella invece che in una sottostruttura (in tal caso, cambia semplicemente la tua riga sed in, Node-path: newPath)

Nota che non conosco uno strumento che lo farebbe per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top