SourceTree处理多个代码库非常缓慢

61

我每天都会处理许多小项目,并经常需要切换它们。

  • 我在Sourcetree中有超过50个Git存储库。
  • 通常有5个项目在“选项卡”中打开。

在Sourcetree中从一个“选项卡”切换到另一个“选项卡”非常缓慢。有时长达15秒。如何改善此行为?

输入图片说明

12个回答

69

如果您使用的是较新版本的 git,则似乎默认启用了前两个功能。 - Jeff Widman
2
抱歉,但这并没有解决性能问题,我几乎不能在分支之间切换。这个问题出现在最新版本的SourceTree中。 - Duna
@Lunatikul 这也可能是 SourceTree 最新版本特有的问题。或许可以等待更新后再试一次? - Peet Brits
是比特捍卫出了问题吗? - Duna

22
执行所述的git命令对我没有起作用。 最终真正加快SourceTree速度的是在工具>选项菜单中禁用“拼写检查提交消息”。我还在此过程中禁用了“从gravatar.com加载头像图像”的选项。

5
有一天在切换项目时,性能神秘地下降了(加载的存储库没有任何更改)。禁用拼写检查后问题得到解决。谢谢提示! - kaape
1
禁用gravatar就解决了!哇,差别很大。 - Scott Duffy

12

我的源代码树中的任何操作都非常缓慢。包括提交、查看文件更改、推送等。

我发现我的杀毒软件(Avast)是问题的原因。我禁用了文件保护功能,源代码树立即变得更快。


我发现启用Avast后速度快了很多,但不确定原因。以为可能是防火墙,但在我的工作文件夹中添加了文件保护的排除项后,SourceTree又变得响应了。而且额外的好处是我的本地Web主机环境也再次变得快了! - helgatheviking
1
哇,这甚至对于 Mac 也是一样的。我为了测试 Mac 上的防病毒软件而下载了 bitdefender,结果我的 ST 变得超级慢。非常感谢! - Thai Tran
我曾经碰到过同样的问题,SourceTree运行得太慢了,无法使用。这个问题出现在我升级到Windows 10之后,我注意到涉及文件系统的所有操作都变得非常缓慢(特别是我的第二个硬盘)。一开始我怀疑是Windows的问题,但似乎是Avast和它的“文件系统防护”导致的。我将其禁用后,一切正常工作! - Pau Guillamon
1
Windows Defender是罪魁祸首之一。 - Pica
你说得对,Emir,你帮我省了很多时间!谢谢!是Avast引起了这个问题(例如,我等了5分钟才从代码库中拉取代码)。我禁用了“文件系统防护”(Štít souborového systému),现在Sourcetree没有问题了。 - exoslav

10
我也遇到了这个问题。我也使用Avast,这个方法对我有用,也可能对你有用,或者对其他杀毒软件也有用。但是我将C:\Users\YOURNAME\AppData\Local\Atlassian\添加到了我的Avast排除目录中,现在运行速度快多了!

1
这解决了我的同样的问题。 我没有Avast,但在Windows 10中与Windows Defender相同。 最后现在快了。 谢谢。 - Emanuele Pavanello
1
我也遇到了使用Bitdefender的同样问题。 - Rogelio Blanco

7

对我来说,问题出在设置中的“拼写检查提交消息”选项。即使单击勾号也需要20秒才能处理,但这是我遇到的最后一个冻结。


1
+1 超级随机,但是我从几个版本之前就一直遇到问题,即使只有几个仓库,这完全解决了我的问题。 - Matt Brunmeier

6
源代码库的票务系统中有一个关于类似问题的票,已经得到解决。 http://www.lifehacker.com.au/2015/01/6-month-old-critical-performance-bug-with-sourcetree-is-getting-attention/ 我从未同时使用过这么多仓库,因此认为sourcetree不能处理每次切换标签时这么多数据。我认为sourcetree需要刷新数据,并从磁盘页面文件中读取和构建您的数据。
尝试使用较少的项目,看看是否仍然存在相同的问题。
如果您仍然遇到性能问题,请在您的仓库上运行垃圾回收器(gc),然后再测试一下。 git gc --aggressive可以缩小存储库大小。

'git gc --aggressive' 没有带来显著的改善,但也没有造成任何损害。 - Dimitri Dewaele
更新:在“垃圾回收”后看到了一些改善,但并不是非常显著。 - Dimitri Dewaele
1
SourceTree 又变慢了...我想念旧版本 :( - Azimuth

4

通过以下方法可以提高性能:

  1. https://git-scm.com/download/win下载最新的 git exe 安装文件
  2. 配置选项 > Git > 选择 使用系统 Git 而不是 使用嵌入式 Git

我已经使用过git系统,但从2.13.2更新到2.20.1有所帮助。现在的SourceTree比以前快得多,之前需要等待几秒钟才能检测到单个文件上的几行更改。我无法解释原因,因为只有3个仓库被打开,而我当前打开的那个很小。 - Lion

2

这可能会帮助其他人。我在使用SourceTree 1.6.x和git 1.9.x时遇到了响应缓慢的问题。将git降级到1.8.3,将SourceTree降级到1.5.2可以解决问题。


1.5.2版本的下载链接:http://downloads.atlassian.com/software/sourcetree/windows/SourceTreeSetup_1.5.2.exe - Peet Brits
我写了一篇长篇博客文章,讲述了如何降级,但保持嵌入式git/hg的最新状态(旧的git/hg存在严重的安全问题):http://wiert.me/2015/01/15/downgrading-to-sourcetree-1-5-x-from-1-6-x-but-keeping-up-with-the-youngest-embedded-git-and-mercurial/ - Jeroen Wiert Pluimers
最终,我改用TortoiseGit软件。SourceTree没有提供任何解决慢的问题的方案。 - Fabiano Araujo

1
  1. 如果可能的话,将git文件夹移动到SSD驱动器上(这显著提高了我的SourceTree性能)。

  2. 避免有很多隐藏的更改,这会导致SourceTree非常缓慢。


我该如何做第一个? - Azimuth
1
删除暂存区有所帮助。但为什么呢? - Danyal Aytekin
删除暂存区对我也有帮助。不过,我只在几个仓库中有3个暂存区。 - Rvy Pandey

1

简述:

选项1:(继续使用SourceTree): SourceTree进行长时间的彻底刷新。可以通过将筛选器设置为“修改”来关闭。(对于我来说,我不得不反复设置一次才能生效)。

enter image description here

选项2:(使用Tower/CLI并设置showUntrackedFiles)

选项3:(使用Tower/CLI和Scalar)。

Microsoft提供了一种改善仓库性能的解决方案:Scalar

详细版: 在一个大型仓库中(有许多文件),出现了这个问题。进行了调查,并找到了SourceTree缓慢的根本原因。

您可以在命令行中测试此问题:

git status -uall 

vs

git status -uno

如果你发现git的status -uall非常缓慢(和Sourcetree一样慢),那么这很可能是罪魁祸首。
Sourcetree在进行状态刷新时总是使用-uall
有一种方法可以配置你的git配置文件,使其在运行git status时始终跳过搜索未跟踪的文件:
git config --local status.showUntrackedFiles no

问题在于SourceTree不遵守这个标志(而其他工具如Tower则遵守它)。
更多信息可以在此处找到(在status.showUntrackedFiles部分下): https://git-scm.com/docs/git-config 以及在此处(在--untracked-files[=<mode>]部分下): https://git-scm.com/docs/git-status 注意:将showUntrackedFiles属性设置为no会意味着当您添加新文件时,除非您显式地使用-uall参数运行它,否则它不会被git status检测到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接