SVN从中继切换到分支


70

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

我究竟做错了什么?

(如果这行不通,我怀疑我无法从更具雄心的第二个分支开始。我正在寻找一种不会破坏现有项目布局的方法。感谢您的建议,以及抱歉,这是一个愚蠢的问题。)

Answers:


143

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

svn switch https://www.example.com/svn/branches/v1p2p3

感谢您的快速帮助。我认为切换到该URL后的任何更改都不会改变,对trunk吗?
亚历克斯·雷诺兹

对。当您的WC指向分支时,进一步的提交只会提交到该分支。您可以使用svn info
tzaman

40
  • (正确的)tzaman答案的简短版本将是(对于新的SVN)

    svn switch ^/branches/v1p2p3
    
  • --relocate无论如何,开关已被弃用,需要时,您必须使用svn relocate命令

  • 除了创建快照分支(只读),您还可以使用标签(用于历史记录的常规RO标签)

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

svn switch ^^/branches/v1p2p3

2
+1建议标签:“快照作为一种保险,是获取较旧的稳定版本的快速方法”,听起来像是经典的标签用例,通常是在发布过程中创建的。
vilpan 2013年

2

就我而言,我想减少check out一个new branch最近使用的设备,但是它太大了,并且我想节省时间和互联网带宽,因为我处在缓慢的计量网络中

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

我进入了工作目录,从svn信息中可以看到它在上一个分支中,我执行了以下命令(您可以从中找到此命令svn switch --help

svn switch ^/branches/newBranchName

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

这就是我如何轻松,快速地以最少的数据通过Internet传输新分支的方式

希望分享我的案例对您有帮助并加快您的工作速度

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.