I have been using TortoiseSVN, svn, and subclipse and I think I understand the basics, but there's one thing that's been bugging me for a while: Merging introduces unwanted code. Here's the steps.
trunk/test.txt@r2
. A test file was created with 'A' and a return:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r3
. Branched out the trunk
to TRY-XX-Foo
:
A
[EOF]
branches/TRY-XX-Foo/test.txt@r4
. Made an unwanted change in TRY-XX-Foo
and committed it:
A
B (unwanted change)
[EOF]
branches/TRY-XX-Foo/test.txt@r5
. Made an important bug fix in TRY-XX-Foo
and committed it:
A
B (unwanted change)
C (important bug fix)
[EOF]
Now, I would like to merge only the important bug fix back to trunk. So, I run merge for revision 4:5
. What I end up in my working directory is a conflict.
trunk/test.txt
:
A
<<<<<<< .working
=======
B (unwanted change)
C (important bug fix)
>>>>>>> .merge-right.r5
[EOF]
Against my will, Subversion has now included "unwanted change" into the trunk code, and I need to weed them out manually. Is there a way to merge only specified revisions when multiple consecutive changes are made in the branch?
The part of the problem is that B (unwated change) is included in .merge-right and I can't tell the difference between which revision it came from. I usually use TortoiseMerge and here's how it looks.