A local-first version control system written in C++, inspired by Git with built-in tools for releases, packaging and local CI/CD pipelines.
- Full version control: add, commit, branch, merge, stash, diff, log...
- Tagged releases with source zip, changelog and HTML summary
- Local CI/CD pipelines triggered by commits, merges or releases
- Pack and unpack repositories for backup or distribution
- Submodule support for linking other mank repositories
- Built-in manual:
mank man <command>
- cmake
- g++ (C++17)
- zlib
- openssl
- libzip
- yaml-cpp
On Ubuntu/Debian:
sudo apt install cmake g++ zlib1g-dev libssl-dev libzip-dev libyaml-cpp-devcmake -B build
cmake --build buildThe executable will be at build/mank.
make install
This automatically installs mank in Linux for bash, if you use other shells, you may need to update your PATH manually.
mank init # initialize a repository
mank --config.name "Your Name" # set your name
mank --config.email "you@mail.com" # set your email
mank add . # stage all files
mank commit "first commit" # create a commit
mank log # view history
mank diff . # view changesRun mank help for a quick reference of all commands.
For detailed documentation on any command:
mank man <command>
# Examples:
mank man diff
mank man ci
mank man releaseCreate .mank/ci/pipeline.yml to define your pipelines:
pipeline: CI
on:
- commit
- merge
env:
BUILD_TYPE: release
jobs:
build:
run: make $BUILD_TYPE
test:
if: branch == "main"
steps:
- run: make test
- run: ./run_tests.sh
depends:
- buildJobs run in the background and send a system notification when they finish.
View logs with mank ci logs or mank ci logs <job>.
GNU GPL v3 — see the LICENSE file for details.