ricreando repository svn


8

dopo un grave errore del server, il repository svn è stato distrutto e la mia versione di lavoro è la più recente,

qual è il modo per ricreare il repository svn dalla mia versione funzionante?

dopo aver installato svn su un nuovo server e aver provato la mia copia di lavoro

 svn switch NEW_SVN_PATH .

ricevo un errore

 Repository UUID '1c604742-6b16-462b-86e4-cc8bce959242' doesn't match expected UUID '6df69aeb-a72c-450d-8102-24036a3855f7'

Risposte:


2

Dopo aver inizializzato il nuovo reporsitry svn

  1. sul client eseguire un'esportazione svn della directory di lavoro corrente in una posizione diversa
  2. dalla posizione esportata eseguire un'importazione svn nel nuovo URL svn
  3. ora esegui un trasferimento svn nel nuovo repository creato.

mentre questo potrebbe funzionare, penso che invece di un trasferimento, un nuovo checkout potrebbe essere buono


2

Ho dovuto affrontare questo. Uso sovversione ospitata, ho fatto un dump e poi ho importato. Il loro processo di importazione non ha trasferito l'UUID dal vecchio repository a quello nuovo, quindi ho ricevuto lo stesso errore dell'OP. Tutte le risposte sui siti di Stack Exchange indicano solo come gestirlo utilizzando "svnadmin setuuid", ma non è stata un'opzione per me poiché utilizzo un servizio ospitato (e quindi svnadmin non avrà accesso al repository ). Avrei potuto inserire un ticket ma non volevo gestire l'attesa, quindi ecco come l' ho corretto aggiornando manualmente l'UUID della mia copia di lavoro :

Avvertenza: provalo solo se sei certo che la copia di lavoro e il repository a cui stai puntando di nuovo sono assolutamente sincronizzati. Non sono sicuro di cosa accadrà se non lo sono.

Il processo consiste sostanzialmente nel sostituire il vecchio UUID con il nuovo UUID nei file denominati "voci" nelle cartelle svn nascoste (cartelle denominate .svn o _svn) della copia di lavoro. Una volta fatto, puoi usare il "trasferimento" di TortoiseSVN per indirizzare la directory di lavoro al nuovo URL del repository.

  1. Nella finestra della console, cd nella cartella principale di lavoro.
  2. Eseguire il comando per rimuovere ricorsivamente l'attributo "sola lettura" dai file "voci": attrib -R entries /S
  3. Utilizzare la funzione "Sostituisci nei file" di un editor di testo per sostituire il vecchio UUID con il nuovo UUID. Ho usato Visual Studio con le seguenti impostazioni: Cerca in: PATH_TO_WORKING_FOLDER_ROOT / Includi sottocartelle: selezionato / Guarda questi tipi di file: voci
  4. Annulla il passaggio 2: attrib +R entries /S
  5. Copia di lavoro "Riposiziona" nel nuovo URL. Ho usato TortoiseSVN: cartella di lavoro con il tasto destro del mouse, TortoiseSVN-> Riposiziona.

Tutto il passo 5 fa è sostituire gli URL nei file "voci" penso, quindi potresti essere in grado di farlo manualmente se lo desideri. Possibile anche con lo strumento da riga di comando "svn", ma non conosco il comando dalla parte superiore della mia testa.


Questo è intenso. È davvero necessario? Sto solo cercando di capirlo dal momento che il mio fornitore apparentemente ha spostato i nostri repository e ottengo lo stesso errore.
Fino al

0

È possibile impostare l'UUID su un repository vuoto. Quindi importa i file che hai. Perderai la tua storia (non è conservata nella copia di lavoro). Ma, impostando l'UUID in modo che corrisponda al vecchio repository, si evita il messaggio di errore sull'opzione svn.

$ svnlook uuid /var/svn/repos
cf1b8d31-acb6-02dc-bc7c-16e92ce6dbec
$ svnadmin setuuid /var/svn/repos   # generate a new UUID
$ svnlook uuid /var/svn/repos
4c2c49fe-acc1-23dc-acbc-2b28ff0c9e6c
$ svnadmin setuuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242  # restore the old UUID
$ svnlook uuid /var/svn/repos 1c604742-6b16-462b-86e4-cc8bce959242

la mia versione server di svnadmin non aveva un sottocomando setuuid, suppongo sia uno dei comandi più recenti. poi ho trovato un file db / uuid nel repository, ma dopo aver modificato il numero in esso, svn si è ancora lamentato del fatto che non è lo stesso repository
Pavel K.

0

Ho avuto lo stesso problema, ma dal momento che utilizziamo un'opzione ospitata, non ho potuto svnadminneanche.

Questo era un esterno che ho usato in un altro progetto e l'ho fatto per risolverlo:

  1. Esegui il backup di tutte le mie modifiche locali.
  2. rm -rf la directory (l'esterno è archiviato in)
  3. rimuovi svn:external(e commettilo)
  4. svn up
  5. aggiungi di svn:externalnuovo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.