通过svnsync获取存储库的只读副本有什么意义?

时间:2010-08-12 21:05:41

标签: svn svnsync

我一直在阅读svnsync以创建我们的存储库的只读副本,但我真的不明白拥有存储库的只读副本是什么意思。如果主服务器出于某种原因出现故障,那么只读副本是否可以读/写,以便人们可以承诺呢?如果没有,那么只读副本的重点是什么?

4 个答案:

答案 0 :(得分:4)

通过svnsync维护的只读存储库通常设置为提供主存储库的近实时备份。该副本被认为是只读的,因为通过svnsync以外的方式对其进行更改将阻止svnsync正常工作。

在您的主存储库丢失的情况下,您的备份存储库可以成为新的主存储库。出于所有实际目的,副本与上次运行svnsync时的原始主副本相同。您可以通过从备份存储库复制文件并像以前一样继续来重建原始存储库。

或者,具有基于原始主服务器的工作目录的客户端可以执行svn switch --relocate操作来更新服务器URL以指向副本并继续正常工作。当然,一旦客户端开始使用备份进行提交,那么它就不再是svnsync命令的目标,并且有效地成为新的主存储库,并且您将需要创建新的备份。

答案 1 :(得分:2)

假设您正在谈论自己的私有存储库,对于任何内容的读取/仅复制(数据库或源代码存储库或xyz)的两个原因是减轻负载并提高性能。

如果您在存储库上运行任何类型的分析,请说一个涉及每个修订版的流程,那么这可能会对主存储库造成很大负担,从而降低开发人员的性能。同步一个只读副本是一种减轻负载的方法,可以让你完成工作,而不会对关键用户造成降级。

可以在延迟方面做出类似的论证 - 更容易从本地读取/仅复制(本质上是缓存)下拉,而不是通过VPN或类似链接从另一个办公室拉取。

答案 2 :(得分:1)

我不知道你是否可以让你同步读/写,但是有很多情况下你想要检查存储库的内容而不允许它进行同意。以下是两个与我工作地点非常相似的案例:

  • 想象一下,这是一个公共开源项目,您可以允许任何人退房,但只能通过补丁或错误报告来预期(也可以将副本放在公共服务器上,主要的是保存在公共服务器上)受保护的私人网络)。

  • 您可能希望在自动构建系统(或某些分析工具)中通过svn导出使用svn的内容,但选择不是所有时间同步,而是仅在主svn处于稳定状态时(想象一些中间提交可能会使代码处于代码未编译的不稳定状态。)

答案 3 :(得分:0)

备份您最喜欢的开源程序源:)。