使用Subversion将标记合并到主干中

时间:2009-12-03 19:41:47

标签: svn version-control

我有这个文件夹结构:

\ myproject的\分支\ 1.2

\ myproject的\主干

我需要将v1.2合并回主干。 v1.2有修订版104和105.中继从57-65和106.106版本正在删除v1.2文件夹中不存在的文件夹。

我的设置是基于文件的。我在干线试过这个:

MacBook:trunk myuser $ svn merge -r104:105“file:///Developer/Main%20Repository/myproject/branches/v1.2”

我有三个冲突并解决了它们。但是,我没有看到任何文件已在主干中更新。我是否需要做其他/不同的事情来完成合并?

- 编辑 -

我真的想将整个标记\ v1.2分支合并到trunk中。所以我跑了:

svn merge "file:///Developer/Main%20Repository/myproject/branches/v1.2"

并解决了一些冲突。有没有办法让我确定这两个分支现在是否相同?通过做一些文件比较,我可以看到两个分支之间仍然存在明显差异,这意味着合并不起作用。

3 个答案:

答案 0 :(得分:1)

你确定r104是你创建1.2分支的地方吗?您可以通过以下方式验证:

svn log --stop-on-copy file:///path/to/branch

然后你需要使用那个修订范围。

修改

好的,这就是通常的情况......假设您希望分支中的所有更改,并且分支是在r104中创建的。

cd path/to/trunk/checkout
svn merge -r 104:HEAD file:///path/to/branch

这会将分支中所做的更改合并到主干的本地副本。您现在需要解决所有冲突,如果有的话。此时如果你这样做:

svn stat

你应该只看到标记为M A或X的文件和目录(如果你有外部)。现在,为了使合并位于存储库中的trunk中,您需要执行以下操作:

svn commit -m "my commit comment"

您遇到的问题是您正确执行了前几个步骤但未提交合并的更改,而是尝试再次合并。所以现在你可能在后备箱里疯狂了。您可能需要对最后一个好的副本进行恢复,然后再次合并并提交。

答案 1 :(得分:1)

你告诉Subversion要合并修订版104和105之间的分支所做的更改;你已经跳过了r104中所做的更改。

尝试

svn merge -c 104,105 file:///Developer/Main%20Repository/myproject/branches/v1.2

并确保您拥有干线的工作副本。

答案 2 :(得分:0)

在您看到行李箱中的更改之前,您需要svn commit

svn merge操作会更改您的工作副本。你已经解决了冲突,好,(我假设你还为他们运行了svn resolved),现在剩下的就是用svn commit将你的工作提交到存储库。