2008-11-12 13 views
37

Finalmente conseguí que mi grupo cambiara de SourceSafe a Subversion. Desafortunadamente, mi gerente todavía quiere usar bloqueos exclusivos en cada archivo. Así que configuré la propiedad svn: needs-lock en cada archivo y creé un enganche pre-commit para asegurarme de que la propiedad permanezca configurada.¿Cuál es la mejor manera de ver qué archivos están bloqueados en Subversion?

Estamos ejecutando Subversion en un servidor Linux. La mayoría de nosotros usamos máquinas con Windows y algunos usan Mac. Estamos utilizando varios clientes SVN (TortoiseSVN, SmartSVN, Subclipse, etc.).

Lo que ahora necesitamos es un buen/sencillo método para ver todos los archivos que están actualmente bloqueados en todo el repositorio (y quién los tiene bloqueados). He hurgado un poco en Tortoise y Subclipse, pero no he encontrado lo que estoy buscando. Nuestros proyectos tienen muchos subdirectorios que tienen múltiples niveles de profundidad, por lo que sería demasiado lento mirar cada directorio individual.

Lo que me gustaría es un único informe que pueda ejecutar que enumere todo lo que está actualmente bloqueado y quién lo tiene bloqueado. ¿Cuál es la mejor forma de obtener este tipo de información?

+5

Sé que usted sabe esto, pero estos bloqueos van a ser un asesino de la productividad en las zonas comunes del código. Las herramientas de fusión ahora son bastante buenas y combinar los cambios es más fácil de lo que su jefe parece pensar. –

+0

@TomLeys Puede tener razón en caso de código fuente, o en cualquier tipo de archivo fusible. Pero no siempre es así, por ejemplo, a veces SVN se usa para administrar archivos de datos o documentos de oficina, ninguno de ellos tiene herramientas de fusión fácilmente accesibles y de fácil acceso. – peterh

+0

* El bounty es para una nueva respuesta, que explica cómo podemos obtener la lista de los archivos bloqueados 1) desde un repositorio remoto 2) con el cliente de línea de comandos. * – peterh

Respuesta

32

Lo que está buscando es el comando svnadmin lslocks.

Tengo esta configuración en funcionamiento porque guardamos algunos documentos de Word en nuestro repositorio de Subversion (con svn:needs-lock). Tengo un trabajo de cron configurado que todos los días, comprueba la lista de bloqueos y correos electrónicos un informe de todos los bloqueos anteriores a 7 días para todo el equipo. De esa manera podemos decir quién ha estado holgazaneando y sentado en una copia bloqueada de un documento durante mucho tiempo.

+1

Office 2003 ha incorporado la fusión de documentos de Word ahora. No sé cuándo se introdujo esta característica, pero podría significar que ya no necesita bloquear sus documentos de Word. –

+0

Gracias Greg. Como seguimiento, ¿puedes decirme cómo haces que la lista muestre solo bloqueos anteriores a x días? – Shane

+0

Acabo de escribir un script que analiza el resultado de "svnadmin lslocks", mira la fecha de creación de cada bloqueo y calcula el número de días a partir de ese momento. Mi guión real está en funcionamiento y no tengo acceso a él en este momento, pero debería ser fácil de descifrar. –

21

Puede que esta no sea la respuesta que está buscando, pero debe intentar convencer al administrador de que los bloqueos no son realmente la mejor práctica de desarrollo. Hay muchos por ahí que se han escrito sobre este tema, así que no lo repetiré todo aquí.

Cuando pasa de un entorno de bloqueo a uno sin bloqueos de pago forzados, al principio cree que conducirá al caos, pero en realidad no es así. SVN es bueno para fusionar cambios cuando dos personas trabajan en el mismo archivo, e incluso si terminas con conflictos, no es tan malo arreglarlos.

Mucho mejor que esperar a que el tipo que fue a almorzar con un archivo crítico revisado, o peor aún, se fue de vacaciones.

+3

Estoy intentando dar un paso a la vez. Solo sacar al grupo de SourceSafe fue una batalla. Una vez que se sientan cómodos con SVN, entonces planeo abordar el bloqueo exclusivo. – Shane

+3

Las cerraduras son invaluables cuando se trabaja en archivos binarios que no se pueden fusionar o difuminar trivialmente, como los documentos de Microsoft Office. – DanB

21

Para ver qué bloqueos tienen usted y otros, puede usar TortoiseSVN → Verificar modificaciones ... Los tokens de bloqueo retenidos localmente aparecen inmediatamente. Para verificar si hay cerrojos retenidos por otros (y para ver si alguno de sus cerrojos se rompió o se lo robaron), debe hacer clic en Comprobar repositorio.

+0

Funciona solo con TortoiseSVN. – peterh

19

Puede descubrir las cerraduras de una caja local usando svn status --show-updates que pondrá un O antes de todos los archivos que están bloqueados en el servidor.

p. Ej.

$ svn status --show-updates 
    O  279532 LockedFile 
?     UncommittedFile 
M   279532 ModifiedFile 

ver the svnbook para más detalles

+0

Funciona solo en repositorios locales. – peterh

Cuestiones relacionadas