The following is a procedure for synchronizing all group member's versions of Jetstream. To be effective it must be performed on a regular basis, for example every month.

  1. Initialize synchronization staging area
    • A temporary work space for activities such as merging, testing, and debugging
    • The sync staging area begins as a clone of the central repository containing the current baseline version of Jetstream
    • Read/Write permissions are given to all group members to allow pushing to the sync staging area
  2. Merge:
    • Every month, a group of 3 or 4 members are required to merge their latest changes into sync staging area. See here for the current groupings.
    • Members are selected on a rotating basis. Eg: 1st month of cycle, members 1 - 4; 2nd month, members 5 - 8; etc...
    • 1st of 4 begins the merge process by pushing latest working state of their code to sync staging area
    • 2nd, then 3rd, then 4th of 4 pulls from sync staging area, merges locally (likely including resolving merge conflicts) then pushes back to sync staging area
    • Each member must confirm that their merged version of the code can be compiled and runs the Jetstream Test Suite test case(s) that they own before pushing to the sync staging area. This may required debugging on the part of each member
    • See here for a detailed step-by-step procedure including specific GIT commands
  3. Testing
    • Each member of the group (not just the merging group) pulls from the sync staging area and runs their assigned Test Suite case(s) to confirm nothing has been broken during the merging process or by any added features.
    • See here for step-by-step instructions to pull from the staging area.
    • If fixes are needed, they are made by the user (in conjunction with the gatekeeper if necessary), and they are pushed to the staging area.
  4. Baseline Update:
    • After testing is complete, the final commit to the sync staging area is pushed to the central repository by the gatekeeper
    • Gatekeeper is the only one with permission to write to central repository
  5. Sync:
    • All members synchronize with the updated baseline code in the central repository
    • See here for step-by-step instructions to pull the latest baseline code

The diagram below illustrates this process.

js_code_merge_process.jpg