TarsFramework integrated several services like TarsRegistry,TarsNode,TarsProperty etc. The services were built by TarsCpp. TarsProtocol is a shared submodule of TarsCpp and some other Tars repositories. TarsWeb is a web tool that was built for TarsFramework management. We decided to choose v2.4 as the first Tars LTS version and build several versions rules those 4 related repositories. Just to make sure we could build better multi-version support here.
We made a basic rule for version deploy. The new version of each repository must follow this rule. v{main version number}
.{subversion number}
.{build number}
- The first main version number is 2, the first subversion number is 4. Each compatible feature improvement and bug fix on this version will be considered as a build. For example, bugfix on v2.4.0 will trigger a v2.4.1 tag release.
- We will plan further versions like v2.5,v2.6. But we have to keep each version forward compatible. Highlight the changes in the release note if it's not.
Everyone is welcomed to help us improve Tars on GitHub. Please read the following rules before you do anything.
- Please fork the repository at first.
- Branches like release/x.x is the master branch of each version. Do not send cross-version PR.
- Please make sure your release is well updated to prevent further conflict.
- Please checkout feature release from specific release branch, and follow the branch naming rule: feature/
{user_name}
/{feature_name}
. For example,feature/franklee/correct_error_message_on_property_table_missing
- Please checkout a hotfix branch if it's a hotfix. The naming rule for hotfix branch is: hotfix/
{user_name}
/{bug_name}
. For example,hotfix/franklee/fix_wrong_typing_on_servant_status_enum_define
- Please fully test your coding on a feature branch or hotfix branch.
- Merge your feature branch and hotfix branch on your local release branch after you have done your work
- Submit Pull Request to the release branch of Tars remote repository. Don't forget to write the necessary note.
Git Flow Diagram:
- Remote repository means repositories under TarsCloud organization like
TarsCloud/TarsFramework
in this document - Remote branch means branches in the remote repository
- Local repository is the repository you forked to your own repositories. (Not the repository in your computer)
- Local branch is the branch in your local repository.
- Please merge the latest release branch to master. Thus we could easily set up a new version branch.
- Only checkout from the master branch if you are set up a new version branch.
- Merge old version branch to master is prohibited.