如何重命名 SVN 分支并更新现有沙箱中的引用?
Posted
技术标签:
【中文标题】如何重命名 SVN 分支并更新现有沙箱中的引用?【英文标题】:How to rename an SVN branch and update references in an existing sandbox? 【发布时间】:2011-07-03 10:21:14 【问题描述】:我需要重命名一个 SVN 分支,所以我这样做了:
$ svn move https://server/repos/myrepo/branches/oldbranch \ https://server/repos/myrepo/branches/newbranch
到目前为止,一切都很好——分支已重命名。
问题是,我们已经从这个分支签出了现有的沙箱,当我尝试更新时,我得到了这个错误:
$ svn 更新 svn: 目标路径 '/branches/oldbranch' 不存在
一个相当不言自明的错误。经过快速搜索,我以为我找到了解决方案:Relocating SVN working copy following branch rename
问题是,当我尝试发出该命令时,我得到另一个错误:
$ svn switch --relocate https://server/repos/myrepo/branches/oldbranch \ https://server/repos/myrepo/branches/newbranch svn: Relocate 只能更改 URL 的存储库部分
据我所知,我使用--relocate
命令的方式与 Sander Rijken 相同。任何想法为什么我会收到此错误?
【问题讨论】:
我不认为 Sander Rijken 的答案是正确的。我已经对他的回答添加了评论。 【参考方案1】:做事
svn switch https://server/repos/myrepo/branches/newbranch
从您的工作副本中。
【讨论】:
谢谢,这行得通,但是当我接下来执行svn update
时,它确实会从沙箱中删除所有未版本控制的文件...我希望避免这样做。
From within your working copy
=> 你的意思是“cd [oldbranch]
首先然后从那里输入命令svn switch [...]
?
我知道@OlivierPons 的问题已经有 7 年历史了,但是由于没有人确认 - 为了这里的未来访客,是的 - 你会这样做 cd oldbranch
然后 svn switch ^/branches/newbranch
(注意 ^ 告诉 svn您正在相对于当前分支的根路径进行切换。)【参考方案2】:
要更改相对路径,您必须使用 pure svn switch
(无论如何switch --relocate
已弃用),如svn help switch
中所写的第一形式
switch URL[@PEGREV] [PATH]
更新工作副本以镜像存储库中的新 URL。This behavior is similar to 'svn update', and is the way to move a working copy to a branch or tag within the same repository.
即在oldbranch
的WC根目录中,现在是newbranch
,你必须使用
svn switch ^/branches/newbranch
【讨论】:
【参考方案3】:如果您只是想在 Eclipse 中重命名一个 SVN 分支,最简单的方法是进入 SVN Repository Exploring Perspective,然后右键单击您的分支 -> Refactor-> Rename
【讨论】:
以上是关于如何重命名 SVN 分支并更新现有沙箱中的引用?的主要内容,如果未能解决你的问题,请参考以下文章