visual-studio - Tfs "Check-out lock"是否会消耗更多资源并减慢 VS 2015 的速度?

标签 visual-studio tfs resharper tfvc

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

<强> Check-out lock 表示在其他团队成员的计算机中 checkout 文件时,任何团队成员都无法编辑该文件。

这是我第一次使用这种锁,通常我在没有任何锁的项目上工作,我注意到我的VS(2015)和我的队友非常慢,尤其是在做的时候操作例如:添加新文件、获取最新版本(Visual Studio 一段时间没有响应)和编写代码。

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

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

最佳答案

每次开始编辑文件时,使用 TFVC 进行独占 checkout 时,Visual Studio 将需要进行一次服务器往返来检查服务器上文件的锁定状态,然后将其锁定。如果 TFS 服务器速度缓慢或距离较远,这可能需要一段时间。该团队可能还配置了“获取最新结账信息”,这将进行几次额外的往返。

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

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

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

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 及更高版本)中,性能问题已大大减少。

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

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

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

关于visual-studio - Tfs "Check-out lock"是否会消耗更多资源并减慢 VS 2015 的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841512/

相关文章:

ReSharper:查找派生类型构造函数用法点

c++ - QString::toStdString() 在 std::string 析构函数上崩溃

sql - sql 文件中的 Resharper 实时模板

c - C 中的链表 : Having issues with entering string and displaying it

使用 TFS 的数据库变更管理和构建过程

c# - 提高软件质量的最佳实践

visual-studio - 在 Visual Studio 中搜索时仅包含某些文件类型

tfs - 如何防止 TFS 锁定 App_Data 文件夹中的二进制文件?

c# - Resharper 和 Productivity Power Tools 争夺我的使用权。我怎样才能停止流血?

vb.net - Resharper 的单元测试资源管理器是否适用于 VB.NET 测试项目?