如何不被 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 设定视窗里,一些奇妙的栏位的真正功用为何。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章