Entender los tipos de bloqueo

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Puede usar el comando lock de Control de versiones de Team Foundation (TFVC) para evitar temporalmente que se realicen cambios en un archivo o carpeta determinado en el servidor de control de código fuente. Esta funcionalidad puede resultar útil si quiere cambiar un elemento en el área de trabajo y, después, insertarlo sin verse obligado a resolver ningún conflicto de fusión mediante combinación. Solo un usuario a la vez puede bloquear un archivo o carpeta determinado. Si quiere bloquear el acceso continuo a un elemento, debe usar el comando Permission.

Tipos de bloqueo

Azure DevOps proporciona dos tipos de bloqueos: bloqueos de inserción en el repositorio y bloqueos de extracción del repositorio.

Bloqueo de protección

Un bloqueo checkin es menos restrictivo que un bloqueo checkout. Cuando aplica un bloqueo de inserción en el repositorio, los usuarios pueden seguir realizando cambios locales en el elemento bloqueado en otras áreas de trabajo. Aun así, esos cambios no se pueden insertar en el repositorio hasta que quite el bloqueo mediante una de las acciones siguientes:

  • Quitar explícitamente del elemento el bloqueo de inserción en el repositorio.
  • Quitar implícitamente el bloqueo mediante la inserción en el repositorio de los cambios en el archivo.

Bloqueo de desprotección

En Azure DevOps, los bloqueos de extracción del repositorio no suelen ser eficaces debido a las áreas de trabajo locales. Para obtener más información, vea Decisión entre usar un área de trabajo local o de servidor. Específicamente, los bloqueos de desprotección tienen estas características:

  • No son forzosos porque otros usuarios pueden estar utilizando áreas de trabajo locales.
  • No están disponibles si se usa un área de trabajo local.
  • Se deshabilitan si un miembro del grupo de seguridad de administradores de la colección de proyectos ha habilitado la extracción del repositorio asincrónica para las áreas de trabajo de servidor del equipo.

Un bloqueo de extracción del repositorio impide que los usuarios que usan áreas de trabajo de servidor extraigan del repositorio el elemento bloqueado en sus áreas de trabajo y realicen cambios en él. No puede aplicar un bloqueo de extracción del repositorio a un elemento para el que existen cambios pendientes en otra área de trabajo que no sea la propia.

Funcionamiento del bloqueo

Si se desprotege un archivo cuando lo bloquea, se modifica el registro de desprotección para contener el nuevo tipo de bloqueo. Si el archivo no se extrae del repositorio, se agrega un cambio de bloqueo al conjunto de cambios pendientes del área de trabajo. A diferencia del comando checkout, el comando lock no hace que un archivo se pueda editar automáticamente.

TFVC desbloquea automáticamente un elemento cuando se insertan en el repositorio los cambios pendientes en el área de trabajo donde está bloqueado. Los bloqueos también se liberan si se deshacen los cambios pendientes de un archivo mediante el comando undo.

Los bloqueos de carpetas son implícitamente recursivos. Si bloquea una carpeta, no hace falta bloquear los archivos que contiene. Una excepción es cuando una carpeta tiene un bloqueo de inserción en el repositorio, que es menos restrictivo que un bloqueo de extracción del repositorio. Si quiere usar un bloqueo de extracción del repositorio en un archivo de esa carpeta, debe aplicarle dicho bloqueo de extracción del repositorio.

Solo un usuario a la vez puede bloquear un archivo o carpeta determinado. Puede usar el comando status para ver qué archivos están bloqueados en el servidor de Azure DevOps y quién los bloqueó.

Un bloqueo se puede colocar como una operación en sí misma o como parte de otras operaciones. Entre estas operaciones se incluyen rename, checkout, delete, undelete, merge, branch y add. Cuando bloquea un elemento como parte de una adición al control de código fuente o bifurcación, TFVC coloca el bloqueo en la ruta de acceso del servidor donde se crea el elemento. Esto impide que otro usuario pueda agregar o bifurcar un archivo en la misma ubicación. Cuando bloquea un elemento mediante el comando rename, se bloquean las rutas de acceso del servidor anteriores y nuevas.

Desbloqueo de un elemento

Puede desbloquear un elemento explícitamente mediante el comando unlock o implícitamente al realizar la inserción en el repositorio. Cuando se insertan en el repositorio los cambios pendientes en un elemento bloqueado, Azure DevOps quita cualquier bloqueo.

Nota:

De forma predeterminada, el permiso UnlockOther solo se concede a los administradores. Si tiene el permiso UnlockOther, puede quitar un bloqueo de un elemento del área de trabajo de otro usuario mediante el comando Lock.