Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 2.29 KB

development.md

File metadata and controls

82 lines (63 loc) · 2.29 KB

Development

GitMulti is a Go project. User-facing commands live in internal/cli/command/<name>, repository discovery lives in internal/repository, direct Git execution in internal/gitexec, and porcelain status parsing in internal/gitstatus. The executable entry point is cmd/gitmulti.

Go checks

Go 1.24 or newer and Git are required for local development. The complete project gate is:

make check

It runs formatting validation, go vet, all tests, race tests, a metadata- bearing build, and help/version smoke tests. Individual targets are available while iterating:

make fmt          # format Go files in place
make fmt-check
make vet
make test
make race
make build
make smoke

Keep changes focused, add or update tests for behavior changes, and preserve the shell-free execution boundary. The repository's contribution guide contains the full checklist, validation expectations, and vulnerability reporting guidance.

The project is source-available under the PolyForm Strict License 1.0.0. Noncommercial and personal uses are permitted under that license, but it does not grant permission to distribute the software or create changes or derivative works without permission. Read the complete license before contributing, using, or redistributing the source.

Documentation setup

The documentation site uses MkDocs' built-in theme and has no runtime Go or third-party theme/plugin dependency. requirements-docs.txt pins the MkDocs version used to build the site.

For an isolated local setup:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install -r requirements-docs.txt

On PowerShell, activate with:

.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements-docs.txt

Build the site with strict warning handling:

make docs-build

Serve it locally with automatic rebuilds:

make docs-serve

The targets invoke python3 -m mkdocs by default and do not install packages or fetch dependencies. Install dependencies explicitly with make docs-install or the pip command above. Documentation is intentionally separate from make check, so a normal Go validation does not perform network installation.