Version Control
Overview
The project is managed using Git and GitHub. There are 3 GitHub repositories for this project.
The Extension
- docs 📚 – Project Documentation
- extension 🛠 – VSCode Extension
- intellij - A Basic Intellij Plugin
- nvim - A Basic Neovim Plugin
The Website
The API
Branching Strategy
Main Branch (main)
- The
mainbranch holds the most stable and up-to-date version of the project. - No direct commits are allowed and changes are merged via pull requests from the dev branch.
Dev Branch (dev)
- This branch accumulates all changes and features during the sprint.
- It ensures
mainremains clean while providing a dedicated branch for sprint development. - For the API, any changes to dev create a new deployment on Google Cloud. For the extension, if tags are pushed then a new pre-release build is created and pushed to the vscode marketplace
Feature Branches (GCCB-[#]-)
- Feature branches are created from the current
GCCB-SP[#]-mainbranch through Jira. - Naming convention:
GCCB-#-where#is the Jira issue number. - These branches are task-specific and linked to Jira issues.
End of Sprint Merging
- At the end of each sprint, the final stage of
devwill be reviewed and merged back intomain. - Ensures all changes are stable before reaching production.
Branch Protection Rules
Rules are strictly enforced to maintain code quality and security:
| Branch | Approval Required | Direct Pushes |
|---|---|---|
main | 2 approvals | ❌ Not allowed |
dev | 1 approval | ❌ Not allowed |
Pull Request Process
- Create a Feature Branch (
BP-#) from the sprint branch. - Push changes and open a PR for review.
- Review & Approvals:
- Feature branches: 1 approval (Sprint Branch)
- Sprint branches: 2 approvals (
main)