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圖標終於重建天日。

相關文章
相關標籤/搜索