Estamos utilizando el servidor SVN 1.4 (creo) con los clientes siendo el cliente de línea de comandos o TortoiseSVN.¿Cómo puedo determinar quién bloqueó un archivo usando SVN?
Respuesta
El cliente de la línea de comandos muestra el propietario del bloqueo con el comando "svn info".
En TortoiseSVN, puede ver el propietario del bloqueo en el menú contextual de "propiedades" (pestaña "subversión").
Tristemente, TortoiseSVN me dice ** no hay bloqueos ** cuando miro en esa página de propiedades/subversión. Pero me dice ** _ I_ lo tengo bloqueado _ elsewhere _ ** cuando intento confirmar el archivo. Pero no me dirá dónde lo cerré. PD: Solo bloqueo (a propósito) en un directorio de Windows. Esperaba encontrar dónde se produjo el bloqueo accidental. –
@JesseChisholm: No creo que Subversion registre la copia de trabajo que envió el candado. De todos modos, si está seguro de que no tiene cambios pendientes, puede simplemente romper el bloqueo. – sleske
finalmente, tuve que ir a cada máquina que tenía un sandbox SVN y comprobar si se creó un bloqueo accidental allí 'svn status --show updates' hasta que encontré la máquina que tenía el bloqueo involuntario. Entonces podría liberar ese bloqueo 'svn unlock offendingFile' y borrar la situación. –
Consulte la sección red book 'Detección de bloqueos'. Creo que contiene la respuesta.
Utilizando la función repo-browser de TortoiseSVN hay una columna de bloqueo que muestra al usuario que bloqueó el archivo.
Haga clic derecho en la copia de trabajo local -> TortoiseSVN-> repo-navegador.
Usa svn status --show-updates
para descubrir bloqueos en los archivos. En el siguiente ejemplo, Sally descubre que hay un bloqueo en raisin.jpg.
$ whoami
sally
$ svn status --show-updates
M 23 bar.c
M O 32 raisin.jpg
* 72 foo.h
Status against revision: 105
Una vez conocido el bloqueo, puede utilizar svn -info
para descubrir que ha marcado el bloqueo. Observe "propietario del bloqueo" a continuación:
$ svn info http://svn.example.com/repos/project/raisin.jpg
Path: raisin.jpg
Name: raisin.jpg
URL: http://svn.example.com/repos/project/raisin.jpg
Repository UUID: edb2f264-5ef2-0310-a47a-87b0ce17a8ec
Revision: 105
Node Kind: file
Last Changed Author: sally
Last Changed Rev: 32
Last Changed Date: 2005-01-25 12:43:04 -0600 (Tue, 25 Jan 2005)
Lock Token: opaquelocktoken:fc2b4dee-98f9-0310-abf3-653ff3226e6b
Lock Owner: harry
Lock Created: 2005-02-16 13:29:18 -0500 (Wed, 16 Feb 2005)
Lock Comment (1 line):
Need to make a quick tweak to this image.
Esto no parece funcionar con las versiones posteriores de Subversion (por ejemplo, 1.7). Cuando ejecuto la información de svn, no obtengo ninguna información sobre el propietario del bloqueo. Mi solución (que no es ideal) es ejecutar 'svn status -u --xml filename' y analizar el XML resultante. – HulkHolden
Tenga en cuenta que debe pasar una URL en lugar de una ruta local a 'svn info' para obtener información de bloqueo actualizada. –
re: 'necesita pasar una URL ...' Afortunadamente, el solo uso de la ruta local le dirá la URL completa. Un poco de copiar/pegar ... ¡y viola! –
La siguiente secuencia de comandos de Python muestra todos los bloqueos y quién es su propietario:
#!/usr/bin/python
# coding=UTF-8
# This tool shows who owns the locks in a subversion repository
import sys
import subprocess
if len(sys.argv) > 1:
p = subprocess.Popen(['svn', 'status', '-u', sys.argv[1]], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
else:
p = subprocess.Popen(['svn', 'status', '-u'], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(so, se) = p.communicate() # start command
lines = [x[21:].strip() for x in so.split('\n') if len(x) > 5 and x[5] == 'K']
for line in lines:
p = subprocess.Popen(['svn', 'info', line], bufsize=1, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(so, se) = p.communicate()
details = [x[12:].strip() for x in so.split('\n') if x.startswith('Lock Owner')][0]
print '[%s] (%s)' % (details, line)
pasos para comprobar:
haga clic derecho en el archivo/carpeta en la que desea determinar el bloqueo
Ir a Opciones de TortoiseSVN >> Repo-browser
Una nueva ventana se abrirá y podrá obtener una vista de tabla
columna de bloqueo en la tabla mostrará que tiene la cerradura
- Haga clic derecho en el archivo, seleccione TortoiseSVN, luego Verifique las modificaciones
- Haga clic en Verificar repositorio
- Desplácese a la derecha para ver la columna de Bloqueo
Mejor respuesta. Gracias Pradnya y Godsmith. – Gurusinghe
Tuve también este problema con los archivos .aux .aux. La solución/problema en mi caso fue que no se permiten subdirectorios con una profundidad mayor a 1. Si desea usar esto, los subdirectorios en la carpeta tmp deben estar existentes. p. -> src -> Introducción -> introduction.tex requiere -> tmp -> Introducción -> introduction.aux ** * ** *
El directorio subrayado debe estar existente. Por lo tanto, en el caso de la administración de subversión, confirme también la estructura de directorios en la carpeta tmp (sin los archivos * .aux).
- 1. ¿Cómo puedo determinar si un archivo es un archivo PDF?
- 2. ¿Cómo puedo determinar el tipo de repositorio SVN que tengo?
- 3. ¿Cómo puedo determinar programáticamente qué aplicación está bloqueando un archivo?
- 4. ¿Cómo puedo determinar qué tan fuerte sonará un archivo WAV?
- 5. ¿Cómo puedo determinar si un archivo está vacío?
- 6. ¿Cómo puedo determinar si un archivo está bloqueado con VBS?
- 7. ¿Cómo puedo determinar mediante programación si un archivo MP3 es CBR o VBR? (Preferiblemente usando C#)
- 8. ¿Cómo puedo transmitir un archivo usando werkzeug?
- 9. ¿Cómo puedo cargar un archivo usando Catalyst?
- 10. ¿Cómo puedo enviar un solo archivo usando SVN a través de una red?
- 11. ¿Cómo saber si un programa se bloqueó con un subproceso?
- 12. ¿Cómo mantengo un svn: external actualizado usando git-svn?
- 13. jQuery slider evento de "cambio": ¿cómo puedo determinar quién lo llamó?
- 14. ¿Cómo mueves un archivo en SVN?
- 15. SVN - ¿Cómo cargar un solo archivo?
- 16. ¿Cómo puedo saber quién llamó a SendMessage?
- 17. Post-commit de SVN: ¿quién es el usuario que confirma?
- 18. ¿Cómo ramifico un archivo individual en SVN?
- 19. ¿Cómo puedo determinar si un archivo es un archivo de imagen en .NET?
- 20. ¿Cómo puedo determinar que un archivo en particular es en realidad un archivo MP3?
- 21. Cómo determinar, al iniciar, si la aplicación se bloqueó la última vez que se cerró?
- 22. Generar el historial de cambios en un archivo en svn
- 23. ¿Puedo emular svn: externals usando mercurial?
- 24. ¿Cómo puedo determinar si svn: mergeinfo está dañado y cómo lo solucionaría?
- 25. SVN ignorando un archivo '.a'
- 26. ¿Cómo actualizar un archivo en SVN?
- 27. ¿Cómo puedo determinar los tipos de propiedad usando reflexión?
- 28. ¿Cómo puedo determinar cuánta memoria está usando mi programa .NET?
- 29. ¿Cómo puedo crear una rama en svn usando SharpSVN
- 30. ¿Cómo puedo deshacer un git svn dcommit?
¿Quisces decir TortoiseSVN? –