【问题标题】:svn server synchronise automaticallysvn 服务器自动同步
【发布时间】:2010-01-25 06:52:31
【问题描述】:

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

【问题讨论】:

    标签: svn version-control synchronization subversive


    【解决方案1】:

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

    【讨论】:

    • 如果你走这个方向(推荐),请确保你阅读了如果提交后挂钩失败时不同步的问题。除了提交后挂钩之外,您可能还想查看定期同步。一个例子可以在这里找到blogs.atlassian.com/developer/2008/11/…
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      您应该尝试阅读此内容以获取有关保持 repos 同步的更多详细信息:How to synchronize two Subversion repositories? :)

      【讨论】:

        猜你喜欢
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多