我一直在阅读 svnsync 以创建我们存储库的只读副本,但我真的不明白拥有存储库的只读副本有什么意义。如果 master 由于某种原因宕机了,只读副本是否可以变为读/写,以便人们可以提交它?如果不是,那么只读副本的意义何在?
4 回答
由 svnsync 维护的只读存储库通常设置为提供主存储库的近实时备份。该副本被认为是只读的,因为通过 svnsync 以外的方式对其进行更改会阻止 svnsync 正常工作。
In the situation that your main repository is lost, your backup repository can become the new master. For all practical purposes the copy is identical to the original master as of the last run of svnsync. You could rebuild the original repository by copying the files from the backup repository and continuing as before.
Alternatively, clients with working directories based on the original master can perform an svn switch --relocate
operation to update the server URL to point to the copy and continue working without a hitch. Of course once clients start using the backup to make commits then it can no longer be the target of svnsync commands and effectively becomes a new master repository and you'll want to create a new backup.
假设您谈论的是您自己的私有存储库,任何内容的只读/只读副本(数据库或源代码存储库或 xyz)的两个原因是减轻负载并提高性能。
如果您在存储库上运行任何类型的分析,例如涉及每个修订的进程,那么这可能会给您的主存储库带来高负载,从而降低开发人员的性能。同步只读/只读副本是一种减轻负载的方法,允许您完成工作而不会导致关键用户退化。
可以对延迟提出类似的论点 - 从本地只读副本(本质上是缓存)拉取比通过 VPN 或类似链接从另一个办公室拉取更容易。
我不知道你是否可以让你同步读/写,但在很多情况下,你想在不允许提交的情况下检查存储库的内容。以下是与我们在我工作的地方所做的非常相似的两个案例:
想象一下这是一个公共开源项目,您可以允许任何人签出,但只期望通过补丁或错误报告做出贡献(副本也放在公共服务器上,主要的保存在受保护的专用网络中)。
您可能希望通过自动构建系统(或某些分析工具)中的 svn 导出来使用 svn 的内容,但选择不是一直同步,而是仅在主 svn 处于稳定状态时同步(想象一些中间提交可以使代码处于未编译的不稳定状态)。
Make a backup of your favourite open-source program sources :).