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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top