【问题标题】:svn switch error - is not the same repositorysvn 切换错误 - 不是同一个存储库
【发布时间】:2010-10-29 20:51:08
【问题描述】:

我最近移动了 SVN 服务器,现在我正在尝试将工作副本从我的计算机重新定位到新服务器。但我得到了最奇怪的错误。 我愿意:

svn switch http://99.99.99.new/svn/company/project/trunk/web

但我明白了

svn: 'http://99.99.99.old/svn/company/project/trunk/web'
is not the same repository as
'http://99.99.99.new/svn/company/project'

移动是通过 dump 和 import ... 进行的,并且 repo 根目录位于 http://99.99.99.new/svn/company/project

你们对可能出现的问题有任何想法吗? 非常感谢

【问题讨论】:

    标签: svn


    【解决方案1】:

    尝试使用

    svn switch --relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
    

    正如 Sporino 在 cmets 中所指出的,从 Subversion 1.7 开始,有一个单独的 relocate 命令:

    svn relocate http://99.99.99.old/svn/company/project/trunk/web http://99.99.99.new/svn/company/project/trunk/web
    

    【讨论】:

    • @Steef 所以 url 应该与前一个 exept 相同,它将指向另一个位置?所以例如svn switch --relocate .../project1/trunk/SomeDir .../project2/trunk 不会工作,对吧?我需要svn switch --relocate .../project1/trunk/SomeDir .../project2/trunk/SomeDir
    • 从 subversion 1.7 开始有一个名为 relocate 的新命令来做同样的事情。
    • @Eugene 使用svn switch --relocate http://old.location/svn/project/trunk http://new.location/svn/project/trunk 重新定位到新的“基本位置”。这不应该是现有的存储库。然后使用正常的 switch 命令到你的存储库svn switch http://new.location/svn/projects/project/trunk
    【解决方案2】:

    您需要使用 --relocate 选项:

    svn switch --relocate http://99.99.99.new/svn/company/project/trunk/web
    

    更多详情请参阅svnbook

    【讨论】:

    • 感谢您的建议,但正如 BastardSaint 所写,您需要指定 from 和 to URLS
    • 更多糟糕的 UI 设计让我对颠覆和 SVK 感到厌烦。可能有一些奇特的用例需要您指定两个 URL,但这些工具应该只采用该死的默认值。例如,在 SVK 中,我不应该 需要 指定合并源和目标,但我这样做了。
    【解决方案3】:

    switch 命令中使用relocate 命令行参数。

    svn switch documentation

    有时管理员可能会更改存储库的“基本位置”——换句话说,存储库的内容不会更改,但用于到达存储库根目录的主 URL 会更改。例如,主机名可能会改变,或者 URL 模式,或者可能只是通向存储库的路径。您可以使用 svn switch 命令“重写”工作副本中所有 URL 的开头,而不是签出新的工作副本。使用 --relocate 命令进行替换。不更改文件内容,也不联系存储库。这类似于在运行 s/OldRoot/NewRoot/ 的工作副本 .svn/ 目录上运行 perl 脚本。

    【讨论】:

      【解决方案4】:

      另外,在 TortoiseSVN 中有“重新定位”选项,您应该在此类情况下使用它(而不是“切换”选项)。

      【讨论】:

      • 同意...但我在 ubuntu 上,所以选项不可用:)
      【解决方案5】:

      我进行 SVN 重定位的最佳方法是:

      svn switch --relocate $(svn info | grep ^URL | cut -f 2 --delim=' ') \
                            new_url_or_repository
      

      这样,使用svn info命令中正确的旧url,你肯定不会输入错误的,这是常见的错误之一。

      如果一切正确,系统将提示您提供新位置的身份验证详细信息(如果它们不同)。

      发出命令后,请务必仔细检查是否已应用更改,查看 URL 参数,发出

      svn info
      

      搬迁后,更新你的工作副本,检查一切是否正常:

      svn update
      

      我的 2c ..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多