tag - svnsync: no se pudo bloquear en los repos de destino
tag svn (6)
Debe eliminar la propiedad de bloqueo en el repositorio remoto a través de la línea de comando svn en el sitio remoto que ha quedado de una falla durante la sincronización.
svn propdel --revprop -r0 svn:sync-lock file:///path/to/the/repository
Usando svnsync
$ svnsync --non-interactive sync ${REPO}
después de un aborto del proceso hubo este mensaje de error con el reintento
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
¿Hay alguna manera de solucionar este problema?
En realidad, hay algunas funciones integradas en svnsync que pueden "robar" el bloqueo.
svnsync help sync
muestra:
--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.
y cuando lo ejecuto, obtengo un buen:
Stole lock previously held by ''[hostname]''
Entonces, no necesitas la cosa de propdel después de todo
Para confirmar la presencia de bloqueo (aunque obviamente el error lo dice), ejecute proplist con -verbose
svn pl --revprop -v -r 0 file:///svn/slave
¡luego elimine el accesorio según sea necesario!
Quitar el bloqueo funcionó para mí. Sin embargo, tuve que usar un comando ligeramente diferente, ya que necesitaba enviar el nombre de usuario y la contraseña de la cuenta para usarla para desbloquear la cuenta.
svn pdel --revprop -r 0 --username ??? --password ??? svn:sync-lock file:///path/to/the/repository
También tuve que ejecutar este comando desde la unidad en la que estaba el repositorio. (cambie a d: en el símbolo del sistema antes de ejecutar el comando, si mi Repositorio estaba en d :)
Antes de ingresar el nombre de usuario y la contraseña, cuando ejecuté el comando, recibí el siguiente error:
revprop change blocked by pre-revprop-change hook (exit code 255)
Encontré y abrí el archivo gancho pre-revprop-change
, y tenía un código allí enumerando solo un cierto nombre de usuario que podría hacer los cambios necesarios. El uso de ese nombre de usuario y contraseña en el comando anterior eliminó el gancho.
Técnicamente, es el repositorio de destino del que debe eliminar la propiedad, no necesariamente el repositorio remoto, ya que el destino podría ser local. Entonces para esta pregunta específica:
svn propdel --revprop -r0 svn:sync-lock ${REPO}
Tienes que hacer dos cosas para resolver el problema. Uno es eliminado el bloqueo como se indicó anteriormente. Luego debe editar el archivo pre-revprop-change.tmpl para que esté vacío y hacerlo ejecutable. Utilice chmod + x en Linux / Unix / Mac, pero cambie el nombre del archivo a pre-revprop-change.bat en Windows. Después de esto, puede cargar archivos de volcado en su repositorio y luego reflejarlos donde lo necesite.