First off, thanks for taking the time to contribute! 🎉
- Check if the issue has already been reported.
- Open a new issue with a clear title and description.
- Include relevant logs (
git-pulsar log) or reproduction steps.
This project uses uv for dependency management and Python 3.12+.
Fork the repo and clone it locally:
git clone https://github.com/jacksonfergusondev/git-pulsar.git
cd git-pulsarWe use a Makefile to orchestrate dev workflows. Install the environment and dependencies:
make installOptional: If you use direnv, allow the automatically generated configuration:
direnv allowSet up pre-commit hooks to handle linting (Ruff) and type checking (Mypy) automatically.
pre-commit installWe utilize a multi-tiered testing architecture to validate behavior safely.
Standard unit testing for core logic.
make test-unitTests distributed system logic (syncing, drift detection, shadow commits) locally by simulating two isolated machines interacting with a bare remote.
make test-distTip: Run make test to execute both Tier 1 and Tier 2 automatically.
If you are modifying OS-level daemon logic, battery polling, or doing highly destructive testing, spin up a fully isolated Ubuntu VM. Requires Multipass.
make test-clusterThis provisions a VM, mounts your local source code as read-only, and drops you into a safe ~/playground repository. Your local Mac repository remains 100% untouched. If you edit code on your Mac, simply run reload-pulsar inside the VM to instantly fetch your latest changes.
git checkout -b feature/my-amazing-featureWrite code and add tests for your changes.
Ensure your code passes the linters and automated test tiers locally.
make lint
make testPlease use clear commit messages.
git commit -m "feat: add support for solar flares"
git push origin feature/my-amazing-featureSubmit your PR against the main branch.