Skip to content

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 features
  • fix/<name> for bug fixes
  • docs/<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:all to test in Google Apps Script before creating an MR.

References