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 从主干切换到分支的主要内容,如果未能解决你的问题,请参考以下文章
实用svn主干trunk自动merge到各个分支branch脚本