Files

4.6 KiB

Contributing to Moko Consulting Projects

Thank you for your interest in contributing. All Moko Consulting repositories follow this universal workflow and version policy.

Branching Workflow

feature/* ──PR──> dev ──draft PR──> (renamed to rc) ──merge──> main

Step by step

  1. Create a feature branch from dev:

    git checkout dev && git pull
    git checkout -b feature/my-change
    
  2. Work and commit on your feature branch. Push to origin.

  3. Open a PR: feature/my-changedev. After review and checks, merge it.

  4. When ready for release, open a draft PR: devmain.

    • This automatically renames the source branch to rc (release candidate)
    • An RC pre-release is built and uploaded
  5. Alpha and beta branches are created by manually renaming the branch before the RC stage:

    • Rename dev to alpha for early testing → alpha pre-release is built
    • Rename alpha to beta for feature-complete testing → beta pre-release is built
    • When the draft PR is created, the branch is renamed to rc
  6. Once PR checks pass on the rc branch, mark the PR as ready and merge to main.

  7. Merging to main triggers the stable release pipeline:

    • Minor version bump (e.g., 02.09.xx02.10.00)
    • Stability suffix stripped (clean version)
    • Gitea release created with ZIP/tar.gz packages
    • updates.xml updated (Joomla extensions)
    • dev branch recreated from main

Branch summary

Branch Purpose Created by
feature/* New features and fixes Developer
dev Integration branch Auto-recreated after release
alpha Alpha pre-release testing Manual rename from dev
beta Beta pre-release testing Manual rename from alpha
rc Release candidate Auto-renamed on draft PR to main
main Stable releases Protected, merge only
version/XX.YY.ZZ Archived release snapshots Auto-created by CI

Protected branches

Branch Direct push Merge via
main Blocked (CI bot whitelisted) PR merge only
dev Blocked (CI bot whitelisted) PR merge from feature/*
rc Blocked (CI bot whitelisted) Auto-created on draft PR
alpha Blocked (CI bot whitelisted) Manual rename
beta Blocked (CI bot whitelisted) Manual rename
feature/* Open N/A (source branch)

Version Policy

Format

All versions use XX.YY.ZZ — three two-digit segments, zero-padded:

  • XX — Major version (breaking changes)
  • YY — Minor version (new features, bumped on release to main)
  • ZZ — Patch version (auto-incremented on every push to dev/feature branches)

Rollover: patch 9900 increments minor; minor 9900 increments major.

Stability suffixes

Each branch appends a suffix to indicate stability:

Branch Suffix Example
main (none) 02.09.00
dev -dev 02.09.01-dev
feature/* -dev 02.09.01-dev
alpha -alpha 02.09.01-alpha
beta -beta 02.09.01-beta
rc -rc 02.09.01-rc

Auto version bump

On every push to dev, alpha, beta, rc, or feature/*:

  1. Patch version incremented
  2. Stability suffix applied based on branch name
  3. All version-bearing files updated (manifests, CHANGELOG, PHP headers, etc.)
  4. Commit created with [skip ci] to avoid loops

Version files

The version tools update all files containing version stamps:

  • .mokogitea/manifest.xml (canonical source)
  • Joomla XML manifests (<version> tag)
  • README.md, CHANGELOG.md (VERSION: pattern)
  • package.json, pyproject.toml
  • Any text file with a VERSION: XX.YY.ZZ label

Files synced from other repos (with a # REPO: header) are not touched.

Code Standards

  • PHP: PSR-12, tabs for indentation
  • Copyright: all files must include the Moko Consulting copyright header
  • License: SPDX identifier GPL-3.0-or-later (or as specified per repo)
  • Attribution: use Authored-by: Moko Consulting in commits, not individual names

Commit Messages

Use conventional commit format:

type(scope): short description

Optional body with context.

Authored-by: Moko Consulting

Types: feat, fix, chore, docs, style, refactor, test, ci

Special flags in commit messages:

  • [skip ci] — skip all CI workflows
  • [skip bump] — skip auto version bump only

Reporting Issues

Use the repository's issue tracker with the appropriate template.


Moko Consulting hello@mokoconsulting.tech