views:

37

answers:

0

We use TortoiseSVN on Windows and VisualSVN server.

I just completed the merge and reintegration of a feature branch back into trunk. The experience wasn't as smooth as I'd hoped and I have some questions based on my experience.

1) Merging trunk changes into branch. I went through and identified all of the repository revisions that affected trunk during the time my branch was active. I ignored revisions that affected things outside of trunk, such as revisions committed from my branch. After completing the merge of the "trunk" revisions into my branch, I attempted to reintegrate my branch into trunk. SVN stopped me and complained that I hadn't merged ALL trunk revisions that occurred while my branch was active. Why would I attempt to merge revisions into my branch that have no effect on my branch? Why can't SVN determine that the missing revisions have nothing to do with trunk?

I eventually had to merge all those revisions SVN was complaining about into my branch, but I set the checkbox option "Only record the merge (block revisions from getting merged)". It appears this option tricks SVN into marking the revisions as merged without actually merging them. Was this the right thing to do?

2) Odd error while Testing branch reintegration merge. When I ran the reintegration merge Test, SVN complained that one of my branch Visual Studio project web references was missing a range of revision merges. Using TortoiseSVN, I manually merged just that web references folder using the matching trunk folder, specifying the missing range of revisions. When I ran Test again, SVN complained about a single revision missing on that same folder. I tried merging the single revision, then various combinations of revisions, without any success. Since the web refernces are easily re-creatable, I eventually deleted this folder entirely from my branch, at which point SVN agreed to proceed to the reintegration step. After the reintegration merge back into trunk completed successfully, I noticed that the same web reference folder was now missing from trunk. A warning light started flashing in my head. I had to delete the folder in my branch in order to proceed with the reintegration into trunk. But SVN looked at my emergency fix and made the same change in trunk. This could be very dangerous, depending on what needs to be done to patch up a branch in order to reintegrate it. It appears that SVN wants the branch to look like a mirror image of trunk, and that any deltas it detects are applied to the trunk. In this case, should i have deleted the branch web reference folder within Repo Browser, then re-added it in Repo Browser using the trunk version?

3) When Tortoise/SVN marks a revision as merged (it shows up grayed-out in revision selection dialogs), is it marked as merged only in the context of the branch currently being merged? In other words, I have other branches that will eventually need to be merged and reintegrated also - will the previously merged trunk revisions be available again for later branch merges?

Thanks for any info you can provide.