-
Notifications
You must be signed in to change notification settings - Fork 249
Git flow
Note: This article assumes that you understand the basic concepts of the git version control system.
On the Adapt project, our mantra when it comes to releasing new versions of the framework and core plugins is 'little and often'. To achieve this, we've adopted a similar cut-down approach to the popular 'git flow' model to that used by GitHub: we've done away with develop branches in favour of merging directly into master, which not only means much less testing is required, but more importantly for our users, much more frequent releases 🎉 (something which we find works much better with the oft fluctuating developer resource we rely on).
On the Adapt project, we organise the branches in our repos according to GitHub flow - a simplified variation of the git flow model. For those familiar with git flow, you will notice that there are no develop branches anywhere to be found (you can read more about GitHub flow here).
We use the following branches in the core Adapt repositories:
Name | Description | Persisting |
---|---|---|
master |
Contains the stable, released code. | yes |
release/VERSION_NAME (e.g. release/v2.0 )
|
A release candidate branch. Contains development code, and should not be considered stable. Use this code at your own risk! | no |
issue/TICKET_NAME (e.g. issue/1024 )
|
A self-contained bug-fix. Should be named after a corresponding issue ID. Finished changes should be submitted as a pull request. | no |
feature/FEATURE_NAME |
A self-contained feature. This should also be named with an issue ID (see above). Finished changes should be submitted as a pull request. | no |
We also apply the following rules to the core Adapt repos (i.e. those owned by @adaptlearning):
- The
master
branch is the only persisting branch. All other branches should be deleted post-merge. - Core Adapt repos should only ever have
master
andrelease
branches. - The
master
branch contains only thoroughly tested code, and should only ever merge code from arelease
branch. -
feature
branches represent isolated, new functionality, and should be taken from the latestrelease
branch. Once work is complete, code should be submitted as a pull request (PR) to the latestrelease
branch (NOTmaster
). - Bug fixes (i.e.
issue
branches) should be submitted as a PR to the currentrelease
branch (NOTmaster
-- due to our frequent release schedule, we don't allow hotfixes directly intomaster
). - Anyone who is making a change to a repo should create and work from their own fork (including where possible, the core team).
We go through the following schedule prior to making a release:
- The core development team assign a bunch of issues/features to the relevant release in our bug tracker.
- A
release
branch is created from the latestmaster
code. - The coders are let loose 🔧, and submit their additions as PRs using the aforementioned process.
- Once all work has been done, we call a code freeze ❄️, and the branch goes through our testing process.
- Any issues found during testing are fixed.
- Once the testing team are happy, we're good to release.
Once the release code has been properly tested, we are ready to merge back into master. When this is done, we tag the master branch with the release number, and party! 🎉🎈🍹
- Framework in Five Minutes
- Setting up Your Development Environment
- Manual Installation of the Adapt Framework
- Adapt Command Line Interface
- Common Issues
- Reporting Bugs
- Requesting Features
- Creating Your First Course
- Styling Your Course
- Configuring Your Project with config.json
- Content starts with course.json
- Course Localisation
- Compiling, testing and deploying your Adapt course
- Core Plugins in the Adapt Learning Framework
- Converting a Course from Framework Version 1 to Version 2
- Contributing to the Adapt Project
- Git Flow
- Adapt API
- Adapt Command Line Interface
- Core Events
- Core Model Attributes
- Core Modules
- Web Security Audit
- Peer Code Review
- Plugins
- Developing Plugins
- Developer's Guide: Components
- Developer's Guide: Theme
- Making a theme editable
- Developer's Guide: Menu
- Registering a Plugin
- Semantic Version Numbers
- Core Model Attributes
- Adapt Command Line Interface
- Accessibility v3
- Adapt Framework Right to Left (RTL) Support