PS:最近发现TortoiseSVN的覆盖图标消失了,打开资源管理器,怎么都看不到已经同步的文件夹显示已同步图标。到SVN的设置面板,也找不到任何相关的解决办法。
-
症结所在
许多图形用户界面软件如网盘工具和版本管理工具可以在Windows资源管理器扩展中添加自定义的覆盖图标(overlay icon),实现类似内置快捷方式箭头的显示效果来直观地指示文件等项目的状态。但由于Windows资源管理器自身对图标种类数的限制,Windows最多只允许15个覆盖图标,它自己又用了几个,结果给用户用的就11个左右了(这个限制一直都Windows 7都没有放宽,真不知微软是怎么想的)。TortoiseSVN标准会使用7个(普通图标、已修改图标、冲突指示图标、已删除图标、新增文件图标、忽略图标、未版本化图标等),这样剩下可用的就少之又少了。如果再安装了网盘软件(如:快盘,Dropbox等),那就更惨了,它们各自又会使用3个左右的覆盖图标,这样,覆盖图标当然远远不够用了,安装过多时无法全部显示.
-
Windows上覆盖图标的保存设置
-
按Win+R打开运行窗口,输入regedit回车,打开注册表管理器
-
定位到注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers。可以观察到标识显示图标的项目
-
-
修改项目名称,调整载入图标的顺序
观察项的名称,可知一般和提供图标的软件有明显的关联(这里有Link Shell Extension、TortoiseGit、360U盘提示图标等)。这里显示的顺序即为载入图标的顺序,把想要保留的项的名称前加若干个空格使其字典序尽量靠前即可。
提示:如果你进行调整后,把TortoiseSVN的所有覆盖图标全部提前,但TortoiseSVN仍然不会显示忽略图标、未版本化图标。为什么呢?研究了TortoiseSVN的源代码才发现,原来TortoiseSVN会自己分析在ShellIconOverlayIdentifiers中注册的覆盖图标数,如果注册了太多,TortoiseSVN会自动屏蔽一些无关紧要的图标,目的是让别人软件的覆盖图标尽可能有机会显示。也就是说,如果你希望,显示TortoiseSVN的这些它自己认为“无关紧要”的覆盖图标,你需要删除一些别的程序的图标,把覆盖图标的总数减小到13个以下,这时,TortoiseSVN才会正常显示忽略图标、未版本化图标等无关紧要的图标 - 结束资源管理器进程explorer.exe然后再重新运行!或重新登录Windows后即可观察到效果。
参考:
1.Windows资源管理器覆盖图标过多时的变通处理