Wednesday, 11 January 2012

Reintegration merge in SVN using TortoiseSvn

Currently doing some reintegration merges in SVN, and one thing
tripped me up. I forgot to commit the mergeinfo file that got created
during the merge!! This would have meant that SVN would have no
knowledge that a branch was already reintegrated back into trunk (or
another branch).

The process using TortoiseSVN would be:

For example, where we are merging big_branch_1 into trunk

1. Checkout trunk into working directory and go into this directory in Explorer

2. Using TortoiseSvn right-click and select TortoiseSvn --> Merge

3. On the Merge dialog box, select "Reintegrate a branch" radio
button, click Next

4. Under "Tree merge", and under "From URL" select the branch we want
to reintegrate, then click on Next.

5. Under "Merge options", you can select options such as ignoring or
comparing whitespace differences, etc.
I normally click on "Test merge" so it can go through a test of the
merge and show in advance any potential conflicts. (I haven't seen
any, but I think that's what it does)

7. Click on "Merge", and fix any conflicts that come up.

6. After that's done, do a commit, and put in an appropriate message
to indicate what you've done

7. NOTE 1: During the commit, make sure "Show unversioned files"
checkbox is ticked

NOTE 2: There will be an additional, unversioned change listed in the
commit list. At first I thought it was a new file, but it's actually
an updated SVN property.
The svn:mergeinfo property make sure you commit this change,
otherwise, SVN doesn't know that a branch has been reintegrated.

If you leave out this file from a commit, all that SVN knows is that
you put in a bunch of changes to a number of files.

In one earlier merge, I rolled back the "file". So I just went back
into that directory, ran through the merge again, and committed the
updated svn:mergeinfo.
There shouldn't be any other changes to commit since the changed files
have already committed. I only did this so that svn:mergeinfo was up
to date.

Some information in this post may be incorrect as I've never had to do
these types of merges before. I'll update them once I've read up more
on this.

Further reading:

No comments: