从主干到分支的Svn交换机

从主干到分支的Svn交换机,svn,branch,trunk,Svn,Branch,Trunk,我在一个SVN托管项目的trunk的根文件夹中,正在探索建立两个分支 一个分支将是当前(稳定)版本中项目的“快照”,第二个分支将是我将致力于应用一些新代码、测试,然后将主干升级到新版本的分支 我的目标是保持快照作为保险,并快速获得项目的较旧、稳定版本。第二个分支,一旦我们应用新代码并通过测试,将被合并回主干中,我们将向公众提供主干 为了设置快照,我将我们的trunk复制到一个名为v1p2p3的分支: $ svn cp https://www.example.com/svn/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"
到目前为止,一切顺利:

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)
我做错了什么

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

您不需要
--重新定位
,因为该分支位于同一存储库URL中。只要做:

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

  • --relocate
    开关无论如何都不推荐使用,当需要时,您必须使用
    svn relocate
    命令

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

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

svn switch ^^/branches/v1p2p3

在我的例子中,我想签出一个最近被削减的新分支 但它的体积很大,我想节省时间和互联网带宽,因为我在一个低速网络中

因此,我
记录了我已经签入的上一个分支

我转到了工作目录,从svn info中,我可以看到它位于上一个分支上,我执行了以下命令(您可以在
svn开关--help
中找到此命令)

再次检查
svn信息
您可以看到它正在成为新牧场的名称继续并
svn向上

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


希望分享我的案例能帮助并加快您的工作

谢谢您的快速帮助。我假设切换到此URL后的任何更改都将使
主干保持独立,对吗?是的。当WC指向分支时,进一步提交将只提交到该分支。您可以使用
svn info
+1检查提交的位置,以建议标记:“快照作为保险,快速获得较旧、稳定的版本”听起来像是标记的经典用例,通常是作为发布过程的一部分创建的。
svn switch ^^/branches/v1p2p3
svn switch ^/branches/newBranchName