当工作副本在 NFS 上运行时,有没有办法提高 svn 的性能?
(*) 必须是和 NFS 挂载的分区 (/home)。
我猜 SVN 客户端在提交时会读取整个树以查找更改。我不知道什么会使结帐变慢。
根据颠覆常见问题解答:
工作副本可以存储在 NFS 上(一种常见的情况是您的主目录位于 NFS 服务器上)。在 Linux NFS 服务器上,由于在签出文件时 Subversion 内部使用的重命名量,一些用户报告说应该禁用“子树检查”(默认情况下启用)。有关如何禁用子树检查的更多信息,请参阅NFS Howto Server Guide and exports(5)。
结帐性能可能会受到几个因素的限制,但在您的情况下,最有可能是该 NFS 挂载的 I/O - 除非您的网络连接饱和,或者服务器尺寸过小。
使用“nolock”选项进行挂载。它实际上是操作系统本地锁,而不是 NFS 服务器端锁。
我从这个选项中获得了更好的性能。
NFS 上的结帐性能非常糟糕,以至于它成为主要瓶颈,而不是 Subversion 服务器的带宽。Bryce Denney 和 Wilson Snyder 的rsvn是一个 perl 脚本,它使用 ssh(假设允许)登录到 NFS 服务器并远程运行 svn 命令。在我的测试中,它提供了数量级更快的性能。摘自手册页:
姓名
rsvn - 远程 svn - 如果可能,在文件服务器上运行颠覆命令
概要
rsvn ANY_SVN_COMMAND rsvn update rsvn --test
描述
如果可能,请在不必等待 NFS 的文件服务器上运行 svn 命令。否则像往常一样运行 svn。一些 SVN 命令将始终在本地运行,要么是为了“安全”,要么是因为在文件服务器上运行没有好处(svn 日志)。
默认情况下将发送到文件服务器的命令是这些(及其缩写):
add checkout cleanup diff merge resolved revert status switch update
为什么提交不能远程运行?因为它要么会启动一个编辑器,但它并不总是通过非交互式 SSH 工作,或者你可能会使用 -m "FOO BAR" 并且 shell 的引用被搞砸了。弄清楚如何解决这些问题并将“提交”添加到列表中会很好。