SVN状态图标消失的解决办法

1、

因为本身的电脑是win7(64位)的,系统安装TortoiseSVN以后,其余的功能都能正常的使用,可是就是文件夹或文件夹的左下角就是不显示图标,这个问题前一段时间就遇到了(那个时候没找到合适的答案),这段时间从新学习svn 的使用,这个问题没解决,不舒服,没有了图标,就像打仗没有了旗帜同样: shell

 

        对于SVN来讲,由于每一个图标都表明着不一样的含义,预示着不一样的状态,是指示灯的做用,若是没有正确的图标极可能形成数据的丢失等 服务器

 

今天算是找到了问题的解决方法; svn

第一: 学习

   输入:win+R,输入regedit,调出注册表信息,按下Ctrl+F,在注册表里搜索“ShellIconOverlayIdentifiers” google

3。将TortoiseAdded、TortoiseConflict……TortoiseUnversioned分别重命名,命名为0TortoiseAdded、1TortoiseConflict……8TortoiseUnversioned。以下图:
spa

重启电脑更新注册表以后,最后文件夹链接服务器后有了图标 orm

     原理:Windows Explorer Shell 支持的 Overlay Icon 最多 15 个,Windows 自身使用了 4 个,只剩 11 个可扩展使用,若是你以前还安装诸如 Groove 这样的软件,可能这 11 个位置都被他们剥夺了,轮不到 Tortoise 了。不过,仍是能够给 Tortoise 优先腾出位置的:调整 Tortoise 图标名称的字母顺序。由于 Windows 内部就是按图标名称的字母顺序来优先显示的。 排序

      遇到问题不急不躁,踏踏实实的寻找解决问题的方案! 接口


2、

最近发现TortoiseSVN的覆盖图标消失了,打开资源管理器,怎么都看不到已经同步的文件夹显示已同步图标。到SVN的设置面板,也找不到任何相关的解决办法。

不过有一天,使用DW浏览文件,定位到文件,这时候发现了已同步图标。这就更让人疑惑了,可是最起码证实,图标文件没有丢失,只是由于某种缘由,没办法显示出来,那就有多是软件冲突了。
但是近期七七八八装了很多东西,究竟是哪一个的缘由呢?

不明缘由,因此,百度google之,发现仍是挺多人遇到这状况的,现摘录以下:

“开始觉得是TortoiseSVN坏了,因而重装,但结果仍是同样。因而找了好多资料,终于发现症结所在--原来是Windows对覆盖图标类型的数据限制的缘由。Windows最多只容许15个覆盖图标,它本身又用了几个,结果给用户用的就11个左右了(这个限制一直都Windows 7都没有放宽,真不知微软是怎么想的)。TortoiseSVN标准会使用7个(普通图标、已修改图标、冲突指示图标、已删除图标、新增文件图标、忽略图标、未版本化图标等),这样剩下可用的就少之又少了。若是再安装了网盘软件(如:快盘,Dropbox等),那就更惨了,它们各自又会使用3个左右的覆盖图标,这样,覆盖图标固然远远不够用了。
那么,覆盖图标的设置保存在Windows的哪一个地方呢?若是有超过11个的覆盖图标,Windows如何选择显示哪些屏蔽哪些呢?下面继续…
全部应用程序的覆盖图标都须要在注册表“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers”下面增长一个项目,当须要显示覆盖图标时,Windows会按照项目名称的字母顺利依次查询在这些项目里所指示的接口,以检测是否有覆盖图标,当检测到11个有效的接口后,Windows就会自动中止继续向下检测,这样,后来的覆盖图标就不会显示了。
知道原理了,解决问题就好办了。咱们能够分析一下在这个注册表项下的全部项目,看哪些覆盖图标是须要的,哪些是不须要的,把不须要的项目的名称改一下,前面加个“z”,这样,这个表项按字母排序就自动排到最后面了。哪些是不须要的呢?好比:网盘的“正在同步图标”就没什么用,能够去掉。其它的,能够本身看着办了。
ci

若是你进行调整后,把TortoiseSVN的全部覆盖图标所有提早,但TortoiseSVN仍然不会显示忽略图标、未版本化图标。为何呢?研究了TortoiseSVN的源代码才发现,原来TortoiseSVN会本身分析在ShellIconOverlayIdentifiers中注册的覆盖图标数,若是注册了太多,TortoiseSVN会自动屏蔽一些可有可无的图标,目的是让别人软件的覆盖图标尽量有机会显示。也就是说,若是你但愿,显示TortoiseSVN的这些它本身认为“可有可无”的覆盖图标,你须要删除一些别的程序的图标,把覆盖图标的总数减少到13个如下,这时,TortoiseSVN才会正常显示忽略图标、未版本化图标等可有可无的图标。”


----------------------------------------------------------------------------------分割线---------------------------------------------------------------------------------------------

对于我本身机器, 看了下注册表,ShellIconOverlayIdentifiers的目录树以下:

    !!!BoxFlashSyncExt1
    !!!BoxFlashSyncExt2
    !!!BoxFlashSyncExt3
    !!!BoxFlashSyncExt4
!IconOverlay_Conflict
!IconOverlay_ForbidSync
!IconOverlay_LargeFile
!IconOverlay_Synced
!IconOverlay_Syncing
.KLive_OverlayIcon_ForbidSync
.KLive_OverlayIcon_Synced
.KLive_OverlayIcon_Syncing
1TortoiseNormal
2TortoiseModified
360UDiskGuard Icon Overlay
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly

...

...

怪不显示不出SVN的图标呢,在SVN要overlay icon前面有好多个野蛮的icon,酷盘、115 、快盘三个网盘也是想尽了想方设法让本身的overlay icon可以被显示出来。竟然连感叹号,空格都用上了。

酷盘对应的overlayicon为:

    !!!BoxFlashSyncExt1
    !!!BoxFlashSyncExt2
    !!!BoxFlashSyncExt3
    !!!BoxFlashSyncExt4


115 对应的overlayicon为:

!IconOverlay_Conflict
!IconOverlay_ForbidSync
!IconOverlay_LargeFile
!IconOverlay_Synced
!IconOverlay_Syncing


快盘对应的overlayicon为:

.KLive_OverlayIcon_ForbidSync
.KLive_OverlayIcon_Synced
.KLive_OverlayIcon_Syncing

既然知道原理了,那就挨个把网盘干掉吧。

其中:115网盘属于半绿色安装,由于只有Sync115Ext.dll (在C:\Users\用户名\AppData\Roaming\115\Box) 被注册,它正在shell overlay icon对应的dll,所以,只须要将它反注册一下就能够了:regsvr32 /u Sync115Ext.dll。

通过卸载,ShellIconOverlayIdentifiers的目录树终于干净了,目录树以下:

1TortoiseNormal
2TortoiseModified
360UDiskGuard Icon Overlay
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly

...

...

最后,重启一下,或注销一下,SVN图标终于重建天日。