Svn从主干切换到分支

Ale*_*lds 62 svn branch trunk

我在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"
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好:

Committed revision 1115.
Run Code Online (Sandbox Code Playgroud)

我想要做的是将我的本地存储库副本切换到此分支,以确保一切正常,但我收到一条错误消息:

$ svn switch --relocate https://www.example.com/svn/trunk \
                        https://www.example.com/svn/branches/v1p2p3
Run Code Online (Sandbox Code Playgroud)

错误消息是:

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

我究竟做错了什么?

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

tza*_*man 133

您不需要,--relocate因为分支在同一个存储库URL中.做就是了:

svn switch https://www.example.com/svn/branches/v1p2p3
Run Code Online (Sandbox Code Playgroud)


Laz*_*ger 36

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

    svn switch ^/branches/v1p2p3
    
    Run Code Online (Sandbox Code Playgroud)
  • --relocate无论如何,不​​推荐使用switch,当它需要时你必须使用svn relocate命令

  • 您可以使用标记(历史记录的常规RO标签)而不是创建快照分支(ReadOnly)

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

svn switch ^^/branches/v1p2p3
Run Code Online (Sandbox Code Playgroud)

  • +1 用于建议标签:“快照作为保险和获得较旧稳定版本的快速方法”听起来像是标签的经典用例,通常作为发布过程的一部分创建。 (2认同)