2010-09-21 170 views
1

我有一个SVN(1.6.12)项目包含一个树干和一个分支。我正在尝试学习如何合并作品。颠覆鸡和蛋问题

project 
+ trunk (14) 
+ branches 
    + test-branch (14) 

括号中的数字是修订版本号。我使用命令“​​” 执行从主干到测试分支的合并,并使用“svn commit -m 'Merged trunk'”提交更改。我的目录结构现在看起来是这样的:

project 
+ trunk (14) 
+ branches 
    + test-branch (15) 

然后我尝试做躯干和测试分支之间的复兴合并:“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的原因是因为我一直在中继线和测试分支合并之间进行锯切。疯狂的一个定义是重复相同的过程,期待不同的结果:-)。

谢谢。

回答

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"