This is an old revision of the document!

Merge Strategy


  • Most of the work in deployment customizations are to do with localization and customizing modules.
  • Unlike a release branch the deployment customizations might have enhancements (release branch only has bug fixes)
  • Keeping track of your changes in one branch to apply it to the other is a hassle for most developers, especially given the time pressures of a deployment
  • Though we have recommended the application of fixes to the trunk at the same time you do it on the branch, this has not happened and is seems not likely to happen.
  • Automated merging cannot be trusted especially with a large diff between the deployment branch and the trunk. Also the deployment branch might have customizations you do not want to see in the trunk. Thus the only option is manual merging.

Thus the only option we have is work with the delta we have between a release/deployment branch.

High Level Approach

  • Use a visual merge tool (dedicated to the task of merging) to make it easier. I am using meld ( ).
  • Each module/library owner should then use this tool to look at the diffs and then merge what is relevant back into the trunk.
  • We need to assign a list of module/library owners so that all areas are covered. Also they are the best people to know which merges are relevant.
  • Similar to the release cycle we probably need to have a merge cycle to ensure that all the bug fixes, relevant enhancements get back into the trunk. The only way to make the merge a success is if all areas are covered in one hit so we all need to work together on this.
  • Any clear fixes/enhancements we can identify should be recorded in the bug/enhancement tracker for future reference purposes.

Module and Library Owners/Maintainers

The list of module and library owners and maintainers can be found here

Merge Process Kickoff Meeting

Here is a tentative agenda for the Merge Process Kick-Off meeting

  1. Review customizations and changes made to Sahana modules
  2. Identify key components that will be merged back into Sahana trunk
  3. Localization work
  4. Define a merge process that will work for everyone
  5. Nominate point people and Sahana committers who will participate in the merge process
  6. Define a brief schedule and milestones for the work

Merge Process per Bug Fix / Enhancement

Have Ready

  • Identify the module/library owner and get in touch with them over email. You can find the list here
  • Checkout an updated version of the trunk
  • Have a merge tool handy to compare the difference between the trunk and you deployment code base

Rigorous Process

  1. Identify and isolate Bux Fix in code to merge using the merge tool
  2. Create a patch for the bug fix
  3. Register the bug fix in the tracker and attach the patch
  4. Module owner takes the patch, adds it to the trunk and tests it
  5. Module owner approves the patch and closes it in the patch tracker

Simple Process

  1. Speak to module owner to identify which fixes in module are relevant

Merge Process for Localization work

QR Code
QR Code dev:merge_process (generated for current page)