我有一个包含一个主干和一个分支的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)然后,我尝试在主干和测试分支之间进行重新集成合并:"cd trunk; svn merge --reintegrate svn+ssh://.../branches/test-branch“。SVN抱怨说trunk需要在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的原因是因为我一直在主干和测试分支合并之间来回切换。精神错乱的一种定义是重复相同的过程,并期待不同的结果:-)。
谢谢。
发布于 2010-09-22 01:49:26
听起来你在分支和标签上面有一个结账,这就是你现在应该做的。
要解决此问题,请确保您拥有just主干的单个工作副本:
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"https://stackoverflow.com/questions/3762813
复制相似问题