上一个: Connecting via fork, 上层: Remote repositories
cvs 可以通过多台 cvs 服务器配置成分布式。 对于单独的 primary server,它的实现借助于一个或多个 write proxies, 或者是 secondary servers。
当 cvs 客户端访问第二服务器时,只请求读操作,那么第二服务器会处理所有的请求。 如果客户端发送写请求,那么,如果客户端支持重定向,第二服务器要求客户端将写请求重定向到第一服务器。 否则第二服务器作为可以处理写请求的第一服务器的一个传输代理。
这样,第一服务器可以配置多个写代理的第二服务器,有效地将读负载分配到第二服务器,限制 第一服务器的写负载并将变更传递到第二服务器。
第一服务器不会自动将变更推向第二服务器。它必须通过 loginfo, postadmin, posttag, & postwatch 脚本配置 (参阅 Trigger Scripts),就像下面这样:
ALL rsync -gopr -essh ./ secondary:/cvsroot/%p &
您也许希望在运行上面例子中 `rsync' 写第二服务器和读第一服务器的时候给目录加锁, 但如何配置超出了本文档范畴。
写代理的另外一个优点是,在连接第一服务器比较慢或者它定期断开时, 用户仍然可以从第二服务器执行快速的读操作。 只在写操作时才需要连接到第一服务器。
为了配置写代理,第一服务器必须在 CVSROOT/config (参阅 config) 里指定 `PrimaryServer' 选项。 为了使传输代理模式有效,所有的第二服务器必须运行 相同版本的 cvs 服务器,或者至少给客户端提供与第一服务器相同的支持需求列表。 它对于转发不是必须的。
一旦设置了第一服务器,第二服务器可以通过下面进行配置:
--allow-root=
secondary-cvsroot 给 所有的 调用
第二服务器。
再次请注意,通过代理写,要求指定 --allow-root=
secondary-cvsroot
到所有的调用第二服务器,不只是 `pserver' 调用。
这也许需要为您的服务器包装一个执行脚本。