回答
在Subversion 1.5或更高版本中,合并记录在svn:mergeinfo属性的本地工作副本中。所以这些信息不会丢失。
如果您使用svn log -g
而不是正常的svn log
,则可以看到合并的修订版。
普通合并作为
svn merge -rREV1:REV2 svn://server/branch my_trunk_wc
进行,但如果你使用一个分支,有时更方便地使用重返合并。在这种情况下,你应该使用类似
svn merge svn://server/trunk my_branch_wc
首先合并所有主干的修改到分支(这个合并是不是已经合并的一切)
你提交此变更分支后,您可以使用
svn merge --reintegrate svn://server/branch my_trunk_wc
将所有更改作为单个提交进行移动。 (此操作后,您应该删除分支)
_“在此操作之后,您应该删除分支”_。为什么,它不应该只是“可以删除”吗?只要不引起任何问题,我都喜欢保留所有历史记录。 – Zitrax 2015-10-05 10:10:51
运行'svn log -g'时,您可以看到旧版本中的历史记录仍然存在。但是你不应该再使用这个分支,因为如果没有更多的簿记,它就不能再被合并。 (请注意,更新的Subversion版本(1.8+)降低了--reintegrate要求,甚至可以使分支再次与正确的中继合并使用) – 2015-11-13 12:10:15
@BertHuijben:您好,请您先看看我的问题[这里](http://stackoverflow.com/q/36157555/3287204)?在此先感谢... :) – 2016-03-24 16:25:49
您可以将每个变更集保存为差异,然后将每个变更集提交到主干上。这通常被称为“移植”,并有各种工具可以自动执行此操作。
该工具的任何示例? – turbanoff 2015-01-21 13:17:47
这听起来像你想:多个可能的分支机构
- 合并。
- 将所有合并记录为正确。
- 只作为一个新版本提交。
我认为这是由底层的SVN架构支持的。但我不知道是否有客户提供它(尽管svnmucc会为它执行多个cp
,mv
,rm
命令)。除非你想做比我更多的研究(这不会花费太多),或者编写你自己的客户端来驱动SVN库来完成它(这可能很难但仍然可行);那么我认为你将不得不牺牲上面2和3中的一个。
(如果你牺牲了3,你可以立即转储版本库,并且只需要修改一个版本就可以转储文件,但是我认为仅仅为了修改一个简单的修订版本就不值得冒险......)
要创建分支的合并,创建一个单一提交每个中,你可以使用脚本分支提交,我使用了以下内容:
#/bin/bash
BRANCH="http://your branch url"
for i in {1127..1138} # list of revisions
do
REV=$i
echo $REV $BRANCH
echo merged $REV from $BRANCH > tmps.commit
svn log -c $REV $BRANCH >> tmps.commit
svn up
svn merge -c $REV $BRANCH ./
svn commit -F tmps.commit
rm tmps.commit
done
这将检查您为特定分支指定的每个修订版本,并对当前目录执行提交,从而保留每个更改与相应的消息。
我刚刚成功地使用了此脚本,它确实很好。唯一的考虑是,由于该脚本在X到N之间循环了所有版本号,所以它们不是纯粹连续的数字,例如,我们可能有修订版1131,然后是修订版1135。在这种情况下,我们会将一个空白的修订提交合并到新分支中,创建一个没有更改的提交。我可能会在下次修改这个脚本来检查tmps.commit是否为空,如果是这样,请继续以避免这些额外的没有更改的提交。由于SVN不允许没有评论的提交,这应该按预期工作。 – jcpennypincher 2014-10-20 20:56:37
- 1. 有没有办法将提交历史从SVN仓库合并到Git分支?
- 2. 合并后的Git分支和提交历史
- 3. 删除历史中合并的分支?
- 4. SVN提交从分支到分支的所有未合并版本
- 5. Git - 从以前的提交和拆分提交历史分支
- 6. 将分支合并回SVN的问题
- 7. 合并两个git仓库,保留所有提交历史
- 8. 乌龟SVN合并:分支 - >树干修正历史树
- 9. 移动历史SVN提交到现有的Github回购?
- 10. 如何:SVN分支合并
- 11. 我如何在Git中维护“主题分支”合并历史?
- 12. svn分支合并分支
- 13. 如何在不丢失提交历史的情况下合并?
- 14. 为什么git svn dcommit会失去本地分支合并提交的历史记录?
- 15. 使用git-svn将svn分支合并回trunk和trunk回到分支
- 16. Git:如何查找分支A中所有提交的派生分支B中的所有提交合并回A?
- 17. Subversion:你如何找回被分支反向合并的提交?
- 18. Git合并中间提交的分支
- 19. 将我的所有提交(包括合并)压缩到一个提交而不改变历史记录
- 20. 将迄今为止所有的git提交转换为单个提交并清除所有历史记录
- 21. 来自SVN的所有提交历史记录都没有迁移到GIT
- 22. 使用SVN将未提交的更改合并到其他分支中
- 23. svn分支提交 - 实验提交
- 24. 不通过所有提交重写git回购历史记录
- 25. 从清洁提交历史分支中创建一个新的分支
- 26. 如何从历史档案副本中的主分支中撤销合并或重新分支的分支
- 27. 推送mercurial合并分支没有历史
- 28. 的svn:合并分支
- 29. 在GIT中合并分支机构的历史记录?
- 30. 如何查看Pycharm中单个分支的提交历史记录?
哪个版本的SVN在服务器上运行? 1.5和更高版本对1.4或更低版本的问题做出了巨大的改变。 – 2010-08-24 19:28:03