At my workplace, we use an SVN repository for the source code, which holds the main application and some other projects, and for the main application it is structured like this:
- trunk
- app
- tags
- app
- 16.2.0
- 16.3.0
- ...
- branches
- app
- 17.1.0
- 00_master
- 01_feature
- 02_other feature
- ...
So in the branches we have one container for each new release, and inside that there is a "master" branch, created using svn copy
from the trunk, and one branch for each feature scheduled for that release, created by using svn copy
on the master branch.
When a feature is complete, it is tested and then merged in the master for its version, and at the end, the master is merged into the trunk, which is then used to open another version branch.
However, it has happened that one feature couldn't really be completed for the version it was scheduled into and had to be postponed.
So, what I did, was to create the master branch for the new version, from that create the branch for the postponed feature, and then try to merge the old branch from the previous version with this new one.
However, the SVN client refused to perform the operation, due to the different ancestry of the two branches.
Is there another way, given this setup, to move a feature branch from one version branch to another? Or should we really change the layout here?
--ignore-ancestry
which forcessvn
to rely on the diffs alone. That option is discussed here.