Search

3/29/2008

如何不被 TortoiseSVN 拖慢系統效率

如何不被 TortoiseSVN 拖慢系統效率

* 不要把你的 working copy,放在網路磁碟機裡。TortoiseSVN 常要作一些複雜的事,好比說 recursive 進去每個子目錄,檢查是否有檔案被更動過,以便顯示 icon overlay。網路磁碟機的運作速度本來就很慢了,如果這些複雜的事,必須在網路磁碟機上做,當然效率就更差了。這第一條建議,就把我打死在路邊,因為我總是為了貪圖 unix tool 的方便,而使用 samba 分享 working copy 到 windows 上使用,也因此,所以常會碰到這些效率的問題。解決之道當然就是不要這麼作,幸好最近發現 GnuWin32 比起以前的 UnxTools 要來的齊全很多,現在大部分的 unix style 操作,也都可以在 Windows 上進行了。
* 減少 working copy 的量。TortoiseSVN 會監控「所有」被 checkout 出來的 working copy,偵測其是否有所更動,以便存於 cache 裡,讓我們能夠在 explorer 裡「即時」看到檔案的狀況。因此,暫時不會用到的 working copy,如上個月臨時要改某項功能而被 checkout 出來的某個 branch,就可以先砍掉,等到下次要用時再重新 checkout。也就是說,事情作完了,就把目錄砍掉吧。按照 Subversion 的 zero-cost branching 的邏輯,我們實際上也是應該常常 branch,事情做完後就把 branch 幹掉。
* 讓 TortoiseSVN 知道你會把 working copy 放在哪。否則的話, TortoiseSVN 就必須檢查整顆硬碟,找出所有的 working copy 以便監控。如果 TortoiseSVN 知道 working copy 只會在哪裡有的話,就可以不必這麼辛苦,當然效率也就會好很多囉。假設平常我們把 working copy 都放在 C:\jeffhung\wc\ 目錄下[1],在設定視窗裡的 Icon Overlays 頁面,把 C:\jeffhung\wc\* 加進 Include paths 裡,然後把 C:\* 加進 Exclude paths 裡,即可讓 TortoiseSVN 只檢查 C:\jeffhung\wc\*,而不會監控整顆硬碟。所以原來設定視窗裡的這兩個欄位,是用來傳給 File System Monitoring 的 SDK API 用的。
* 只在 explorer 裡顯示 overlay。TortoiseSVN 最大的賣點,就是與 explorer 整合,即時在 icon 上 overlay 顯示檔案狀態。然而,由於一般應用程式的 File Open 或 File Save 對話視窗,也都是直接呼叫系統對話視窗來進行,因此 overlays 也會有作用,而這便會降低程式的執行效能。因此,如果在這些地方,我們沒有需要知道檔案的版本狀態的話,我們就可以在 TortoiseSVN 裡啟動 Show overlays only in explorer,讓 overlays 只在 explorer 裡出現,這樣應用程式的執行速度,就不會被 TortoiseSVN 拖累了。

Optimize performance | TortoiseSVN
TortoiseSVN seems very slow on big directories | TortoiseSVN
If you're working on Windows XP then you can also disable the zipfolders. This will also increase the browsing speed. regsvr32 /u %windir%\\system32\\zipfldr.dll

沒有留言: