TortoiseSVN⽂件夹及⽂件图标不显⽰问题解决⽅法(兼
容xp、window7与64位)
最近遇到TortoiseSVN图标(如上图:增加⽂件图标、⽂件同步完成图标等)不显⽰问题,⽹上到的解决⽅法试了很多都⽆法真正解决,最后总结了⼀下,到了终极解决⽅案,当然此⽅案也有弊端,接下来我们就研究、分析、解决这个问题。
郭达的家世打开资源管理器,怎么都看不到已经同步的⽂件夹显⽰已同步图标。到SVN的设置⾯板,也不到任何相关的解决办法。
不过有⼀天,使⽤DW浏览⽂件,定位到⽂件,这时候发现了已同步图标。这就更让⼈疑惑了,但是最起码证明,图标⽂件没有丢失,只是因为某种原因,没办法显⽰出来,那就有可能是软件冲突了。
可是近期七七⼋⼋装了不少东西,到底是哪个的原因呢?
不明原因,所以,百度google之,发现还是挺多⼈遇到这情况的,现摘录如下:
“开始以为是TortoiseSVN坏了,于是重装,但结果还是⼀样。于是了好多资料,终于发现症结所在--原来是Windows对覆盖图标类型的数据限制的原因。Windows最多只允许15个覆盖图标,它⾃⼰⼜⽤了⼏个,结果给⽤户⽤的就11个左右了(这个限制⼀直都Windows 7都没有放宽,真不知微软是怎么想的)。TortoiseSVN标准会使⽤7个(普通图标、已修改图标、冲突指⽰图标、已删除图标、新增⽂件图标、忽略图标、未版本化图标等),这样剩下可⽤的就少之⼜少了。如果再安装了⽹盘软件(如:快盘,Dropbox等),那就更惨了,它们各⾃⼜会使⽤3个左右的覆盖图标,这样,覆盖图标当然远远不够⽤了。
那么,覆盖图标的设置保存在Windows的哪个地⽅呢?如果有超过11个的覆盖图标,Windows如何选择显⽰哪些屏蔽哪些呢?下⾯继续…
所有应⽤程序的覆盖图标都需要在注册表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionExplorerShellIconOverlayIdentifiers”下⾯增加⼀个项⽬,当需要显⽰覆盖图标时,Windows会按照项⽬名称的字母顺利依次查询在这些项⽬⾥所指⽰的接⼝,以检测是否有覆盖图标,当检测到11个有效的接⼝后,Windows就会⾃动停⽌继续向下检测,这样,后来的覆盖图标就不会显⽰了。
知道原理了,解决问题就好办了。我们可以分析⼀下在这个注册表项下的所有项⽬,看哪些覆盖图标是需要的,哪些是不需要的,把不需要的项⽬的名称改⼀下,前⾯加个“z”,这样,这个表项按字母排序就⾃动排到最后⾯了。哪些是不需要的呢?⽐如:⽹盘的“正在同步图标”就没什么⽤,可以去掉。其它的,可以⾃⼰看着办了。
如果你进⾏调整后,把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⽤户名AppDataRoaming115Box) 被注册,它正在shell overlay icon对应的dll,因此,只需要将它反注册⼀下就可以了:regsvr32 /u Sync115Ext.dll。
经过卸载,ShellIconOverlayIdentifiers的⽬录树终于⼲净了,⽬录树如下:
1TortoiseNormal
2TortoiseModified
360UDiskGuard Icon Overlay
3TortoiseConflict
4TortoiseLocked
5TortoiseReadOnly
...
...
最后,重启⼀下,或注销⼀下,SVN图标终于重建天⽇。
最后终极解决⽅案:
在⽹上有部分解决⽅案是更改SVN图标名称,让其排序靠前来解决此问题,但是在window xp下我通过此⽅法⽆法解决此问题,猜测应该是即使SVN图标排序靠前,但是SVN仍然会将⾃⼰的图标优先权让给其他软件,所以最有效的解决⽅案是删除
所有其他软件的图标,只留下SVN的图标,但是此⽅法的弊端是360云盘、百度云盘等其他软件⽆法
显⽰图标,所以具体如何解决此⽅案,还是⼤家⾃⼰权衡吧!
1、到C:Windows⽂件夹下,打开
2、 Ctrl+F,搜索“ShellIconOverlayIdentifiers”
3、把ShellIconOverlayIdentifiers下⾯的节点⾮SVN的全部删除即可。喔喔喔
最终效果如下图
3、删除完其他软件的节点后,可以重启电脑或者在任务管理器中结束进程(如下图),
然后在任务管理器中重新开启进程,如下图,单击任务管理器->⽂件->新建任务(运⾏...
然后进⼊下图窗⼝,
在打开中输⼊: 单击确定即可!
完成上述操作,再次打开SVN客户端⽬录,刷新就可以看到图标了,祝你好运!
Win7 64位下TortoiseSVN的⽂件夹及⽂件SVN图标不显⽰正确解决⽅法
最近为了代码版本管理,安装了SVN服务端与客户端,安装TortoiseSVN之后,功能正常,但是就是⽂件夹或⽂件夹的左下⾓就是不显⽰SVN图标,之前在XP上是正常显⽰的。通过⽹络查,发现以下⽅法可以解决问题。
Windows Explorer Shell ⽀持的 Overlay Icon 最多 15 个,Windows ⾃⾝使⽤了 4 个,只剩 11 个可扩展使⽤,可能这 11 个位置部分可能被其他的软件占⽤了,导致 TortoiseSVN的某些重要的图标不显⽰了。不过,可以重新命名以调整 Tortoise 图标名称的字母顺序,让SVN的排在前⾯,Windows 内部就是按图标名称的字母顺序来优先显⽰的。
五一手抄报简单内容
杨棋涵第⼀:
输⼊:win+R,(开始->运⾏)输⼊,调出注册表管理器
(1)按下Ctrl+F,在注册表⾥搜索 ShellIconOverlayIdentifiers
(2)或是查: HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Explorer -> ShellIconOverlayIdentifiers
第⼆:将TortoiseAdded、TortoiseConflict……TortoiseUnversioned 右键->重命名,如命名为:0TortoiseAdded、
1TortoiseConflict……8TortoiseUnversioned。如下图:
第三:重启或是注销电脑之后,最后⽂件夹连接服务器后有了图标