SourceTree 非常慢,有很多存储库

SourceTree very slow with many repositories

我每天都在做很多小项目,需要经常切换。

从 SourceTree 中的 "Tab" 切换非常慢。有时长达 15 秒。我怎样才能改善这种行为?

源树票证系统有一个关于已修复的类似错误的票证。 http://www.lifehacker.com.au/2015/01/6-month-old-critical-performance-bug-with-sourcetree-is-getting-attention/

我从来没有一次使用过这么多的存储库,并且假设 sourcetree 不是为处理每次切换选项卡时处理这么多数据而构建的。我假设 sourcetree 需要刷新数据并从磁盘页面文件中读取和构建数据。

尝试少用项目看看还是一样的问题

如果您仍然遇到性能不足的问题,请尝试 运行 在您的存储库上进行 gc(垃圾收集器)并再次测试。

git gc --aggressive 缩小存储库大小。

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

我知道这是一个老问题,但你也可以试试这个:

$ git config --global core.preloadindex true
$ git config --global core.fscache true
$ git config --global gc.auto 256

其次,这里有一个 post 解释 git gc --aggressive may not be a great idea

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

我发现我的杀毒软件 (avast) 是问题所在。我禁用了文件保护,源代码树立即生效。

我也有这个问题。我也有 avast,这对我有用,可能对你有用,也许对不同的 AV 也有用。但是我添加了 C:\Users\YOURNAME\AppData\Local\Atlassian\ 到我的 avast exclusions 目录,现在 运行 快多了!

执行规定的 git 命令对我来说没有用。最终真正加速 SourceTree 的是 在工具 > 选项菜单中禁用 'spell check commit messages'。我也禁用了 'load avatar images from gravatar.com' 选项。

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

  2. 避免有很多存储,这真的会减慢 SourceTree 的速度。

对我来说,是设置中的 'spell check commit messages' 选项。即使点击勾号也需要 20 秒来处理,但这是我经历的最后一次冻结。

对我来说,问题是我有很多未跟踪的文件。修改了我的 .gitignore 和 SourceTree 停止变慢

通过

提高了性能
  1. https://git-scm.com/download/win
  2. 安装最新的 git exe
  3. 配置选项 > Git > Use System Git 改为 Use Embedded Git

2017 年 6 月发布的最新版本 2.1.2.5 对我来说 运行 狗慢,即使在今天之前尝试了这里的所有答案(即使只有 1 个项目)。

显然,.gitconfig 是在首次安装 SourceTree 时写入网络驱动器 (H:) 的。这就是让我瞬间获得性能的原因:

  1. 将 .gitconfig 移动到本地 SSD (C:)

  2. 设置 HOME 变量。在环境变量(特别是用户变量)中,将 HOME 设置为 C: 的值(或您决定设置的任何其他路径)。

TL;DR:

选项 1:(继续使用 SourceTree): SourceTree 做长期彻底的刷新。可以通过将过滤器设置为“已修改”来关闭。 (对于我来说,我必须来回设置一次才能生效)。

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

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

Microsoft 有提高回购性能的解决方案:Scalar

长版: 大型存储库(有很多文件)有这个问题。调查并找到了 SourceTree 运行缓慢的根本原因。

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

git status -uall 

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

注意:在您的回购协议的 git 配置文件中将 showUntrackedFiles 属性 设置为 no 将意味着当您添加一个新文件时,它不会被git status 除非你用 -uall 参数明确地 运行 它。