TSVNCache.exe

I found today that after checking out a new, very large repository, my hard drive started to clatter a lot. I then checked my processes in my Windows Task Manager, using TortoiseSVN and found the process TSVNCache.exe was using quite a bit of CPU and Memory. That then lead me to investigate what this process was doing and what I could do in order to stop it.

So, what this process was doing was checking through my checkout of the repository and figuring out the display overlays. The display overlays are those fancy green check marks, red x's, exclamation signs and other overlays that tell you the current condition of your files and folders are in. I was wondering what I could do, and because the process was really bogging me down, the first thing I had to do was kill the process.

I found that if your go to the TortoiseSVN settings, by right clicking on a checkout folder, going to TortoiseSVN => Settings => Look and Feel => Icon Overlays you have the option for the status cache. The three options are Default, Shell and None.

Here are the explanations of each:
Default

Caches all status information in a separate process (TSVNCache.exe). That process watches all drives for changes and fetches the status again if files inside a working copy get modified. The process runs with the least possible priority so other programs don't get hogged because of it. That also means that the status information is not realtime but it can take a few seconds for the overlays to change.

Advantage: the overlays show the status recursively, i.e. if a file deep inside a working copy is modified, all folders up to the working copy root will also show the modified overlay. And since the process can send notifications to the shell, the overlays on the left treeview usually change too.

Disadvantage: the process runs constantly, even if you're not working on your projects. It also uses around 10-50 MB of RAM depending on number and size of your working copies.

Shell

Caching is done directly inside the shell extension dll, but only for the currently visible folder. Each time you navigate to another folder, the status information is fetched again.

Advantage: needs only very little memory (around 1 MB of RAM) and can show the status in realtime.

Disadvantage: Since only one folder is cached, the overlays don't show the status recursively. For big working copies, it can take more time to show a folder in explorer than with the default cache. Also the mime-type column is not available.

None

With this setting, the TortoiseSVN does not fetch the status at all in Explorer. Because of that, files don't get an overlay and folders only get a 'normal' overlay if they're versioned. No other overlays are shown, and no extra columns are available either.

Advantage: uses absolutely no additional memory and does not slow down the Explorer at all while browsing.

Disadvantage: Status information of files and folders is not shown in Explorer. To see if your working copies are modified, you have to use the "Check for modifications" dialog.

The first setting that I changed to was the None caching setting. Then further down in the Look and Feel page I found that you could exclude certain folders and opted for excluding the large checkout folder until I find what areas are causing the large amount of hard drive chatter. The downside of this is that I no longer have those very useful icon overlays for this checkout but I was able to change my caching back to default for the rest of my checkouts.

Comments

Cant see status icons

Hi anyone can help me out? i cant see status icon and it show default folder icon. Alos i noticed that TSVNcashe.exe not in process list. Anyone can help me regarding this?
Thanx,

Kosala

This happened to me once

This happened to me once when I installed subversion on my local machine and ran the svn update via command prompt. Also, Tortoise SVN quite working for that checkout and I had to check out the repository again.

Sweet

This is very useful information. I noticed too that once I had a very large checkout my hard drive was chattering like a pissed off squirrel. I found this process as well and just killed it (subsequently stuffing a nut in the squirrel's mouth) and didn't think much else of it. But it kept popping up every time I would do a commit and it was getting very annoying. I didn't look into it much further since I started using my Mac for development, (so chalk this up to another benefit of the Mac) but now that you've done the research I'll be able to take care of this quickly and quietly when it happens again on my windoze machine. Thanks!