At regular intervals, I receive a new release of a vendor's software, delivered as source code in a compressed package, and I don't have access to the vendor's source code repository. We make changes to the vendor's source code between their releases. Our changes do not get incorporated into their releases, but I need to merge changes from their releases into my mainline.
My repository layout looks like this:
- /branches/Vendor X release 1.0
- /branches/Vendor X release 1.1
- /trunk/
The workflow I followed was:
- I added Vendor X release 1.0 as a branch and then copied it to the trunk.
- We made some changes to the source code on the trunk and then received Vendor X release 1.1.
- I added Vendor X release 1.1 to a branch. Now, I would like to merge Vendor X release 1.1 into the trunk.
The problem I am having is that no matter how I try this, I end up with either the merge resulting in no changes to the trunk, or every file being reported as a tree conflict.
I think that I would like to somehow do the following: tell Subversion to merge each file without consideration for the revision number of the file. I think that Subversion is reporting a tree conflict for each file, because the files did not originate from the same point in the revision history. However, in many cases these files are identical.
Thank you in advance for any help.
In non-subversion terms, you want to integrate the changes between Vendor X release 1.0 and Vendor X release 1.1 into your trunk.
I would create just one Vendor X branch and use tags to identify version numbers. Whenever you receive a new vendor X version, checkout the branch, copy the new version's files into your working directory, apply
svn add
andsvn delete
as appropriate, and commit. Subversion now has the correct diff information for everything vendor X did during the two releases. After that, you can merge the changes between the last two vendor releases (aka the last tweo revisions in the vendor X branch) with the trunk.