svnsync - ne pouvait pas obtenir verrou sur repo de destination
Question
Utilisation svnsync
$ svnsync --non-interactive sync ${REPO}
après une interruption du processus il y avait ce message d'erreur avec nouvel essai
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
Y at-il un moyen de résoudre ce problème?
La solution
En fait, il y a une fonctionnalité intégrée dans svnsync qui peut « voler » le verrou.
svnsync help sync
indique:
--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.
et quand je le lance, je reçois une belle:
Stole lock previously held by '[hostname]'
Alors, vous n'avez pas besoin de la chose propdel après tout
Autres conseils
Vous devez supprimer la propriété de verrouillage sur le dépôt distant via la ligne de commande svn sur le site distant qui a été laissé par un échec lors de la synchronisation.
svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository
Techniquement, il est le référentiel de destination que vous devez supprimer la propriété de, pas nécessairement le dépôt distant, comme destination pourrait être locale. Donc, pour cette question spécifique:
svn propdel --revprop -r0 svn:sync-lock ${REPO}
Retrait du verrou a fonctionné pour moi. Cependant, je devais utiliser une commande légèrement différente, comme je l'avais besoin d'envoyer le nom d'utilisateur et mot de passe du compte à utiliser pour déverrouiller le compte.
svn pdel --revprop -r 0 --username ??? --password ??? svn:sync-lock file:///path/to/the/repository
Je devais aussi exécuter cette commande à partir du lecteur que le dépôt était. (Changement d: dans l'invite de commande avant d'exécuter la commande, si mon dépôt était d:)
Avant d'entrer le nom d'utilisateur et mot de passe, quand je courais la commande, je suis l'erreur suivante:
revprop change blocked by pre-revprop-change hook (exit code 255)
J'ai trouvé et ouvert le fichier crochet pre-revprop-change
, et il y avait un code dans la liste il y a seulement un certain nom d'utilisateur qui pourrait apporter les modifications nécessaires. En utilisant ce nom d'utilisateur et mot de passe dans la commande ci-dessus a retiré le crochet.
Pour confirmer la présence de verrouillage (bien que la err dit évidemment il), course proplist avec -verbose
svn pl --revprop -v -r 0 file:///svn/slave
puis supprimez l'accessoire nécessaire!
Vous devez faire deux choses pour résoudre le problème. On est supprimé le verrouillage comme indiqué ci-dessus. Ensuite, vous devez modifier le fichier pré-revprop-change.tmpl être vide, et le rendre exécutable. Utilisez chmod + x sur Linux / Unix / Mac, mais changer le nom du fichier de pré-revprop-change.bat sur Windows. Après cela, vous pouvez charger des fichiers de vidage dans votre dépôt et miroir puis partout où vous avez besoin.