我正在使用 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
这不是一个好的解决方案。它忽略了潜在的乱序历史问题而不是解决它。
如何修复
- 根据您使用的 TFS 版本,下载并安装适当版本的 TFS Sidekicks .
- 运行 TFS Sidekicks。
- 导航到工具 > Status Sidekick。
- 清除用户名字段。
- 设置一个足够宽的日期范围以涵盖项目的整个历史。如果愿意,您可以过滤项目名称字段。
- 点击搜索。您将获得项目中所有 checkout 文件的列表。
- 单击“锁定类型”列标题以按该列排序。大多数文件在该列中可能有“无”。您正在寻找任何已“锁定”的文件。这在二进制文件中最常见,因为它们无法 merge 。默认情况下,TFS 将在 checkout 时独占锁定它们。
- 一旦您发现哪些文件被锁定,请与锁定文件的人交谈并协商解锁文件。如果此人不再在那里工作,您可能希望让 TFS 管理员解除锁定。
- 一旦所有的锁都被移除,在 TFS Sidekicks 中再次点击搜索,您应该会看到所有文件的锁类型都为“无”。现在再次尝试 git tf checkin,这次它应该可以正常工作。
关于git-tf 在 checkin 时告诉我 "Could not lock";我该如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090590/