BACKGROUND

Field of Art

This disclosure relates generally to version control systems and more particularly to automated branching workflows for software version control.

Description of Art

Versioning control systems are used for keeping track of changes in a code project during software development. However, common branching release workflows are not well suited for extended release cycles. One issue with the common release process is that long-lived branches will inevitably create merge conflicts with other branches, such as a development branch. In particular the most common branching workflows are designed to work well within agile development environments that require a release branch to be open for only a short time. A process for ensuring that the development branch stays up-to-date with changes merged into a release branch and a master branch over the course of long release cycles would be beneficial.

SUMMARY

The traditional software development branching and release management process is not compatible with development environments that require long release cycles. When a release branch from a long release cycle is merged into a master (i.e., production) branch, bug fixes made to the release branch and to the master branch are not merged into the development branch in a timely manner. In such cases, a most recent version of a code base or other versioned document system may not be available for further development.

The present system and workflow facilitate automatic merges from the release branch into the development branch when changes (e.g., bugfixes, hotfixes) are merged into the release branch or the master branch, thus keeping the development current with respect to the release and master branches without formally closing the release branch.

Automation within a version control environment that combines pull requests to a master branch with merges back to the development branch makes it more feasible to use a software development release process for developing and releasing code within organizations that require long release cycles (e.g., due to regulatory requirements or quality assurance test parameters).

The version control system supports a workflow that includes automated updates to merge changes to a development branch. The workflow includes storage of the latest versions of development changes to a software project to a development branch. The workflow also supports publication of a version of the software project to a master branch. To ensure that document versions from the development branch are ready to be published while simultaneously facilitating ongoing development, the system prepares a software version for publication at one or more staging branches, separate from the development branch and the master branch. That is, a staging branch may be created using a document version from the development branch and preparatory steps such as bugfixes, quality assurance tests, and regulatory checks can be performed on the software at a staging branch, while development continues separately on the development branch. When a change is made to a document version at a staging branch or at the master branch, the change is also propagated to the development branch so that development continues with the most current and bug-free version of the document.

The features and advantages described in this summary and the following detailed description are not limiting and not all-inclusive. Many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof.

