从主干到分支的 Svn 交换机

我在一个 SVN 托管项目的 trunk的根文件夹中,正在探索建立两个分支。

一个分支是当前(稳定)版本中项目的“快照”,第二个分支是我将要应用一些新代码、测试,然后将主干升级到新版本的分支。

我的目标是保留快照作为保险,以及获得项目的旧版本、稳定版本的快速方法。第二个分支,一旦我们应用了新的代码并且测试通过了,就会被合并回主干,我们向公众提供这个主干。

为了设置快照,我将 trunk复制到一个名为 v1p2p3的分支:

$ svn cp https://www.example.com/svn/trunk \
https://www.example.com/svn/branches/v1p2p3 \
-m "Branching from root trunk to v1p2p3 at r1114"

到目前为止,一切顺利:

Committed revision 1115.

我想要做的是将我的本地存储库副本切换到这个分支,以确保工作正常,但是我得到一个错误消息:

$ svn switch --relocate https://www.example.com/svn/trunk \
https://www.example.com/svn/branches/v1p2p3

错误消息是:

svn: E155024: Invalid relocation destination:
'https://www.example.com/svn/branches/v1p2p3'
(does not point to target)

我做错了什么?

(如果这不起作用,我怀疑我无法开始建立更具雄心的第二个分支。我正在寻找这样做的方法,不会破坏现有的项目布局。谢谢你的建议,如果这是一个愚蠢的问题,我向你道歉。)

114983 次浏览

您不需要使用 --relocate,因为分支位于相同的存储库 URL 中:

svn switch https://www.example.com/svn/branches/v1p2p3
  • 简短版本的(正确的) tzaman 答案将是(新鲜的 SVN)

    svn switch ^/branches/v1p2p3
    
  • --relocate switch is deprecated anyway, when it needed you'll have to use svn relocate command

  • Instead of creating snapshot-branch (ReadOnly) you can use tags (conventional RO labels for history)

On Windows, the caret character (^) must be escaped:

svn switch ^^/branches/v1p2p3

在我的情况下,我想 check out一个 new branch最近已经削减 但它的规模很大,我想节省时间和互联网带宽,因为我在一个缓慢的计量网络

所以我 copped the previous branch,我已经检查了

我转到工作目录,从 svn info 中,我可以看到它在前一个分支上,我执行了以下命令(你可以在 svn switch --help中找到这个命令)

svn switch ^/branches/newBranchName

再去看看 svn info你可以看到它正在成为新的分支名称继续和 svn up

这就是我如何以最少的数据在互联网上传输的方式轻松、快速地获得新分支的方法

希望分享我的案例能帮助你加快工作进度