登记时,git-tf告诉我"无法锁定"; 我该怎么解决?

Rya*_*ndy 3 git tfs git-tf

我正在使用git-tf推送到TFS项目.有时,当我尝试将一个或多个提交检入TFS时,我收到如下消息:

连接到TFS ...
签入$/MyProject:0%
git-tf:无法锁定$/MyProject

这是什么意思?是什么阻止我锁定?我该如何解决这个问题?

Rya*_*ndy 5

为什么会这样

使用标准TFS时,您一次只能检入一个提交.但是使用Git,你可以进行一系列的提交,你可以同时推送所有提交.

因此,git-tf努力使你的提交集保持原子性.如果有人在您办理登机手续时办理登机手续,那么历史可能会混乱; 它不会被正确合并.

为了防止这种情况,git-tf会在签入时临时锁定整个源树.但是,如果其他人已经锁定了源树的某些部分,则无法执行此操作.

怎么解决它

你会在某些地方看到--no-lock参数:

git tf checkin --no-lock
Run Code Online (Sandbox Code Playgroud)

这不是一个好的解决方案. 它忽略了潜在的扰乱历史问题,而不是解决它.

如何解决它

  1. 根据您正在使用的TFS版本,下载并安装适当版本的TFS Sidekicks.
  2. 运行TFS Sidekicks.
  3. 导航到工具>状态Sidekick.
  4. 清除用户名字段.
  5. 设置足够宽的日期范围以包含项目的整个历史记录.如果愿意,您可以过滤项目名称字段.
  6. 单击搜索.您将获得项目中所有已签出文件的列表.
  7. 单击"锁定类型"列标题以按该列排序.大多数文件在该列中可能都有"无".你正在寻找任何"锁定"的文件.这在二进制文件中最常见,因为它们无法合并.默认情况下,TFS将在签出时将其独占锁定.
  8. 一旦找到锁定的文件,请与锁定它们的人员交谈并协商解锁.如果此人不再在那里工作,您可能希望让TFS管理员删除锁.
  9. 删除所有锁定后,再次在TFS Sidekicks中点击搜索,您会看到所有文件的锁定类型为"无".现在再次尝试你的git tf checkin,这次它应该正常工作.