This document describes the branching strategy and release flow for our kotlin-compiler-server repository.
-
master
- Always reflects the latest stable state.
-
<version>
- This branch contains the compiler server with the Kotlin version corresponding to the branch name.
-
kotlin-community/dev
- This branch is the development branch. All the new features should be merged into this branch.
-
kotlin-community/<version>
- This branch is the prelease development branch for the exact Kotlin version.
-
feature/KTL-54321-*
-
Feature branches, created from the current
kotlin-community/devbranch. -
Naming:
feature/KTL-<task-id>-<short-description>
-
-
hotfix/<version>/KTL-54321-*
-
Hotfix branches are created from the target version branch.
-
Naming:
hotfix/<version>/KTL-<task-id>-<short-description>
-
This block describes working on a new feature flow.
- Create a branch from the latest
kotlin-community/dev: - Implement your changes in this branch.
- Cover your changes with tests.
- Move task to
Code Reviewstate in YouTrack. - Open a Pull Request to a
kotlin-community/devbranch. - After review approval: merge Pull Request and move a task to
Ready for Deploystate in YouTrack.
This block describes the process of releasing a new version. More about Kotlin release types.
- Create a branch with the version name:
- if it is a
bug fixortoolingrelease create branch from the previous release branch - if it is
languagerelease version (Beta*andRC*are included):- if specific
kotlin-community/<stable-version>branch exists, create branch from it - otherwise:
- for
Beta*version create new branch fromkotlin-community/devbranch - for
RC*and stable versions create a branch from the previous release branch within that version line.
- for
- if specific
- if it is a
- Modify the Kotlin version in the branch.
- If the current Kotlin version is bigger than in
master, then create a pull request tomaster. Otherwise, push your changes to the remote branch and skip the rest of the steps.- creating a pull request should be from the separate branch like
merge/2.0.0-RC2 - use rebase instead of merge for resolving conflicts
- after the pull request is merged, delete the
merge/*branch.
- creating a pull request should be from the separate branch like
- Wait until the tests are completed successfully.
- Merge the branch to master.
- Create a branch from
<version>:git checkout -b hotfix/KTL-<task-id>-<short-description> origin/<version>
- Implement your fix in this branch.
- Move task to
Code Reviewstate in YouTrack. - Open a Merge request to the
<version>branch. - After review approval: move the task to
Ready for Deploystate in YouTrack. - After all tests are passed, merge the branch to
<version>. - Wait until the deployment on TeamCity is completed (it will appear not immediately)
- Move task to
Fixedstate in YouTrack.