将主干合并到分支中,而不是从主干中获取新文件夹

时间:2014-02-19 00:01:02

标签: svn merge

我需要从主干中获取一个文件夹(已实现的功能)并将其合并到分支中。

所以我做了这些:

svn update .
svn merge ^/trunk ^/branches/mybranch

有大约12个树冲突,说“本地编辑,合并时传入替换”(有人可以解释此消息吗?),我用svn resolve --accept working *解决了这个。

问题是/trunk/feature/文件夹未创建到分支中。

这样做的正确方法是什么?

使用svn copy ^/trunk/feature ^/branches/mybranch/feature

修改
更多信息:

  • svn,版本1.7.5
  • 分支是使用svn mkdir branch/mybranchsvn copy ^/trunk ^/branch/mybranch
  • 创建的
  • 确实,这是我给出的命令,但是我刚刚运行了svn merge ^/trunk .,经过3次冲突后,如上所述解决了/feature文件夹尚未创建

3 个答案:

答案 0 :(得分:2)

我认为您的问题可能是您正在使用合并命令的第三种形式,即“2-URL合并”。这可能不是你想要的。

您可能想要运行:

svn merge ^/trunk .

如果您只想提取添加该功能的更改并且不同步中继的所有内容,那么您将不得不挑选它们。我建议您运行svn log ^/trunk/feature,并列出所有修订版本与合并一起使用,如下所示:

svn merge -c '1234, 1235, 1236' ^/trunk .

假设所有必需的更改都发生在功能目录中。我猜你可能需要其他修改,但我无法告诉你如何选择它们。

2-URL合并主要用于合并不相关的分支,这不是你正在做的。

Subversion始终会合并到工作副本中。所以你的命令默认为实际运行:

svn merge ^/trunk ^/branches/mybranch .

隐含地假定最后一个参数,即目标工作副本。

旁注:在复制之前,您也不需要svn mkdir分支。由于您的副本只会替换分支。显然,如果branches文件夹不存在,你会想svn mkdir ^/branches,但那是一次性的。

答案 1 :(得分:0)

源分支文件夹是否为空?我不记得它是SVN还是Git,但是如果它们是空的,其中一个不会添加文件夹。在你的情况下,这可能是这个吗?

答案 2 :(得分:0)

除了Ben的答案之外

如果

  

如上所述解决的3个冲突

,即--accept working

对于任何树冲突,您永远不会从their创建新文件夹