【问题标题】:Is SVN's relocate a safe option to synchronize code with two subversion repositories?SVN 的 relocate 是与两个 subversion 存储库同步代码的安全选项吗?
【发布时间】:2010-10-28 22:42:48
【问题描述】:

这个问题的变体被问了很多次,但没有一个答案能说明我感兴趣的内容:

我希望(显然... :) 将我的本地工作副本与两个不同服务器上的两个存储库同步。如果我将svn switch--relocate 选项一起使用,是否可以(并且相当安全)与两个存储库保持同步(必要时手动合并更改)以及有什么注意事项?

背景:一台服务器托管我的私人 svn,另一台是“官方”svn,几个人可以访问并提交更改。

在我的私有 svn 中保留额外的代码副本的主要动机是

  1. 我可以进行“脏”(未经测试)的提交,并且
  2. 我的私有 svn 中有其他代码依赖于来自公共 svn 的代码,因此如果有一天官方 svn 消失,我的 svn 中的所有代码历史都将变得无用。李>

【问题讨论】:

  • 看看分布式系统,如 git、Hq 等。有些还可以用作 SVN 服务器的前端。我想这些会比单独的 SVN 更好地为您服务。

标签: svn repository switch-statement


【解决方案1】:

简短回答:不。

svn switch 用于切换到 same 存储库的新 url。 Subversion 无法在具有不同内容的两个存储库之间切换。

特别是,svn 检查存储库 UUID 以防止您意外切换到不同的存储库。如果您要绕过该检查(例如,通过创建两个具有相同 UUID 的存储库),然后在执行“脏”提交后切换到“官方”存储库,svn 仍然知道如何做正确的事。可能它只是认为它的工作副本已损坏并拒绝再进行任何commitupdate 操作。

您要求的功能正是分布式版本控制系统的设计目的。其中一些可以与 svn 合作,例如,您可以将 git 用于您的私有存储库并将其与官方 svn 存储库同步。

【讨论】:

  • 另一种方法是保持两个.svn 目录(例如具有不同名称)并行。这应该可行,但每次您想要切换时都需要仔细的手动干预,并且需要为每个子目录完成(或编写脚本)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多