Subject: | smerge from one branch to several, then from those to another doesn't work correctly |
I use feature branches. Sometimes a feature branch implements
something that's merged into multiple branches that depend on it. And
those get further merged into a release branch. All branches initially
come from a vendor's original source from SVN.
Initial setup:
# Create branches starting from original vendor's source.
# each will then go in its own direction
svk copy //vt/branches/vendor //vt/feature1
svk copy //vt/branches/vendor //vt/feature2
Now:
# (create //vt/branches/coolthing)
# this will then provide functionality used
# by both feature1 and feature2.
# Merge the new coolthing branch into the ones that use it
svk smerge //vt/branches/coolthing //vt/branches/feature1
svk smerge //vt/branches/coolthing //vt/branches/feature2
# Merge the feature branches into the release branch, which
# has all the stable features.
svk smerge //vt/branches/feature1 //vt/release
svk smerge //vt/branches/feature2 //vt/release
This works until the last line. Apparently SVK is confused by that the
coolthing changes are being merged from both feature1 and feature2.
The result is that the merge from feature1 goes well, but for feature2
smerge mysteriously forgets where it last merged from, and tries to
apply changes starting at the point where the feature2 branch got
created.
That is, all the branches are descendents of the vendor branch
ultimately, and in this case svk tries to apply all the differences
between the vendor branch and the current feature2 branch to the
release branch, even though they were already merged
into //vt/release.
The result of the last line should be an empty merge, unless other
changes were made to feature2, of course.