You are here: Home V2 Software Software More ... Developer Notes Legacy Notes Merging in new release scheme

Merging in new release scheme

Instructions on how to merge in the new release scheme - only from an Eclipse point of view.

This assumes that you are using Eclipse, and that the repositories for each of the different branches are in a different Eclipse workspace. The general strategy of the new release scheme is also available, and a good text describing this approach for another project.

 

Note: should it be necessary to rename existing tags, then do it in the shell with the following commands

cvs -d :ext:<username>@ccpn.cvs.sourceforge.net:/cvsroot/ccpn rtag -r release_2_0_8 release_2_0_5_5 ccpn
cvs -d :ext:<username>@ccpn.cvs.sourceforge.net:/cvsroot/ccpn rtag -d release_2_0_8 ccpn

 

  1. Make sure all changes are checked in (both stable and trunk), and that the API is working in trunk.
    1. Switch to trunk. Make sure everything is refreshed and updated. Now tag the repositories (when I'm talking about repositories, I'm referring to the Sourceforge and internal biochem ones). Select both the ccpn/ and ccpnint/ projects (or whatever they are called) and go to Team->Tag as Version. The version tag is 'trunk_<version>' where <version> is the point where stable and trunk diverged (e.g. 2_0_4).
    2. Switch to stable. Make sure everything is refreshed and updated. Again tag the repositories. The version tag here is 'stable_<version>' where <version> is the point where stable and trunk diverged (e.g. 2_0_4).
  2. Now the trunk and stable are both tagged, so we can go back to the last state before the merge.
  3. Create (or switch to) an Eclipse workspace called merge. It is safer to do the merge in a separate repository, so that nothing 'wrong' gets checked in.
  4. Make sure that the merge workspace is on the HEAD (trunk) branch for both repositories. If not, use 'Team->Switch to another branch or version', then select the HEAD tag, click Finish. Make sure everything is refreshed and updated.
  5. Do the merge, for both repositories separately (so in the merge workspace!):
    1. Select the relevant project
    2. Go to Team->Merge.
    3. For 'Branch or version to be merged', use branch->stable.
    4. For 'Common base version', use 'ccpn_<version>'.
    5. For safety, only select 'Preview the merge in the synchronize view'.
    6. Press Finish
    7. Now Eclipse should present a view of the files to be merged. Blue ones are fine, red ones have conflicts (those have to be resolved first - we also have to assign responsibilities on who has to be contacted about certain files).
    8. Merge all the necessary files. Tip: the directories model/, python/memops/format/compatibility/ often flag up as having problems with merging. Since these should always come from trunk, it is safe to select them and click 'Mark as merged'. Tip: Also have a look at the history for files with problems - when were the changes made on trunk/stable side?
    9. Commit all changes (to trunk).
  6. At this stage, the stable changes are into trunk, and the repositories in the merge workspace are on the trunk branch
  7. This is a good time to tag (again) to make sure we can go back to the merge point. Use 'merge_<version>'.
  8. Test, test. Test some more, and test. Plus do some testing.
  9. TODO at this stage we also need a protocol of what testing needs to be done, whether there are sync issues with NMR-STAR, ...
  10. If all is working OK, it's now time to update the stable branch with the trunk code.
  11. IMPORTANT: First tag the HEAD repositories (plus possibly any other ones like recoord, ...) with the new 'ccpn_<newVersion>' version tag (e.g. ccpn_2_0_5). See point 1.1.
  12. Switch the repositories in the merge workspace to the stable branch, using 'Team->Switch to another branch or version', then select the branch->stable tag, click Finish.
  13. Now merge trunk back into stable.
    1. Select the relevant project
    2. Now go to Team->Merge.
    3. For 'Branch or version to be merged', use HEAD.
    4. For 'Common base version', use ccpn_<version> - NOTE THIS HAS TO BE THE LAST JOINT POINT, so in the current example this is still <version>, not <newVersion>!
    5. Select 'Preview the merge in the synchronize view' and 'Merge non-conflicting changes automatically'.
    6. Press Finish
    7. Now Eclipse should present a view of the files to be merged. Blue ones are fine, red ones have conflicts (those have to be resolved first - we also have to assign responsibilities on who has to be contacted about certain files).
    8. Merge all the necessary files. Tip: Generally you will want to do 'Overwrite' in case of conflicts to get the trunk version into stable. However do check whether any changes were made in the stable version while the merge was ongoing - this might create problems!
    9. Commit all changes (to stable)
  14. We're done. Now also tag stable with tag 'ccpn_<newVersion>_stable'.