svn 从主干切换到分支

Posted

技术标签:

【中文标题】svn 从主干切换到分支【英文标题】:Svn switch from trunk to branch 【发布时间】:2013-01-17 08:51:36 【问题描述】:

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

我做错了什么?

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢您的快速帮助。我假设切换到此 URL 后的任何更改都会留下 trunk,对吗? 是的。当您的 WC 指向分支时,进一步提交只会提交到该分支。您可以使用 svn info 检查提交的去向【参考方案2】:

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

svn switch ^/branches/v1p2p3

--relocate 开关无论如何都已弃用,当需要时你必须使用svn relocate 命令

您可以使用标签(用于历史记录的传统 RO 标签)代替创建快照分支(只读)

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

svn switch ^^/branches/v1p2p3

【讨论】:

+1 用于建议标签:“快照作为保险和获得较旧、稳定版本的快速方法”听起来像是标签的经典用例,通常作为发布过程的一部分创建。 【参考方案3】:

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

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

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

svn switch ^/branches/newBranchName

再次检查svn info,您会看到它正在成为新的分支名称,继续前进,svn up

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

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

【讨论】:

以上是关于svn 从主干切换到分支的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse 中svn的合并与同步

ECLIPSE下SVN的创建分支/合并/切换使用

实用svn主干trunk自动merge到各个分支branch脚本

将特定的 SVN 分支迁移到 GIT(2018 年迁移的主干)

SVN - 主干/分支

SVN主干发布与分支发布的区别