Skip to content

Development Process

Mike Dickson edited this page Mar 29, 2021 · 6 revisions

The OpenSim-NGC project team welcomes contributions into OpenSim-Sasquatch. We follow a well defined development process that emphasizes curation of the code and, along with testing should provide a high quality result. The development process we follow for changes/features is described here.

Contributions to any of the Git managed repositories use Gitflow as a branch/merging strategy. In addition to the description below you can find a detailed description at https://nvie.com/posts/a-successful-git-branching-model/ as well as description of some tooling that can be used to make things easier. In GitFlow, the "master" branch is always the current release quality branch. All active integration work leading up to a release is done on develop. You cannot commit directly to develop however. Individual changes should be made to a feature branch that is created off current develop. You can then work on the feature, pushing potentially multiple commits (git flow publish). When you're comfortable that the feature is ready to be integrated you can do a pull request or PR. The PR is a request to merge from your feature branch into develop. There is a standard Github form for creation of a PR.

Workflow Model

Gitflow utilizes the core feature of Git, which is the power of branches. In this model, a repository has two core branches:

  1. Master/Main — This is a highly stable branch that is always production-ready and contains the last release version of source code in production. (For the purposes of this article, we will be referring to this branch as “main”).

  2. Develop — Derived from the main branch, the development branch serves as a branch for integrating different features planned for an upcoming release. This branch may or may not be as stable as the main branch. It is where developers collaborate and merge feature branches.

Note: The previous two branches are the starting points for any project. They are very important and should be protected against accidental deletion until the project is better defined. Only authorized leads or project owners should be given the responsibility to merge changes from other branches—such as the feature branch, which we’ll discuss later—to the develop or main branches.

Apart from those two primary branches, there are other branches in the workflow:

  1. Feature — This derives from the develop branch and is used to develop features.

  2. Release — This also derives from develop branch but is used during releases.

  3. Hotfix — This derives from the main branch and is used to fix a bug in the production branch that was identified after a release.

Clone this wiki locally