5

我在本地局域网上有一个 svn 服务器,它在 Windows 上。开发人员使用并从中签入/签出。为了安全起见,我们从机架空间中使用了一台服务器,一台 Linux 的。是否可以每周自动从本地 svn 服务器同步到远程服务器。远程的将主要用作远程备份,但以防万一有人想要访问,他们可以这样做,因为我们的局域网没有静态或外部 IP。

4

3 回答 3

4

我建议为此使用svnsync。当从 post-commit 钩子触发时,这个工具(svn 发行版的一部分)允许在 2 个(或更多)svn 服务器之间进行实时同步。

于 2010-01-25T07:34:06.540 回答
0

只要备份服务器是只读的,像 rsync 这样基本的东西就可以工作。但是您可能希望实现一个重试循环,该循环一直保持同步,直到没有要同步的内容,这样您就不会在某人提交某事时准确同步状态。

如果您需要在两个站点上进行读/写访问,使用 git 之类的东西并在客户端使用 git-svn 作为“向后兼容性”可能会更安全、更容易。

另一种选择是使用SVK,这是一个建立在 SVK 之上的分布式版本控制系统。但这也不会对客户完全透明。

于 2010-01-25T07:30:39.300 回答
0

您可以使用svnadmin dump转储整个存储库。您可以使用 postcommit 钩子和相同的命令以独立格式转储提交,以后可以重新应用

将这些和 rsync 结合起来,您可以有效地将您的服务器复制到任何其他服务器上。只要您的备份服务器仅以只读方式访问,它就可以使用。在发生故障的情况下,一个简单的 svn 开关将允许您的开发人员使用备份服务器。

我建议您设置 acls以禁止写入备份服务器,除非它成为主服务器。

peter 提到的另一种解决方案可能是 svk,但它不能用于完全自动同步:如果在两台服务器上进行了冲突更改会发生什么?该脚本将失败或破坏它。诸如分布式合并之类的任何事情都必须由人工审核。

另一个解决方案是 svn --mirror 方式

您应该尝试阅读这篇文章以获取有关保持存储库同步的更多详细信息:如何同步两个 Subversion 存储库?:)

于 2010-01-25T07:39:32.553 回答