75

我在 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)

我究竟做错了什么?

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

4

3 回答 3

146

您不需要这样做,--relocate因为分支位于同一个存储库 URL 中。做就是了:

svn switch https://www.example.com/svn/branches/v1p2p3
于 2013-02-01T23:05:41.600 回答
40
  • (正确)tzaman 答案的简短版本将是(对于新鲜的 SVN)

    svn switch ^/branches/v1p2p3
    
  • --relocateswitch 无论如何都被弃用了,当它需要时你必须使用svn relocate命令

  • 您可以使用标签(用于历史记录的传统 RO 标签),而不是创建快照分支(只读)

在 Windows 上,插入符号 ( ^) 必须转义:

svn switch ^^/branches/v1p2p3
于 2013-02-02T00:34:26.550 回答
3

就我而言,我想要check out一个new branch最近削减的,但它的大小很大,我想节省时间和互联网带宽,因为我在一个缓慢的计量网络中

所以copped the previous branch我已经签到了

我去了工作目录,从 svn info,我可以看到它在上一个分支上我做了以下命令(你可以从 找到这个命令svn switch --help

svn switch ^/branches/newBranchName

再次检查svn info,您可以看到它正在成为 newBranchName 继续前进svn up

这就是我如何通过互联网传输最少的数据轻松、快速地获得新分支

希望分享我的案例有助于并加快您的工作

于 2020-03-18T09:06:50.833 回答