【问题标题】:Same working copy of the code with 2 SVN servers [duplicate]具有 2 个 SVN 服务器的代码的相同工作副本 [重复]
【发布时间】:2009-03-03 07:32:41
【问题描述】:

是否可以使用相同的工作副本并将其放入两个不同的 SVN 服务器(提交、更新、...)?

【问题讨论】:

  • 好问题,+1,您会惊讶于有多少人出于某种原因必须这样做。

标签: svn


【解决方案1】:
【解决方案2】:

是的,您可以使用 Relocate(谢谢,Peter)命令将您的工作副本与第一个存储库连接,在那里提交,然后重新定位到第二个存储库并在那里提交。最好先在其他地方复制您的工作副本文件夹。

【讨论】:

  • 我收到“存储库 UUID 不匹配”错误:(
  • 存储库的登录凭据是否不同?
  • 这行不通!每个存储库都有自己的 UUID,因此您无法将 --relocate 切换到不同存储库的新 URL。除非你操纵 uuid 来匹配(这不是一件好事)
  • 我认为你是对的,搬迁是正确的做法。
  • 对我来说,“重新定位”也会导致 UUID 问题:(
【解决方案3】:

如果多个人会与不同的 svn 服务器通话,你会遇到麻烦。两台服务器不会相互通信以确保它们没有冲突,使用相同的修订号等。至少,我不知道有任何 svn hack 可以做到这一点。 (还有其他基于svn的分布式版本系统,如svk。)

这里的核心目标是什么?您能否只推送到单个服务器,然后有一个提交后挂钩将更改复制到另一台服务器,这将允许从其他位置轻松进行只读访问?

您可以提供的有关您想做的事情的详细信息越多,我们就越有可能为您提供帮助。

【讨论】:

    【解决方案4】:

    分布式版本控制系统,例如 Mercurial、Bazaar 或 Git,更适合此类任务。您可以在任意数量的存储库中推送您的更改。

    【讨论】:

      【解决方案5】:

      这是可能的,但非常糟糕。我目前必须这样做,因为我的 ISP 已经脑残,而且我在到达欧洲的各个数据中心时遇到了难题。所以,我推送到我在加拿大的服务器,该服务器立即推送到真正的存储库。

      实际上有两次,我最终得到了不同的修订号 (+1),这意味着我的下一个 svn up 变得非常有趣。

      所以,我只是使用 SSHFS(一个 FUSE 挂载)来编辑加拿大副本上的文件,然后直接提交。它仍然是一个真正的痛苦,也是我如此喜欢 Mercurial 的众多原因之一。

      【讨论】:

        【解决方案6】:

        首先,将您的代码签出到每个服务器,然后制作一个脚本 svn_up.sh,如下所示:

        ssh  server_one_ip_address svn up /path_to_working_copy_on_server1
        ssh  server_two_ip_address svn up /path_to_working_copy_on_server2
        

        使用 sh svn_up.sh 代替 svn up

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-28
          • 2015-05-18
          • 1970-01-01
          • 2015-02-16
          • 2016-12-30
          相关资源
          最近更新 更多