如何不被 TortoiseSVN 拖慢系統效率
由於某些技術上的原因,TortoiseSVN 的效率,其實不是很好。我在處理一些大 project 的時候,常常會有整台機器 hang 住的情況,直到把 TSVNCache.exe 砍掉後才能恢復。所以 TortoiseSVN 的主要開發者 Stefan Kueng 最近就發表了一篇文章叫《Optimize performance》,教大家如何調校,以增進 TortoiseSVN 的運作效率。
不過,原文標題是「增進效率」,但我實在是要換個方法來講,因為這些調校,其實是在「避免系統效率被 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 拖累了。
這篇也確實解釋了,TortoiseSVN 設定視窗裡,一些奇妙的欄位的真正功用為何。
- 我的「我的文件」都會被我改設在
C:\jeffhung,這樣在 command line 底下比較方便。 ↩



6 Comments
感謝 jeffhung 大的介紹,這個問題的確困擾我滿久的。
有沒有試過 perforce? 我們公司用 perforce, 我覺得實在太好用、太方便了。當然有時候還是會覺得不夠快,但考慮到只有 8G 的 RAM,放的 source 卻高達數百 GB,同時使用人數也有三百人,這樣算很不錯的了。當然大部分時候還是蠻順的啦!
我沒有用過 perforce,但聽過其鼎鼎大名。audreyt 有次也有提到,Microsoft 內部也是嫌棄 VSS,用的實際上是改過的 perforce。不過,perforce 商業使用要錢,所以個人摸的話,我覺得還是先以免錢的工具優先。
個人使用的話,perforce 是不用付錢的,只是只能開兩個還是五個帳號而已。但同一個帳號可以在不同台機器上用,反正開不同的 workspace 就行了。
至於價錢,之前聽公司同事講說好像是每個帳號每年 500 元美金。
我也是,原来开始装tortoiseSVN后,电脑就变慢了
后来实在无法仍受就卸载了,装回了VSS
用的第三方的VSS INTERNET 软件
但是速度不好.
现在看了您的文章,真让我高兴啊,我回去还是要装回SVN了.谢谢
很棒的文章, 可以引用嗎? 謝謝!
http://blog.xuite.net/meloscheng/note/49361866
Post a Comment