Skip to content
GitLab
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    Projects Groups Topics Snippets
  • Register
  • Sign in
  • TortoiseGit TortoiseGit
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 380
    • Issues 380
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 16
    • Merge requests 16
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • TortoiseGitTortoiseGit
  • TortoiseGitTortoiseGit
  • Issues
  • #2891
Closed
Open
Issue created Dec 14, 2016 by tophf@tophf

"Show log" on a repo with 200k files is extremely slow due to each file attributes being queried individually

What steps will reproduce the problem?

  1. Clone and checkout a repo with 200k+ files like https://github.com/chromium/chromium
  2. Invoke TortoiseGit's Show log

What is the expected output?

The log is shown immediately

What do you see instead?

The log is shown after 1-10 minutes depending on the drive speed, SysInternals ProcMon shows TortoiseGit performs attribute query for each of 200k+ files individually instead of bulk reading the directories entirely, which should happen, if I remember correctly, when using FindFirstFile WINAPI (or whatever method other programs are using, for which ProcMon shows that only a single actual IO operation was performed on the directory itself).

What version of TortoiseGit and Git are you using? On what operating system?

TortoiseGit 2.3.0.0 x64
git 2.10.0 x64 from https://git-for-windows.github.io/ Windows 7 SP1 x64

Please provide any additional information below.

Switching to the fast reading of directories won't be sufficient to make Show log instantaneous though. Apparently, the files are being checked to show their status/icons in "Working tree changes". However, I see no need to check the entire source directory recursively in a blocking fashion preemptively. Why not do it in a background thread? Or don't do it at all until the user wants to see "Working tree changes"?

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking