【问题标题】:TFS file must remain lockedTFS 文件必须保持锁定状态
【发布时间】:2013-01-24 12:17:16
【问题描述】:

我在 TFS 中签入了一些第 3 方 dll
我们的机器已重命名,现在 TFS 认为它们已被我签出以供我在另一台机器上进行编辑。

我尝试了tf lock /lock:none contrib64/* /workspace:oldmachine;myusername,但我得到了错误

TF10152: The item $/XXX/YYYY/contrib64/third_party.dll must remain locked because its file type prevents multiple check-outs.

1,有什么办法可以解决这个问题吗?
2、TFS真的这么差还是只有我一个人?
3、TFS的目的是让我们怀念VSS吗?

ps 这是一个托管版本,所以我不能让管理员修复它。

【问题讨论】:

    标签: tfs tfvc


    【解决方案1】:

    取消锁定对这些文件不起作用,因为它们是二进制文件,因为无法合并二进制文件,如果它们被签出,它们必须被锁定。

    由于工作区所在的机器不再存在(机器已重命名),最好的办法是删除工作区。

    从 Visual Studio 命令提示符

    tf workspace /delete oldmachine;myusername /collection:http://*tfsserver*:8080/tfs/*collection*

    这将删除工作区并撤消所有待处理的更改

    【讨论】:

    • 我找到了“删除工作空间”的建议,但我们托管的 TFS 暗示整个公司都是“工作空间”——至少它是这样称呼我们的整个集合的。每台机器+用户都是工作区吗?
    • ps 谢谢,二进制检出/合并的原因实际上是有道理的!
    • 每个用户可以在多台机器上拥有多个工作区。工作区是源代码管理中的文件夹与本地硬盘驱动器上的文件夹之间的映射。从技术上讲,我认为一个集合可以被认为是一个“工作区”作为一个通用术语,但在 TFS 工作区中具有特定的含义。默认情况下,当您创建工作区时,其名称为 machineName;username,同一台机器上的第二个工作区将是 machineName_1;username 您可以重命名工作区名称的第一部分。删除旧工作区,一切顺利
    • 非常感谢。关于其他问题的任何想法 - TFS 真的比 Git 不那么友好还是我只需要了解更多?
    • 那太主观了 :-) 我没有太多地使用 git,所以我不能真正发表评论。 TFS 确实需要一些时间来适应,并且非常类似于 CVCS。更好的比较是 SVN,从源代码控制的角度来看,我会说 TFS 与(截至 TFS 2012)相当。当然,TFS 所做的远不止版本控制。虽然 TFS 有其缺陷和烦恼,但我会断言它比 VSS 好 1beeeeeeelion 倍
    【解决方案2】:

    如果您不想删除工作区,您可以撤消更改并在此之后解锁文件:

    使用 Visual Studio 开发人员命令提示符:

    tf undo "$/<server-path-to-file/folder>" /workspace:"<workspace>;<user>" /collection:<collection-url> /recursive

    tf lock "$/<server-path-to-file/folder>" /lock:none /workspace:"<workspace>;<user>" /collection:<collection-url> /recursive

    【讨论】:

      【解决方案3】:

      带有 .dll 扩展名的文件以及其他扩展名(如 .exe、.doc、.docx 等)会自动锁定,因为(如前所述)它们无法合并。

      如果您想禁用自动锁定并允许这些文件通过门控签入,请按照以下步骤操作:

      1. 登录到您的构建服务器。
      2. 打开视觉工作室。
      3. 在团队资源管理器中,登录您的团队项目。
      4. 转到“设置”。
      5. 在“团队项目集合”下,选择“源代码管理”。
      6. 对于您不想自动锁定的任何文件扩展名,将“文件合并”属性设置为“已禁用”。

      参考:https://blogs.msdn.microsoft.com/phkelley/2008/11/12/everything-you-ever-wanted-to-know-about-locks/

      这对我有用。

      【讨论】:

        【解决方案4】:

        我需要更改 2 个地方的设置:

        1. 在 Visual Studio 中,团队项目窗口,设置 -> 团队项目集合 -> 源代码管理 为扩展启用文件合并。

        2) 在 Visual Studio 中,团队项目窗口,设置 -> 团队项目 -> 源代码管理 启用多个签出框

        【讨论】:

          猜你喜欢
          • 2012-12-09
          • 2011-04-24
          • 2013-11-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-22
          相关资源
          最近更新 更多