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.
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
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
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.
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
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.