Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

All TortoiseSVN actions from the context menu are very slow

Every TortoiseSVN action I take from the context menu in Windows Explorer is extremely slow. For example, it takes ~91 seconds to open the About dialog. Results are the same for any other TortoiseSVN action I take from the context menu. However, if I login to a local administrator account, I don't have this problem. Additionally, once a TortoiseSVN dialog finally opens, further actions that I take within that dialog don't seem to be slow at all.

I'm running v1.9.5.27834 (and I've tried rolling back to earlier versions.) I have IPv6 disabled across the board. I've uninstalled and reinstalled multiple times, as well as manually removed all applicable %APPDATA% folders and registry keys I could find. I have no mapped network drives.

For what it's worth, I'm on a newly-imaged machine. I have a feeling that the backup restore restored some settings for my user account that are causing some conflict/timeout here (hence my uninstalling and removing %APPDATA%\TortoiseSVN, %APPDATA%\Subversion, etc.)

like image 670
GarlicFries Avatar asked May 23 '17 13:05

GarlicFries


People also ask

Why is SVN so slow?

The key argument is that SVN due to its support for atomic transactions needs to do many more file operations than CVS in order to ensure integrity. This makes it slower than CVS, especially if there is an on-access virus scanner involved.

How do I get rid of TortoiseSVN?

How do I uninstall TortoiseSVN? Simply uninstall from Add/Remove Programs in the Windows control panel. This does not affect your repositories or working copies at all.

What is TortoiseSVN used for?

TortoiseSVN is a Subversion client, implemented as a Microsoft Windows shell extension, that helps programmers manage different versions of the source code for their programs. It is free software released under the GNU General Public License.

Does TortoiseSVN install SVN?

Current versions of TortoiseSVN do not install command-line SVN client by default.


2 Answers

First, try latest nightly for 1.9 branch, next enable ipv6 again, the nightly you use uses ipv6, so disabling is a bad idea.

To see why also the latest nightly of TortoiseSVN is slow you need to install the Windows Performance Toolkit, which is part of the Windows 10 SDK (if you still use Windows 7, use the v1511/Build 10586 SDK, because this is the last version that works on Windows 7, for Windows 8(.1) and Windows 10 use the latest Windows 10 SDK).

enter image description here (all other entries can be unselected)

Run WPRUI.exe, select First Level, CPU Usage and click on start. Now do the slow right click in Explorer and try to go to about dialog, after you did this slow action, click on Save to save the data into a ETL file.

Now double click on the generated ETL file to open the ETL in WPA, setup and load debug symbols in WPA (add the debug symbol server from TortoiseSVN to the dialog in WPA).

Drag & Drop the CPU Usage (Precise) graph to analyse pane

enter image description here

and look for WAIT (µs) max for Explorer.exe in the table view to see that long hang and expand the stack to see where it happens.

Now WPA should show you the function of TSVN take take most time.

One idea is that TSVN tries to detect the last available version but it fails because you disabled ipv6.

like image 94
magicandre1981 Avatar answered Oct 26 '22 11:10

magicandre1981


Usually, Tortoise SVN can be slow because of Icons Overlays:

Every file and folder has a Subversion status value as reported by the Subversion library. In the command line client, these are represented by single letter codes, but in TortoiseSVN they are shown graphically using the icon overlays.

This feature is very resource hungry and turning it off could dramatically increase performance of context actions and the whole system.

Please, refer this guide for disabling it.

Alternatively, you can filter displaying icons only on specific paths. To do that open Settings dialog -> Icon Overlays -> Exclude paths and put

C:\*

Then set the include paths to the path where the working copy is:

C:\users\<username>\projects\someprojectname*
like image 33
grundic Avatar answered Oct 26 '22 11:10

grundic