git-tf 在 checkin 时告诉我 "Could not lock";我该如何解决?

标签 git tfs git-tf

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

Connecting to TFS...
Checking in to $/MyProject: 0%
git-tf: Could not lock $/MyProject

这是什么意思?是什么让我无法锁定?我该如何解决这个问题?

最佳答案

为什么会这样

使用标准 TFS,您一次只能 checkin 一个提交。但是使用 Git,您可以同时推送一系列提交。

正因为如此,git-tf 努力使您的提交集保持原子性。如果有人在您签到时签到,则历史记录可能会混淆;它不会被正确 merge 。

为了防止这种情况,git-tf 在 checkin 时临时锁定整个源代码树。但是,如果其他人已经锁定了部分源代码树,它就不能这样做。

如何修复它

您会在某些地方看到推荐的 --no-lock 参数:

git tf checkin --no-lock

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

如何修复

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

关于git-tf 在 checkin 时告诉我 "Could not lock";我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090590/

相关文章:

git - "git pull --all"可以更新我所有的本地分支吗?

ios - Mac Osx 10.8 上的 Git Tf 安装

git-tf - GIT-TF是否需要权限?

git - 从 Bitbucket 推送标签时不会触发 Azure Pipelines CI

git - 我可以格式化 git reflog 以显示引用何时指向每个提交吗?

git - 将 master 压缩并 merge 到同一个分支

TFS从子子直接合并到我

.net - 通过TFS工作项SDK设置工作量估算值

tfs - Visual Studio Online - Build Drop 仅包含日志文件

线程 "main"java.lang.StackOverflowError 中的 git-tf checkin 异常