A veces sucede que algunos usuarios bloquean archivos en el TFS. Luego, cuando esos usuarios no pueden ni commitear ni deshacer sus cambios, otros programadores tampoco pueden modificar el archivo, dependiendo del nivel de bloqueo que el usuario haya puesto.
Para quitar el bloqueo en esos archivos, se usan los comandos de consola TFS. Estos comandos NO commitean en el TFS los cambios pendientes que el usuario tenga en su disco local. El contenido del archivo bloqueado NO se puede recuperar a menos que se acceda al disco rígido de ese usuario para obtenerlo. Lo único que se hace con estos comandos es liberar al archivo para que otro más pueda modificarlo.
Todas las versiones de Visual Studio tienen Command Prompt que es similar a un símbolo de sistema DOS, pero que está especialmente configurado para correr comandos de Visual Studio. Este path es para VS2008, pero TODAS las versiones de VS tienen un path similar:
Inicio -> Todos los programas -> Microsoft Visual Studio 2010 -> Visual Studio Command Prompt (2010)
Obviamente, tener en cuenta que los VS 2010 y anteriores conectan contra el tfs desarrollo, mientras que los VS 2012 y posteriores conectan contra el tfs desarrollo2.
El comando tf status nos permite ver todos los cambios de un usuario específico o de cualquier usuario:
tf status "$/ProjectName/Path" /u:* (para ver los cambios pendientes de cualquier usuario)
tf status "$/ProjectName/Path" /u:DOMINIO\usuario (para ver los cambios pendientes de un usuario específico)
Tener en cuenta que, en los comandos anteriores, Path representa un archivo específico (una ruta completa hasta el nombre de archivo con extensión, por ejemplo Globa.asax.cs) Si se quiere ver los cambios pendientes de una carpeta, en ese caso se pone el Path de esa carpeta (por ejemplo $/SecurityApps/Sources/Development/Noanet.IAM/Solutions") y se pasa el parámetro /r (recursividad)
Con esto podemos ver los cambios pendientes en un archivo o carpeta (recursivamente) de un usuario particular o de cualquier usuario.
Para poder liberar un archivo (o carpeta, recursivamente) hay que saber cuál es el workspace que lo tiene bloqueado. El nombre workspace lo averiguamos si al mismo comando tf status le agregamos al final el parámetro /format:detailed. En ese caso, por cada archivo, veremos el usuario y el workspace en que el archivo está bloqueado:
Sabiendo el archivo (o el path raíz, con /r recursivo) que queremos desbloquear, el workspace que lo tiene bloqueado y el usuario correspondiente, aplicamos el comando tf undo, con el parámetro /workspace:Nombre_Workspace;Usuario
tf undo "$/WebEjesa/Sources/Development/Noanet.WebEjesa" /r /workspace:NCPU0360;fflores
Para liberar un archivo tomado por otro usuario o desde otro Workspace debemos realizar las siguientes acciones:
Debemos estar logueados al Active Directory
Ir a Inicio > Todos los programas > Microsoft Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command Prompt
Tipeamos: tf undo /workspace:<WORKSPACE>;<USUARIO> $/Project/ItemName.cs /s:http://desarrollo:8080