问题
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.
回答1:
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
and svn 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.
回答2:
IMHO you can avoid merging. Here is it:
- Create 1.0 branch
- Copy 1.0 to 1.1
- Perform all required changes on 1.1
- Copy 1.1 to trunk.
If you still insist to merge then:
- Create 1.0
- Copy 1.0 to trunk
- Copy 1.0 to 1.1
- Make required changes to 1.1
- Merge changes done to 1.1 to trunk. The changes are from start of 1.1 till it's end.
This also maybe helpfull
回答3:
The solution I followed was:
- Created a release/ line for the vendor software.
- Added Release 1.0 to the release/ line.
- Branched release/ to create trunk/ and then replaced trunk/ with a working copy containing all changes I made after Release 1.0.
- Checked out a working copy of release 1.0 and added in release 1.1. Committed.
- Merged release/ into trunk/. No tree conflict or merge conflict.
来源:https://stackoverflow.com/questions/1683096/subversion-merging-a-vendors-source-code-releases-into-mainline-at-regular-int