我正在使用 git-tf 推送到 TFS 项目。有时,当我尝试检查 TFS 中的一个或多个提交时,我会收到如下消息:
正在连接到 TFS...
签入 $/MyProject:0%
git-tf:无法锁定 $/MyProject
这是什么意思?是什么让我无法锁定?我该如何解决这个问题?
为什么会发生这种情况
使用标准 TFS 使用时,您一次仅签入一项提交。但使用 Git,您可以一次性推送一系列提交。
因此,git-tf 努力使您的提交集保持原子性。如果您在签到时有人签到,历史记录可能会变得混乱;它不会被正确合并。
为了防止这种情况,git-tf 暂时锁定整个源代码树但是,如果其他人已经锁定了源树的部分内容,则它无法执行此操作。
How not要解决这个问题
您会在某些地方看到推荐的 --no-lock 参数:
git tf checkin --no-lock
这不是一个好的解决方案。它忽略了潜在的历史混乱问题,而不是解决它。
如何修复它
- 根据您使用的 TFS 版本,下载并安装适当的版本TFS 助手 http://www.attrice.info/cm/tfs/.
- 运行 TFS Sidekicks。
- 导航到工具 > 状态 Sidekick。
- 清除用户名字段。
- 设置足够宽的日期范围以涵盖项目的整个历史。如果您愿意,您可以过滤项目名称字段。
- 单击搜索。您将获得项目中所有签出文件的列表。
- 单击“锁定类型”列标题可按该列排序。大多数文件可能会在该列中显示“无”。您正在寻找任何具有“锁定”状态的文件。这对于二进制文件最常见,因为它们无法合并。默认情况下,TFS 将在检出它们时以独占方式锁定它们。
- 一旦您发现哪些文件被锁定,请与锁定这些文件的人交谈并协商解锁它们。如果该人不再在那里工作,您可能需要 TFS 管理员删除锁。
- 删除所有锁定后,在 TFS Sidekicks 中再次单击“搜索”,您应该会看到所有文件的锁定类型均为“无”。现在再次尝试 git tf checkin,这次应该可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)