Looking at the list of revisions involved I would: 

- Revert any merges you have have already committed. 
- Merge the branch with revs 27 to 68 into the branch with revs 5 to 80.
      - Use the "Merge a range of revisions" option. 
      - Use the "specific range" option and "Show Log" to select one or 
more revisions to apply, starting from the earliest ones. 
      - If the merge comes up with conflict errors, you can cancel, revert, 
and try again with smaller batches of revisions. 
- Merge the branch with revs 5 to 80 into trunk.  

Hope that helps
Tony
On Friday, 18 June 2021 at 21:22:19 UTC+10 [email protected] wrote:

> Bruce and Stefan ,Thank  you guys For the detailed guidance  .. ill let 
> you know how it goes...
>
> Thanks again for the help
> On Wednesday, 16 June 2021 at 23:00:43 UTC+5:30 Bruce C wrote:
>
>> Branching and merging are at the heart of version control. The obvious 
>> source of information is the Subversion Red Book, specifically chapter 4 (
>> http://svnbook.red-bean.com/en/1.7/svn.branchmerge.html). That describes 
>> the process, although the specifics use the SVN command line for the 
>> examples, rather than TortoiseSVN GUI instructions.
>>
>> The general process is as follows:
>>
>>    1. Create a branch
>>    2. Make changes as a series of branch commits
>>    3. Regularly merge changes from the parent (often trunk) to detect 
>>    conflicts around the time that they arise. These merges are often 
>> described 
>>    as "update merges". Conflicts shouldn't arise often because developers 
>>    would normally ensure that they're not making changes to the same code 
>> that 
>>    another developer is also changing. If the conflicts are in the same file 
>>    but don't overlap (as far as the diff tool can determine) then they will 
>>    automatically be resolved. [The magic of version control.] However, if 
>> the 
>>    changes overlap the same code*, then the conflict will require some 
>> thought 
>>    of the code to resolve.
>>    4. Repeat previous 2 steps as required
>>    5. Perform a final update merge. Note that this causes the branch to 
>>    includes the branch changes plus all the changes to trunk. This is 
>> exactly 
>>    what you want trunk to be when the branch changes are included.]
>>    6. Merge the branch back to trunk. This is often described as a 
>>    reintegration merge. Note that this should not raise any conflicts as 
>> they 
>>    will have been resolved when the branch was being updated, with the final 
>>    update merge.
>>    7. Delete the branch. This is no longer required now that the changes 
>>    are included in the trunk. Note that the branch continues to be available 
>>    in the Subversion history, but that's a different subject that you can 
>>    investigate at some other time.
>>
>>
>> ** The following example is a classic conflict. The original code has the 
>> line "myVar = 1". A branch is created. Subsequently, a developer commits a 
>> change to trunk that changes the line to "myVar = 2". A separate change is 
>> committed to the branch that changes the line to "myVar = 3". When an 
>> update merge is performed on the branch (to bring the trunk changes to the 
>> branch), the merge reports a conflict that the line has changed in both the 
>> trunk and the branch. There's no way for the merge process to know whether 
>> the merged code should use the trunk change (setting the value to 2) or the 
>> branch change (setting the value to 3). The developer performing the merge 
>> has to make that decision manually, typically after discussing it with the 
>> other developer.*
>> So, what does this mean for you? Well, the following steps need to be 
>> performed:
>>
>>    1. Checkout the first branch.
>>    2. Merge the changes from trunk to this branch checkout (update merge 
>>    for first branch), resolving any conflicts that might arise.
>>    3. Commit the update merge for the first branch. [Note that the HEAD 
>>    of the first branch now includes the changes to the first branch plus the 
>>    changes to trunk. This is exactly what you want trunk to be.]
>>    4. Separately checkout (or switch to) trunk
>>    5. Merge the first branch to this trunk checkout (reintegration 
>>    merge). There should be no conflicts as those will have already been 
>>    resolved in the branch.
>>    6. Commit the reintegration merge of the first branch to trunk.
>>    7. Delete the first branch.
>>    8. Checkout (or switch to) the second branch.
>>    9. Merge the changes from trunk to this branch checkout (update merge 
>>    for second branch), resolving any conflicts that might arise.
>>    10. Commit the update merge of the second branch. [Note that the HEAD 
>>    of the Second branch now includes the changes to the second branch plus 
>> the 
>>    changes to trunk, including the changes from the first branch. This is 
>>    exactly what you want trunk to be.]
>>    11. Separately checkout (or switch to) trunk
>>    12. Merge the second branch to this trunk checkout (reintegration 
>>    merge). There should be no conflicts as those will have already been 
>>    resolved in the branch.
>>    13. Commit the reintegration merge of the second branch to trunk.
>>    14. Delete the second branch.
>>
>> All done.
>>
>> Now, where you are likely to get issues is the conflicts that arise from 
>> the merging. If the developers have not been careful, there may be 
>> overlapping code that needs manual resolution. This is something that is 
>> specific to your codebase and needs to be addressed by you. The normal 
>> practice is to think ahead to avoid conflicts or at least detect them early 
>> to resolve while it is fresh in the mind of all those involved. If this 
>> hasn't been done, then these conflicts are the results and effort will be 
>> required to overcome this.
>>
>>
>> You raised a specific query. Specifically, when you merge the changes 
>> from branch 1 (by Developer 1) to trunk, it is deleting files that were 
>> reintegrated into trunk from branch 2 (by Developer 2). Do the changes in 
>> branch 1 include deletion of that file (that was separately changed in 
>> branch 2)? If so, that's a conflict right there, that needs to be resolved. 
>> Developer 2 wanted to change the file but Developer 1 wanted to delete it - 
>> it isn't possible for Subversion to determine whether the overall developer 
>> preference is to change the file or delete it.
>>
>> Hope this helps.
>>
>> On Tuesday, 15 June 2021 at 17:27:10 UTC+1 Stefan wrote:
>>
>>> On Tuesday, June 15, 2021 at 12:44:58 PM UTC+2 [email protected] wrote:
>>>
>>>> Hello everyone ,
>>>>
>>>>
>>>> I am facing an issue when i am trying to merge the changes of two 
>>>> branches into the trunk.
>>>>
>>>> We had created two seperate branches from the trunk for two seperate 
>>>> features  for developement . ( Please  see the attached picture).
>>>>
>>>> Developer 1 worked uptill rev 68 and left our organisation. while dev 2 
>>>> continued uptill 80. Someone merged the Developer 2 with the trunk and did 
>>>> a  commit. We are trying bring the changes of Developer 1 to the trunk but 
>>>> not able to do so. It  deletes the files created by the Developer 2 while 
>>>> doing the merge .  Can some one guide me the exact process
>>>> I know this  is a silly question , but i have gone through the svn 
>>>> book  but cannot make anything out of it.
>>>>
>>>> The merge process which i follow. isswitch the working copy to trunk 
>>>> and  use merge two differnt trees . and merge from the trunk to the 
>>>> developer 1 branch.
>>>>
>>>
>>> No, don't merge trees. Use the "merge a range of revisions" option in 
>>> the merge dialog, then select the revisions of the branch that dev1 created 
>>> (27-68) onto trunk.
>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"TortoiseSVN" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tortoisesvn/fb5f2df3-4346-4595-a522-57d9f672081cn%40googlegroups.com.

Reply via email to