GitLab Workflow¶
This guide describes the GitLab issue and merge request workflow for contributing to gaslamp.
Development Process¶
1. Create or Find an Issue¶
Search the repository issues to see if a similar issue exists. If not, create a new issue with:
- Clear title describing the bug or feature
- Description of the problem or feature request
- Expected behavior or acceptance criteria
2. Create a Development Branch¶
Create a branch from the issue:
Bash
# Fetch latest changes from remote
git fetch origin
# Create a new worktree (recommended for parallel development)
task wt:create BRANCH=feature-name
cd ../worktrees/feature-name
For naming conventions, use:
feat/<name>for new featuresfix/<name>for bug fixesdocs/<name>for documentation
3. Implement Changes¶
Make your changes locally:
Bash
task test # Run tests
task build # Type-check TypeScript
task bundle # Bundle for GAS
task clasp:push:all # Test in GAS (requires clasp login)
4. Commit and Push¶
Commit using Conventional Commits format:
Bash
git add .
git commit -m "feat: add new feature"
git push origin feature-name
5. Create Merge Request¶
Create a Merge Request (MR) on GitLab:
- Reference the issue:
Closes #<issue-number> - Describe what changed and why
- Link to any related issues or PRs
6. Code Review and Merge¶
Wait for review feedback, address comments, and merge when approved.
7. Release (User/Maintainer Only)¶
After merging to main, the maintainer handles versioning and release:
Bash
git fetch origin
git checkout main
git pull origin main
# Preview next version (user decides level)
task bump:check
# Bump version (choose one)
task bump:patch # x.y.Z
task bump:minor # x.Y.z
task bump:major # X.y.z
# Push tags to remote
task push:tags
For the complete release workflow, see Release Workflow.
8. Clean Up¶
After your MR is merged, clean up the worktree:
Bash
# Return to main project directory
cd ../../gaslamp
# Remove the worktree
task wt:cleanup BRANCH=feature-name
Important Notes¶
- git worktree: Always use
task wt:create BRANCH=<name>for feature development to avoid switching branches repeatedly. - Conventional Commits: Your commit messages determine the version bump level (patch, minor, major).
- Tests: Ensure all tests pass locally before pushing.
- GAS Testing: Use
task clasp:push:allto test in Google Apps Script before creating an MR.
References¶
- Setup Guide — Environment setup with
git worktree - Naming Guidelines — Naming and commit conventions
- Workflow Overview — Build, test, bundle, push, and release