Tfs "Check-out lock" 是否会消耗更多资源并降低 VS 2015 的速度?

Does Tfs "Check-out lock" consume more resources and slow down VS 2015?

我最近加入了一个在 TFS 中使用“签出锁”的团队。

Check-out lock 意味着 none 的团队成员可以在其他团队成员的计算机上签出文件时编辑文件。

这是我第一次使用那种锁,通常我在没有任何锁的项目上工作,我注意到我的 VS(2015) 和我的队友非常慢,尤其是在执行以下操作时:添加新文件、获取最新版本(visual studio 暂时没有响应)和编写代码。

我最近安装了 Resharper(VS 在我安装之前很慢)并且在它的性能指南下它标记: 正在使用源代码管理插件影响性能。

有没有办法证明我的担忧,以便我的 TL 接​​受我的意见并删除这种锁类型?

当您每次开始编辑文件时使用 TFVC 的独占签出时,Visual Studio 将需要进行服务器往返以检查服务器上文件的锁定状态并随后将其锁定。如果 TFS 服务器速度慢或距离较远,这可能需要一段时间。很可能这个团队还配置了 "Get latest on checkout",这将进行几次额外的往返。

向解决方案添加文件时问题会更加严重,因为 Visual Studio 需要锁定项目文件和正在添加的文件。如果是新窗体或控件,这通常会导致创建多个文件。

2012 年,TFS 引入了一种新的 TFVC 工作区类型,即 本地工作区。此类型不支持独占检出并在本地保留编辑状态。因此它更快,当您不总是连接时工作得更好并且通常具有更好的性能(达到一定大小的工作空间)。此工作区类型是最新版本的 TFS 的默认工作区类型。

您同事的性能问题似乎与 TFVC 工作区类型或独占检出的使用没有直接关系。来自 Resharper 的警告只是您启用了 any 源代码控制集成:

Source Control | Plug-in Selection: select None for the source control plug-in. This will turn off Git or another VCS provider and improve overall performance.

使用 TFVC 时,只有导致服务器交互的操作才会因额外的网络往返而变慢。正常工作不应该受到负面影响。这表明您的同事在他的机器上或他们正在使用的解决方案上有其他问题。这可能是由某些扩展或由于项目规模较大引起的。 Visual Studio 2015 是第一个依赖 Roslyn 编译的 Visual Studio 版本,它有自己的问题。在 Visual Studio 2017 年(尤其是在 15.6 及更高版本中)性能问题已大大减少。

如果你想说服你的老板停止独家结账,我还有一些其他的弹药给你:

  • 为了支持 Source Safe 中的旧工作流程并防止合并二进制文件出现问题,TFVC 添加了独占检查。
  • 即使在 2005 版中也不鼓励独占签出。
  • 2012 年推出的本地工作区完全取消了对独占签出的支持。
  • TFS 和 VSTS 中新的事实上的标准源代码控制机制是 Git。由于其分布式特性,它没有独占结账的概念。
  • 在很多情况下,独占锁定是代码库中其他问题和团队协作模式的指标。
  • 如果关心的是消除合并冲突,请在合并方面做得更好。

您的团队可能已经习惯了这样一个事实,即只要锁定所有内容,他们就永远不必合并任何内容。它会导致不同的挫败感。一些性能影响就是其中之一。但不是您描述的性能影响。