我需要从主干中获取一个文件夹(已实现的功能)并将其合并到分支中。
所以我做了这些:
svn update .
svn merge ^/trunk ^/branches/mybranch
有大约12个树冲突,说“本地编辑,合并时传入替换”(有人可以解释此消息吗?),我用svn resolve --accept working *
解决了这个。
问题是/trunk/feature/
文件夹未创建到分支中。
这样做的正确方法是什么?
使用svn copy ^/trunk/feature ^/branches/mybranch/feature
?
修改
更多信息:
svn mkdir branch/mybranch
和svn copy ^/trunk ^/branch/mybranch
svn merge ^/trunk .
,经过3次冲突后,如上所述解决了/feature
文件夹尚未创建答案 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
创建新文件夹