svnsync - non poteva ottenere il blocco su pronti contro termine di destinazione

StackOverflow https://stackoverflow.com/questions/4077601

  •  28-09-2019
  •  | 
  •  

Domanda

Utilizzando svnsync

$ svnsync --non-interactive sync ${REPO}

dopo un'interruzione del processo c'era questo messaggio di errore con tentativi

Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'  
...  
Failed to get lock on destination repos, currently held by 'svn.test.com:0e4e0d98-631d-0410-9a00-9330a90920b3'   
svnsync: Couldn't get lock on destination repos after 10 attempts  

C'è un modo per risolvere questo problema?

È stato utile?

Soluzione

In realtà, v'è una certa funzionalità incorporata in svnsync in grado di "rubare" il blocco.

svnsync help sync

Spettacoli:

--steal-lock             : Steal locks as necessary.  Use, with caution,
                           if your mirror repository contains stale locks
                           and is not being concurrently accessed by another
                           svnsync instance.

e quando l'eseguo, ottengo un bel:

Stole lock previously held by '[hostname]'

Quindi, non è necessario la cosa propdel dopo tutto

Altri suggerimenti

È necessario rimuovere la proprietà di blocco sul repository remoto tramite linea di comando svn sul sito remoto che è stato lasciato da un guasto durante la sincronizzazione.

svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository

Tecnicamente, è il repository di destinazione che è necessario eliminare la proprietà da, non necessariamente il repository remoto, come la destinazione potrebbe essere locale. Quindi, per questa specifica domanda:

svn propdel --revprop -r0 svn:sync-lock ${REPO}

La rimozione del blocco ha funzionato per me. Tuttavia, ho dovuto utilizzare un comando leggermente diverso, come ho bisogno di inviare il nome utente e la password dell'account da utilizzare per sbloccare l'account.

svn pdel --revprop -r 0 --username ??? --password ??? svn:sync-lock file:///path/to/the/repository

I ha avuto anche per eseguire questo comando dall'unità che il repository era su. (Modifica d: nel prompt dei comandi prima di eseguire il comando, se la mia Repository era in d:)

Prima di entrare il nome utente e la password, quando ho eseguito il comando che ho ottenuto il seguente errore:

revprop change blocked by pre-revprop-change hook (exit code 255)

ho trovato e aperto il file gancio pre-revprop-change, e aveva il codice in là messa in vendita solo un certo nome utente che potrebbe apportare le modifiche necessarie. Utilizzando tale nome utente e password nel comando sopra rimosso il gancio.

Per confermare la presenza di blocco (anche se l'err ovviamente lo dice), a conduzione proplist con -verbose

svn pl --revprop -v -r 0 file:///svn/slave

quindi eliminare l'elica, se necessario!

Si deve fare due cose per risolvere il problema. Uno è soppressa la serratura come indicato in precedenza. Poi è necessario modificare il file di pre-revprop-change.tmpl ad essere vuoto, e renderlo eseguibile. Utilizzare chmod + x su Linux / Unix / Mac, ma cambiare il nome del file di pre-revprop-change.bat su Windows. Dopo questo è possibile caricare file di dump nel repository e quindi specchio è dove mai è necessario.

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