我有一个包含主干和一个分支的SVN(1.6.12)项目。我试图了解合并是如何工作的。
project
+ trunk (14)
+ branches
+ test-branch (14)
括号中的数字是修订号。我使用命令“cd branches/test-branch; svn merge svn+ssh://.../trunk
”执行从主干到测试分支的合并
并使用“svn commit -m 'Merged trunk'
”提交更改。我的目录结构现在如下所示:
project
+ trunk (14)
+ branches
+ test-branch (15)
然后我尝试在trunk和test-branch之间进行重新集成合并:“cd trunk; svn merge --reintegrate svn+ssh://.../branches/test-branch
”。 SVN抱怨主干需要修订版本15.我做了“svn update
”,目录结构如下:
project
+ trunk (15)
+ branches
+ test-branch (15)
酷!准备重新融入。我再次尝试“svn merge --reintegrate svn+ssh://.../branches/test-branch
”。现在SVN抱怨我需要在重新集成之前将所有主干更改合并到分支中。主干位于15,但测试分支仅合并到14。
我该如何解决这个问题?如果我合并到分支然后提交,分支将在16。我尝试在主干上使用“svn switch
”,但我得到相同的错误。
存储库位于14的原因是因为我在主干和测试分支合并之间保持锯切。精神错乱的一个定义是重复相同的过程并期待不同的结果: - )。
感谢。
答案 0 :(得分:3)
听起来你在分支和标签上面有一个结账,现在你应该如何工作。
要解决此问题,请确保您只有一个正常行李的工作副本:
svn co <server>/svn/repos/trunk
如果你想从中创建一个分支,你应该制作服务器端副本(否则它会将你的工作副本复制到该分支,你不希望这样):
svn copy <server>/svn/repos/trunk <server>/svn/repos/branches/test-branch
现在您可以切换工作副本以在分支上执行某些操作:
svn switch <server>/svn/repos/branches/test-branch
您现在可以将更改从分支合并到主干,或重新集成分支。重新集成后,您应该删除分支(该命令应该执行一次,在分支的末尾,有关详细信息,请参阅svnbook)
要执行此操作,请先切换回主干:
svn switch <server>/svn/repos/trunk
然后合并修订版:
svn merge -c <revnumber> ^/branches/test-branch
或重新整合分支:
svn merge --reintegrate ^/branches/test-branch
svn delete <repos>/svn/repos/branches/test-branch -m "Delete branch"