git-tf告诉我"无法锁定"办理入住手续时;我该怎么解决?

时间:2014-04-15 17:30:31

标签: git tfs git-tf

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

  

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

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

1 个答案:

答案 0 :(得分:5)

为什么会发生

使用标准TFS时,您一次只能检入一个提交。但是使用Git,您可以进行一系列提交,一次性推送。

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

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

如何 来修复它

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

git tf checkin --no-lock

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

如何修复

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