raptor-ethz / raptor

ROS 2 workspace for handling communication and control with a mavlink-quadrotor-system using PX4.
1 stars 0 forks source link

Branch Development Structure #19

Closed pstrauch closed 1 year ago

pstrauch commented 1 year ago

We should discuss a workflow structure with branches to secure our main branch. I list three possibilities here:

Production + Feature

Workflow

After implementation, the feature is tested on the feature branch. If successful, a pull request is opened for adding the feature to the production branch.

Arguments

Production + Development + Feature

Workflow

After implementation, basic tests are run on the feature branch. If successful, a pull request is opened for adding the feature to the development branch. On the development branch, multiple features can be tested simultaneously to check for conflicts. If changes are needed, they can either be done directly on the development branch or on a separate branch for resolving conflicts. After a new package including multiple features is tested successfully, it can be added to the production branch.

Arguments

Production + Stage + Development + Feature

Workflow

Similar to Production+Development+Feature. Conflicts between multiple features can be resolved on the development branch which can be based on fake data and systems. Once it is safe to assume that no relevant structures are broken, these changes are added to the staging branch, where recent packages can be tested on the real system. Finally, packages can then be released to the production branch.

Arguments

pstrauch commented 1 year ago

We leave it at Production + Feature for the moment until we have the basic architecture set up.

From then on, we might use a development branch in between. We deploy the development branch to production by including proper documentation for the new features. Deploying releases to the production branch also helps to get a good high level overview of what features are present in the latest working version.

Note: Development branch should use default merging, whilst production branch should use something similar to sqash-merge.