Subversion branch reintegration

后端 未结 10 2008
予麋鹿
予麋鹿 2020-12-02 11:55

When a branch is reintegrated to the trunk, is that branch effectively dead?

Can you make modifications to the branch after the reintegration and merge those back

相关标签:
10条回答
  • 2020-12-02 12:20

    First of all, you should upgrade your Subversion client and server if you still use Subversion 1.7 or older. There is no reason to be using very old Subversion releases. As of 2016, the current version is Subversion 1.9. SVN 1.8 is also supported now and still receives bug fixes.

    The problem you ask about was solved in Subversion 1.8. Beginning with SVN 1.8, --reintegrate option has been deprecated. Reintegrate merges are now performed automatically. See Subversion 1.8 Release Notes entry related to the improvement.

    Read SVNBook 1.8 | Reintegrating a branch:

    If you choose not to delete your branch after reintegrating it to the trunk you may continue to perform sync merges from the trunk and then reintegrate the branch again. If you do this, only the changes made on your branch after the first reintegrate are merged to the trunk.

    ...

    Only Subversion 1.8 supports this reuse of a feature branch. Earlier versions require some special handling before a feature branch can be reintegrated more than once. See the earlier version of this chapter for more information: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

    0 讨论(0)
  • 2020-12-02 12:23

    No, the branch is still alive, but, at that moment, it is exactly the same as the trunk. If you keep developing on the branch, you are free to re-merge with the trunk later on.

    0 讨论(0)
  • 2020-12-02 12:24

    You can do it technically, you branch is not dead nor disabled, but it is not recommended to merge from branch to trunk after reintegration.

    You can find a full discussion about the reason for that, here: Subversion merge reintegrate

    Basically, it says, that it is possible to merge your changes again to the trunk, but since reintegration forces you to merge from trunk to branch prior to the reintegrate operation you'll be facing Reflective/Cyclic Merge which is very problematic in Subversion 1.5.
    According to the article, it is recommended to delete your reintegrated branch immediately after reintegration and create a new one with the same (or different) name instead.

    This is a known Subversion behavior which will be addressed in future version (probably in 1.6)


    0 讨论(0)
  • 2020-12-02 12:25

    You can keep on developing on the branch, the feature you will need is merge-tracking which is in Subversion 1.5, this means that additional merges from the branch only include new changes.

    0 讨论(0)
  • 2020-12-02 12:30

    You can merge from a branch to trunk, or trunk to a branch, as many times as you want.

    0 讨论(0)
  • 2020-12-02 12:31

    After you reintegrate from a branch into the trunk, you should do one of two things:

    • Delete your branch. This is the easiest, but it makes it harder to see the branch's history.

    • Tell your branch not to merge the reintegrate commit. If you reintegrate to the trunk, and commit it as revision X, you can run this command on your branch: svn merge --record-only -c X url-to-trunk. However, you shouldn't do this if you made any changes as part of the commit, other than the merge itself. Any other changes will never make it back into your branch.

    0 讨论(0)
提交回复
热议问题