關於SVN更新慢的解決方法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
原因
SVN的cache監視消耗著時間
把所有狀態資訊快取在一個獨立程序中(TSVNCache.exe)。該程序監視所有驅動器的更改,並在工作副本中的檔案被修改時重新獲取其狀態。該程序以最低優先順序執行,所以其他程式不會被它擠兌。這同樣意味著狀態資訊並不是
優點: 圖示覆蓋遞迴地顯示狀態,就是說,如果一個處在工作副本深處的檔案被修改了,所有途徑的資料夾包括工作副本的根目錄都會顯示出修改的圖示覆蓋。也因為該程序可以向Windows外殼傳送通知,資源管理器左面的樹形圖通常也會更改。
缺點: 即使你已經不在專案下工作了,該程序仍然持續執行。取決於你工作副本的數量和大小,它將佔用10-50 MB的RAM記憶體空間。
解決方法
方法1:
關閉SVN的cache監視。即關閉tsvncache.exe這個程式對目錄的監視。
具體操作步驟如下:
a) 右擊任意目錄開啟右鍵選單,開啟"tortoisesvn" => "settings"下的設定視窗
b) 找到"icon overlays"的設定項,將"status cache"設定成"none"
方法2:
VN的cache監視設定為shell 或default,新增包含或者排除目錄。
具體操作步驟如下:
a) 右擊任意目錄開啟右鍵選單,開啟"tortoisesvn" => "settings"下的設定視窗
b) 找到"exclude path"的設定項,新增排除的目錄或在"include path"的設定項新增包含目錄
設定後將看不到更改顯示圖示,需要使用以下方法檢視差異
使用SVN的“check for modifications”顯示差異
具體操作步驟如下:
a) 右擊需要比較差異的目錄,開啟右鍵選單,開啟"tortoisesvn" => "check for modifications",開啟比較差異視窗
注:這樣顯示檔案差異是因為上面關閉監視後,再有修改程式檔案,資料夾不再更新修改標識了,無法再通過檢視檔案平圖示來知道是否有檔案修改。
SVN ICON OVERLAYS設定頁面詳解
此頁面允許你選擇TSVN為哪些條目顯示圖示覆蓋。選擇網路磁碟可能會非常慢,所以預設情況下不為定位於網路共享中的工作副本顯示圖示覆蓋。你甚至可以取消所有的圖示覆蓋,但那樣做還剩下什麼好玩兒的呢?
USB快閃記憶體看上去是個特殊情況,因為驅動型別是裝置自主標識的。於是有些顯示為固定驅動器,而有些顯示為可移動磁碟。
預設
把所有狀態資訊快取在一個獨立程序中(TSVNCache.exe)。該程序監視所有驅動器的更改,並在工作副本中的檔案被修改時重新獲取其狀態。該程序以最低優先順序執行,所以其他程式不會被它擠兌。這同樣意味著狀態資訊並不是 實時 的,因為它需要幾秒鐘時間處理圖示覆蓋的變化。
優點: 圖示覆蓋遞迴地顯示狀態,就是說,如果一個處在工作副本深處的檔案被修改了,所有途徑的資料夾包括工作副本的根目錄都會顯示出修改的圖示覆蓋。也因為該程序可以向Windows外殼傳送通知,資源管理器左面的樹形圖通常也會更改。
缺點: 即使你已經不在專案下工作了,該程序仍然持續執行。取決於你工作副本的數量和大小,它將佔用10-50 MB的RAM記憶體空間。
Windows 外殼
快取在外殼擴充套件dll中直接完成,但僅僅是為那些當前可見的資料夾。每次你瀏覽到其他資料夾,狀態資訊就會被重新獲取。
優點: 僅僅需要很少的記憶體(大約1 MB),並且可以 實時 顯示狀態。
缺點: 因為僅有一個資料夾被快取,圖示覆蓋不會遞迴地顯示狀態。在大一些的工作副本下,它在瀏覽器中顯示一個資料夾將比預設快取模式花費更多時間。而且 mime-type 列將無效。
無
在這種設定下,TSVN在瀏覽器裡就完全不去獲取狀態了。因此,版本控制下的檔案將不會獲得任何圖示覆蓋。資料夾也僅僅有個“正常”狀態的圖示覆蓋,其他的不會顯示,也不會有其他額外的列可用。
優點: 絕對不會佔用任何額外的記憶體,也完全不會減慢瀏覽器的瀏覽速度。
缺點: 檔案、資料夾的狀態資訊不會顯示在瀏覽器中。要獲知你的工作副本是否被修改了,你需要使用“檢查更新”對話方塊。
若你選擇了預設選項,將同樣決定如下選擇: 在資料夾包含非版本控制的專案時,把資料夾圖示覆蓋標記為已修改。這個有用的設定可以提醒你已經建立了非版本控制的新檔案。
排除路徑 是被用來告訴TSVN 不用 在哪些路徑下顯示圖示覆蓋和狀態列。如果你有些很大的工作副本,而這些工作副本僅僅包含你完全不想改變的庫檔案,從而你也不需要顯示圖示覆蓋,這時該功能將會很有用。舉個例子:
填寫 f:/development/SVN/Subversion 將 僅僅 在這個特殊資料夾上取消圖示覆蓋。你仍然可以在該路徑下的所有檔案、資料夾上看到圖示覆蓋。
填寫 f:/development/SVN/Subversion* 將在路徑以 f:/development/SVN/Subversion 開始的 所有 檔案和資料夾上取消圖示覆蓋。這意味著你在該路徑下的任何檔案/資料夾上都將看不到圖示覆蓋了。
包含路徑 也使用同樣的語法。除了有些反例: 即使該路徑處在某個取消圖示覆蓋顯示的特定驅動型別下,或是處在上面的排除路徑之下,也依然會顯示圖示覆蓋。
TSVNCache.exe 同樣使用這些路徑來限制它的掃描。如果你想讓它僅僅在某些特定資料夾裡監視,就取消所有的驅動器型別,並僅僅包含你允許被掃描的資料夾。