当前位置:  开发笔记 > 开发工具 > 正文

Subversion:如果在分支中进行多次连续更改,如何仅将特定修订合并到trunk中?

如何解决《Subversion:如果在分支中进行多次连续更改,如何仅将特定修订合并到trunk中?》经验,为你挑选了2个好方法。

我一直在使用TortoiseSVN,svn和subclipse,我认为我理解基础知识,但有一件事一直困扰着我:合并引入了不需要的代码.这是步骤.

trunk/test.txt@r2.使用"A"和返回创建了一个测试文件:

A
[EOF]

branches/TRY-XX-Foo/test.txt@r3.分支trunkTRY-XX-Foo:

A
[EOF]

branches/TRY-XX-Foo/test.txt@r4.做出了不必要的改变TRY-XX-Foo并承诺:

A
B (unwanted change)
[EOF]

branches/TRY-XX-Foo/test.txt@r5.做了一个重要的错误修复TRY-XX-Foo并承诺:

A
B (unwanted change)
C (important bug fix)
[EOF]

现在,我想只将重要的bug修复合并到trunk.所以,我运行merge进行修订4:5.我在工作目录中的最终结果是冲突.

trunk/test.txt:

A
<<<<<<< .working
=======
B (unwanted change)
C (important bug fix)
>>>>>>> .merge-right.r5
[EOF]

违背我的意愿,Subversion现在已将"不需要的更改"包含在中继代码中,我需要手动清除它们.当在分支中进行多个连续更改时,是否有一种方法只合并指定的修订版本?

问题的一部分是B(unwated change)包含在.merge-right中,我无法区分它来自哪个版本.我通常使用TortoiseMerge,这是它的外观.

text.txt.working



1> orip..:

仅使用svnmerge合并修订版4,7和11-15 :

svnmerge.py merge -r4,7,11-15

并使用常规svn:

svn merge -c4,7 -r10:15 http://.../branches/TRY-XX-Foo



2> Eugene Yokot..:

问题是两个svn

A
<<<<<<< .working
=======
B (unwanted change)
C (important bug fix)
>>>>>>> .merge-right.r341

而TortoiseSVN将这种情况视为双向合并.我听说过3-way merge这个术语,所以我给了Beyond Compare一个镜头.通过使用TortoiseSVN进行快速设置,编辑冲突现在会显示以下屏幕.这并不完美,因为它仍然需要人为干预,但至少我可以分辨出哪些变化来自哪里.

见截图.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有