TortoiseSVN文件夾及文件圖標(biāo)不顯示問題解決方法(兼容xp、window7與64位)
最近遇到TortoiseSVN圖標(biāo)(如上圖:增加文件圖標(biāo)、文件同步完成圖標(biāo)等)不顯示問題,網(wǎng)上找到的解決方法試了很多都無法真正解決,最后總結(jié)了一下,找到了終極解決方案,當(dāng)然此方案也有弊端,接下來我們就
最近遇到TortoiseSVN圖標(biāo)(如上圖:增加文件圖標(biāo)、文件同步完成圖標(biāo)等)不顯示問題,網(wǎng)上找到的解決方法試了很多都無法真正解決,最后總結(jié)了一下,找到了終極解決方案,當(dāng)然此方案也有弊端,接下來我們就研究、分析、解決這個問題。打開資源管理器,怎么都看不到已經(jīng)同步的文件夾顯示已同步圖標(biāo)。到SVN的設(shè)置面板,也找不到任何相關(guān)的解決辦法。
不過有一天,使用DW瀏覽文件,定位到文件,這時候發(fā)現(xiàn)了已同步圖標(biāo)。這就更讓人疑惑了,但是最起碼證明,圖標(biāo)文件沒有丟失,只是因為某種原因,沒辦法顯示出來,那就有可能是軟件沖突了??墒墙谄咂甙税搜b了不少東西,到底是哪個的原因呢?
不明原因,所以,百度google之,發(fā)現(xiàn)還是挺多人遇到這情況的,現(xiàn)摘錄如下:
“開始以為是TortoiseSVN壞了,于是重裝,但結(jié)果還是一樣。于是找了好多資料,終于發(fā)現(xiàn)癥結(jié)所在--原來是Windows對覆蓋圖標(biāo)類型的數(shù)據(jù) 限制的原因。Windows最多只允許15個覆蓋圖標(biāo),它自己又用了幾個,結(jié)果給用戶用的就11個左右了(這個限制一直都Windows 7都沒有放寬,真不知微軟是怎么想的)。TortoiseSVN標(biāo)準(zhǔn)會使用7個(普通圖標(biāo)、已修改圖標(biāo)、沖突指示圖標(biāo)、已刪除圖標(biāo)、新增文件圖標(biāo)、忽略圖 標(biāo)、未版本化圖標(biāo)等),這樣剩下可用的就少之又少了。如果再安裝了網(wǎng)盤軟件(如:快盤,Dropbox等),那就更慘了,它們各自又會使用3個左右的覆蓋 圖標(biāo),這樣,覆蓋圖標(biāo)當(dāng)然遠(yuǎn)遠(yuǎn)不夠用了。那么,覆蓋圖標(biāo)的設(shè)置保存在Windows的哪個地方呢?如果有超過11個的覆蓋圖標(biāo),Windows如何選擇顯示哪些屏蔽哪些呢?下面繼續(xù)…所有應(yīng)用程序的覆蓋圖標(biāo)都需要在注冊表“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionExplorerShellIconOverlayIdentifiers下面增加一個項目,當(dāng)需要顯示覆蓋圖標(biāo) 時,Windows會按照項目名稱的字母順利依次查詢在這些項目里所指示的接口,以檢測是否有覆蓋圖標(biāo),當(dāng)檢測到11個有效的接口后,Windows就會 自動停止繼續(xù)向下檢測,這樣,后來的覆蓋圖標(biāo)就不會顯示了。知道原理了,解決問題就好辦了。我們可以分析一下在這個注冊表項下的所有項目,看哪些覆蓋圖標(biāo)是需要的,哪些是不需要的,把不需要的項目的名稱改一下,前 面加個“z,這樣,這個表項按字母排序就自動排到最后面了。哪些是不需要的呢?比如:網(wǎng)盤的“正在同步圖標(biāo)就沒什么用,可以去掉。其它的,可以自己看 著辦了。如果你進(jìn)行調(diào)整后,把TortoiseSVN的所有覆蓋圖標(biāo)全部提前,但TortoiseSVN仍然不會顯示忽略圖標(biāo)、未版本化圖標(biāo)。為什么呢?研 究了TortoiseSVN的源代碼才發(fā)現(xiàn),原來TortoiseSVN會自己分析在ShellIconOverlayIdentifiers中注冊的覆 蓋圖標(biāo)數(shù),如果注冊了太多,TortoiseSVN會自動屏蔽一些無關(guān)緊要的圖標(biāo),目的是讓別人軟件的覆蓋圖標(biāo)盡可能有機(jī)會顯示。也就是說,如果你希望, 顯示TortoiseSVN的這些它自己認(rèn)為“無關(guān)緊要的覆蓋圖標(biāo),你需要刪除一些別的程序的圖標(biāo),把覆蓋圖標(biāo)的總數(shù)減小到13個以下,這 時,TortoiseSVN才會正常顯示忽略圖標(biāo)、未版本化圖標(biāo)等無關(guān)緊要的圖標(biāo)。
----------------------- 分割線 -------------------------------------------------------
對于我自己機(jī)器, 看了下注冊表,ShellIconOverlayIdentifiers的目錄樹如下:
!!!BoxFlashSyncExt1 !!!BoxFlashSyncExt2 !!!BoxFlashSyncExt3 !!!BoxFlashSyncExt4!IconOverlay_Conflict!IconOverlay_ForbidSync!IconOverlay_LargeFile!IconOverlay_Synced!IconOverlay_Syncing.KLive_OverlayIcon_ForbidSync.KLive_OverlayIcon_Synced.KLive_OverlayIcon_Syncing1TortoiseNormal2TortoiseModified360UDiskGuard Icon Overlay3TortoiseConflict4TortoiseLocked5TortoiseReadOnly
...
...
怪不顯示不出SVN的圖標(biāo)呢,在SVN要overlay icon前面有好多個野蠻的icon,酷盤、115 、快盤三個網(wǎng)盤也是想盡了千方百計讓自己的overlay icon能夠被顯示出來。居然連感嘆號,空格都用上了。
酷盤對應(yīng)的overlayicon為:
!!!BoxFlashSyncExt1 !!!BoxFlashSyncExt2 !!!BoxFlashSyncExt3 !!!BoxFlashSyncExt4
115 對應(yīng)的overlayicon為:
!IconOverlay_Conflict!IconOverlay_ForbidSync!IconOverlay_LargeFile!IconOverlay_Synced!IconOverlay_Syncing
快盤對應(yīng)的overlayicon為:
.KLive_OverlayIcon_ForbidSync.KLive_OverlayIcon_Synced.KLive_OverlayIcon_Syncing
既然知道原理了,那就挨個把網(wǎng)盤干掉吧。
其中:115網(wǎng)盤屬于半綠色安裝,因為只有Sync115Ext.dll (在C:Users用戶名AppDataRoaming115Box) 被注冊,它正在shell overlay icon對應(yīng)的dll,因此,只需要將它反注冊一下就可以了:regsvr32 /u Sync115Ext.dll。
經(jīng)過卸載,ShellIconOverlayIdentifiers的目錄樹終于干凈了,目錄樹如下:
1TortoiseNormal2TortoiseModified360UDiskGuard Icon Overlay3TortoiseConflict4TortoiseLocked5TortoiseReadOnly
...
...
最后,重啟一下,或注銷一下,SVN圖標(biāo)終于重建天日。
最后終極解決方案:
在網(wǎng)上有部分解決方案是更改SVN圖標(biāo)名稱,讓其排序靠前來解決此問題,但是在window xp下我通過此方法無法解決此問題,猜測應(yīng)該是即使SVN圖標(biāo)排序靠前,但是SVN仍然會將自己的圖標(biāo)優(yōu)先權(quán)讓給其他軟件,所以最有效的解決方案是刪除所有其他軟件的圖標(biāo),只留下SVN的圖標(biāo),但是此方法的弊端是360云盤、百度云盤等其他軟件無法顯示圖標(biāo),所以具體如何解決此方案,還是大家自己權(quán)衡吧!
1、 到C:Windows文件夾下,打開regedit.exe2、 Ctrl+F,搜索“ShellIconOverlayIdentifiers3、 把ShellIconOverlayIdentifiers下面的節(jié)點非SVN的全部刪除即可。最終效果如下圖
3、刪除完其他軟件的節(jié)點后,可以重啟電腦或者在任務(wù)管理器中結(jié)束explorer.exe進(jìn)程(如下圖),
然后在任務(wù)管理器中重新開啟explorer.exe進(jìn)程,如下圖,單擊任務(wù)管理器->文件->新建任務(wù)(運(yùn)行...
然后進(jìn)入下圖窗口,
在打開中輸入:C:WINDOWSexplorer.exe 單擊確定即可!完成上述操作,再次打開SVN客戶端目錄,刷新就可以看到圖標(biāo)了,祝你好運(yùn)!
Win7 64位下TortoiseSVN的文件夾及文件SVN圖標(biāo)不顯示正確解決方法
最近為了代碼版本管理,安裝了SVN服務(wù)端與客戶端,安裝TortoiseSVN之后,功能正常,但是就是文件夾或文件夾的左下角就是不顯示SVN圖標(biāo),之前在XP上是正常顯示的。通過網(wǎng)絡(luò)查找,發(fā)現(xiàn)以下方法可以解決問題。
Windows Explorer Shell 支持的 Overlay Icon 最多 15 個,Windows 自身使用了 4 個,只剩 11 個可擴(kuò)展使用,可能這 11 個位置部分可能被其他的軟件占用了,導(dǎo)致 TortoiseSVN的某些重要的圖標(biāo)不顯示了。不過,可以重新命名以調(diào)整 Tortoise 圖標(biāo)名稱的字母順序,讓SVN的排在前面,Windows 內(nèi)部就是按圖標(biāo)名稱的字母順序來優(yōu)先顯示的。
第一:
輸入:win+R,(開始->運(yùn)行)輸入regedit.exe,調(diào)出注冊表管理器
(1)按下Ctrl+F,在注冊表里搜索 ShellIconOverlayIdentifiers(2)或是查找: HKEY_LOCAL_MACHINE -> SOFTWARE -> Microsoft -> Windows -> CurrentVersion -> Explorer -> ShellIconOverlayIdentifiers
第二:將TortoiseAdded、TortoiseConflict……TortoiseUnversioned 右鍵->重命名,如命名為:0TortoiseAdded、1TortoiseConflict……8TortoiseUnversioned。如下圖:
第三: 重啟或是注銷電腦之后,最后文件夾連接服務(wù)器后有了圖標(biāo)