PLESTY follows a strict branching model for its core repositories (plesty-sdk, plesty-lib, plesty-ci) and hub modules. Understanding this model is essential for contributing code.
The exp branch
The exp (experimental) branch is the integration branch for all development work. Every change flows through exp before reaching main.
main ────●────────────●──────────●
\ / /
exp ─────●──●──●──●──●──●──●──●
\ / \ /
feature ──────●──● ●──●
Core repositories
For plesty-sdk, plesty-lib, and plesty-ci:
Creating a feature branch
# Start from the latest exp
git checkout exp
git pull origin exp
# Create a feature branch
git checkout -b feat/my-feature
Branch naming
Use conventional prefixes:
| Prefix | Use |
|---|---|
feat/ |
New feature |
fix/ |
Bug fix |
docs/ |
Documentation |
refactor/ |
Code refactoring |
test/ |
Test additions or changes |
chore/ |
Maintenance |
Pushing
Push the feature branch directly to exp:
# Push feature branch to exp
git push origin feat/my-feature:exp
# Clean up
git checkout exp
git branch -d feat/my-feature
There is no merge request step — feature branches are merged into exp directly.
Hub modules
Hub modules (devices, analyzers, experiments) follow the same pattern:
git checkout exp
git pull origin exp
git checkout -b feat/my-device
# ... implement ...
git push origin feat/my-device:exp
git checkout exp
git branch -d feat/my-device
What NOT to do
- Never push directly to
main— this requires manual recovery - Never edit files while on
mainorexp— always use a feature branch - Never base a feature branch on
main— always branch fromexp - Never add
Co-Authored-By: Claudeto commit messages
Pre-push verification
Before pushing, run the nebula standard at minimum:
uv run plesty check --standard nebula
This catches structural issues before they reach the remote.
Next steps
- Set up the CI pipeline
- Publish your module