2010-11-30 20 views
5

Según la Subversion documentation:No coincidencia de bloqueo-token

después de la confirmación está terminado, svn estado muestra que el token de bloqueo es no ya presentes en la copia de trabajo. Este es el comportamiento estándar de SVN cometer-que busca en la copia de trabajo (o lista de objetivos, si se proporciona dicha lista) para las modificaciones locales y envía todas las fichas bloquearlo encuentros durante este paseo a la servidor como parte de la transacción commit . Después de la confirmación se completa con éxito, se liberaron todos los bloqueos del repositorio que se mencionaron , incluso en los archivos que no se han confirmado. Esto está destinado a desalentar a los usuarios a ser descuidados sobre el bloqueo o de la celebración de cerraduras durante demasiado tiempo.

Al tratar de garantizar funciona esta funcionalidad, que continuamente reciben este mensaje al intentar cometer un cambio en un archivo que tiene un bloqueo en mi copia de trabajo:

svn: Cannot verify lock on path '/test/test'; no matching lock-token available

Ahora, he probado este escenario en dos copias de trabajo diferentes en Windows, y una vez en RHEL, y cada vez recibió el mismo error con un nuevo proceso de pago y sin bloqueos previos en el archivo. Si desbloqueo el archivo y luego confirmo, no hay problema, los commits suceden. Si uso la propiedad svn: needs-lock, el mismo error si intento confirmar antes de desbloquear el archivo.

Estoy bastante seguro de que el error no está ocurriendo en el lado del cliente, sino en el lado del servidor. Pensé que podría ser que los clientes no estén pasando el token de autorización local al servidor de Subversion. Sin embargo, he intentado esto con tres clientes diferentes (2 CLI y Subclipse). Debido a que falla con tres clientes diferentes, siento que los clientes están pasando los tokens de autorización local al servidor. Así que estoy bastante seguro de que el servidor es el lugar donde necesito resolver esto, pero ¿dónde?

+0

solo para aclarar, 'svn lock test/test; echo "foo" >> prueba/prueba; svn ci -m 'check-in mientras se mantiene bloqueado' test/test' falla? – tobyodavies

+0

En Unix y Windows (con algunas modificaciones para la plataforma), ese comando falla con 'svn: No se puede verificar el bloqueo en la ruta'/test/test '; no hay token de bloqueo coincidente disponible en ambos sistemas. – jgifford25

Respuesta

2

Bueno, he hecho un pequeño análisis con su pregunta y encontré this.

Lo que dice hacer es verificar si los archivos son de solo lectura, si lo son, SVN piensa que los archivos están bloqueados y que ningún token de bloqueo coincidente estará disponible (ya que en realidad no está bloqueado). Por lo tanto, si solo son de solo lectura, intente configurarlos para que se puedan escribir.

Si eso no funciona, échale un vistazo a here.

+0

Gracias, encontré los mismos enlaces en mi propia investigación sobre este tema. Lo sentimos, los archivos no se configuran como de solo lectura cuando se produce la confirmación y las copias de trabajo no se destruyen ni se vuelven a crear mientras existía un bloqueo. Apuesto a que el problema no está en el lado del cliente como sugieren los dos enlaces, sino más bien en el lado del servidor. – jgifford25

+0

El primer enlace está ahora muerto – Royce

0

Quizás el repositorio en el servidor se dañó. Use svnadmin en el servidor para volcar el repositorio, cárguelo en una máquina diferente en un depósito temporal y pruebe la misma operación con el depósito temporal.

Si eso soluciona el error, haga una copia de seguridad del repositorio anterior y reemplácelo por el repositorio temporal.

+0

Lo he hecho usando svnadmin verify, que es básicamente un volcado de svnadmin sin salida. El repositorio es sonido. También tenemos múltiples repos, y obtenemos el mismo comportamiento en todos ellos. ¡Gracias! – jgifford25

+0

¿Revisó el espacio de disco en el servidor? ¿Qué hay de los permisos de archivos? Y aún sugiero que cargue el repositorio en una máquina diferente (puede hacerlo en su cliente). Si eso funciona, sabrá un poco más. –

+0

El espacio en disco está bien. Permisos de archivos, cuestionables, ya que no configuré este servidor y los que sí lo hicieron, realmente no conocía Subversion. Estoy arreglando muchas cosas pequeñas, por lo que los permisos podrían ser una posibilidad, pero no podrán verificarlo ya que el servidor está bastante bloqueado. No tengo permisos de chown, básicamente. Cargaría el repositorio en otra máquina y lo probaría, pero no tienen un recurso lo suficientemente grande como para probarlo, y mucho menos espacio suficiente para un volcado completo sin agregar recursos adicionales, lo que no sucederá por un tiempo. – jgifford25

11

que tenían el mismo problema:

svn: E160037: Commit failed (details follow): 
svn: E160037: Cannot verify lock on path '/QHG3/trunk/kernel/Activator.cpp'; no matching lock-token available 

yo era capaz de solucionar este problema por "robar" el candado:

svn lock --force AltMoverPop.cpp 
+1

Robando cerraduras funcionó para mí también! – TPAKTOPA

+0

¿Qué versión de Subversion usan? Creo que en el momento de esta publicación, estaba usando Subversion 1.6.x si eso ayuda. – jgifford25

+0

Trabajando con un equipo remoto y teniendo este problema. Robar el candado funcionó para mí. –

1

Ohh hombre .. Me mensaje buscar a pilar. Para mí el problema era el mismo "Bloqueo que no funciona"

Haz clic derecho -> Obtener bloqueos -> marca "Bloquear robo". Modificó el archivo, y se registró. Lo hice por mí, por el momento

Cuestiones relacionadas