-
Notifications
You must be signed in to change notification settings - Fork 20
Development and release guidelines
Daphne Cornelisse edited this page Sep 1, 2024
·
7 revisions
We are currently working towards release v0.3.0
. Features to be included in this release are found here.
-
Main Branch (
main
): This is the stable branch. All feature development, bug fixes, and hot-fixes are directly committed or merged here. Thoroughly tested and verified code should be present on this branch. -
Feature Branches: Each new feature, bug fix, or enhancement should be developed in its own branch, branched off from
main
. These branches are merged directly intomain
after review and testing. - Releases: Release tags are used to mark certain points on the main branch.
---
title: GPUDrive dev workflow example
---
gitGraph
commit
branch feature/behavioral-cloning
branch feature/resample-scenes
branch release
checkout release
commit id: "Current release" tag: "v0.2.0"
checkout feature/behavioral-cloning
commit id: "Behavioral Cloning 1"
commit id: "Behavioral Cloning 2"
checkout feature/resample-scenes
commit id: "Resample Scene 1"
commit id: "Resample Scene 2"
commit id: "Resample Scene 3"
checkout main
merge feature/behavioral-cloning id: "Merge BC"
checkout feature/resample-scenes
commit id: "Resample Scene 4"
checkout main
merge feature/resample-scenes id: "Merge RS"
merge release id: "New Release" tag: "v0.3.0"
-
Create a Feature Branch:
- Branch off from
main
using a descriptive name for the branch, e.g.,feature/imitation-learning
orbugfix/fix-memory-leak
.
- Branch off from
-
Commit Changes:
- Make frequent, small commits with clear and concise commit messages.
- Follow the commit message format:
type(scope): description [ticket/reference]
- Types can include
feat
,fix
,docs
,style
,refactor
,test
, orchore
. - Use
pre-commit
hooks for linting, formatting, and other checks before committing.
-
Open a Pull Request (PR):
- Once development in the feature branch is complete, open a PR to
main
. - Ensure that the PR description includes a summary of changes, any related issues, and testing steps.
- Once development in the feature branch is complete, open a PR to
-
Code Review and Testing:
- At least one other team member must review the PR before merging.
- Use automated tests to ensure the code works as expected and doesn't introduce new issues.
- Conduct performance tests, such as the learning benchmark.
-
Merge to Main:
- After approval, the PR can be merged into
main
. - Delete the feature branch after merging to keep the repository clean.
- After approval, the PR can be merged into
-
Prepare for Release:
- Determine the release date based on the project milestones.
- Review the
main
branch to ensure all features and fixes are ready for release.
-
Create a Release Candidate Branch:
- Branch off
main
to create arelease-X.Y
branch (whereX.Y
is the version number). - Conduct final testing on this branch to identify and fix any remaining issues.
- Branch off
-
Tagging and Versioning:
- Once testing is complete, update the version number in the codebase and create a Git tag for the release.
- Tag format:
vX.Y.Z
, whereX.Y.Z
follows semantic versioning (e.g.,v1.2.3
).
-
Merge to Main:
- After tagging, merge the
release-X.Y
branch intomain
. - Push the changes and tag to the remote repository.
- After tagging, merge the
-
Release Announcement:
- Update the project documentation, including the changelog, and notify the team and users of the new release.
-
Post-Release:
- Archive the
release-X.Y
branch if no further changes are expected.
- Archive the