-
Notifications
You must be signed in to change notification settings - Fork 15
Development Process
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.
Gitflow utilizes the core feature of Git, which is the power of branches. In this model, a repository has two core branches:
-
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”).
-
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:
-
Feature — This derives from the develop branch and is used to develop features.
-
Release — This also derives from develop branch but is used during releases.
-
Hotfix — This derives from the main branch and is used to fix a bug in the production branch that was identified after a release.