了解锁定类型

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

可以使用 Team Foundation 版本控制 (TFVC) lock 命令暂时阻止对源代码管理服务器中的特定文件或文件夹进行更改。 如果要更改工作区中的项,然后在不强制解决任何合并冲突的情况下签入该项,此功能很有用。 一次只能有一个用户锁定特定文件或文件夹。 如果要持久阻止对某个项的访问,应该改用 Permission 命令

锁类型

Azure DevOps 提供两种类型的锁定:签入锁定和签出锁定。

签入锁

签入锁定的限制比签出锁定少。 应用签入锁定时,用户可以继续对其他工作区中的锁定项进行本地更改。 但只有在通过执行以下操作之一移除锁定之后,才可签入这些更改:

  • 从项中显式移除签入锁定
  • 通过将更改签入文件来隐式移除锁定

签出锁

在 Azure DevOps 中,由于在本地工作区,签出锁定通常无效。 有关详细信息,请参阅决定使用本地工作区还是服务器工作区。 具体而言,签出锁:

  • 无法强制执行,因为其他用户可能在使用本地工作区。
  • 在使用本地工作区时不可用。
  • 如果项目集合的管理员安全组成员已为团队的服务器工作区启用了异步签出,则禁用。

签出锁定可防止使用服务器工作区的用户签出和更改其工作区中的锁定项。 不能在自己的工作区以外的任何工作区中对存在挂起的更改的项应用签出锁定。

锁定的工作原理

如果在锁定文件时签出文件,则其签出记录修改为包含新的锁定类型。 如果未签出文件,则会将锁定更改添加到挂起的工作区更改集中。 与 checkout 命令不同,lock 命令不会自动使文件可编辑。

在锁定了项的工作区中签入挂起的更改时,TFVC 会自动解锁该项。 如果使用 undo 命令撤消了文件的挂起的更改,也会释放锁定。

文件夹锁定是隐式递归的。 如果锁定文件夹,则不必锁定其中包含的文件。 一个例外是当文件夹具有签入锁定时,它的限制比签出锁定少。 如果要对该文件夹中的文件使用签出锁定,则需要应用该签出锁定。

一次只能有一个用户锁定特定文件或文件夹。 可以使用 Status 命令查看哪些文件在 Azure DevOps Server 中处于锁定状态以及锁定它们的人。

锁定既可以作为其自己的操作放置,也可以作为多个其他操作的一部分放置。 这些操作包括 renamecheckoutdeleteundeletemergebranchadd。 如果在将项添加到源代码管理或分支时锁定项,TFVC 会将锁定放置在创建新项的服务器路径上。 此放置可防止其他用户在同一位置添加文件或创建文件分支。 使用 rename 命令锁定项时,旧服务器路径和新服务器路径都会锁定。

解锁项

可以使用 unlock 命令显式解锁项,也可以在签入时隐式解锁。 将挂起的更改签入锁定项时,Azure DevOps 会移除所有锁定。

注意

默认情况下,仅向管理员授予 UnlockOther 权限。 如果拥有 UnlockOther 权限,则可以使用 Lock 命令移除对其他用户工作区中的项的锁定。