This is a C++ wrapper of libgit2 to provide a command-line interface (CLI)
to git functionality. The intended use is in WebAssembly in-browser terminals (see
cockle and
JupyterLite terminal projects) but it can be compiled and
used on any POSIX-compliant system.
See overview.md for further details.
Development workflow
Build
Developer's workflow using micromamba to manage the dependencies:
micromamba create -f dev-environment.yml micromamba activate git2cpp-dev cmake -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX cd build make -j8
The git2cpp executable can then be run, e.g. ./git2cpp -v.
Test
The CLI is tested using python. From the top-level directory:
Some tests access the private repository at https://github.com/QuantStack/git2cpp-test-private using a fine-grained github Personal Access Token (PAT). These tests are skipped by default. To run them you will need to obtain the PAT from one of the maintainers, and run the tests as follows:
GIT2CPP_TEST_PRIVATE_TOKEN=<this-is-the-personal-access-token> pytest -v
pre-commit
pre-commit runs automatically on git commit. To run it manually use:
pre-commit run --all-files
WebAssembly build and deployment
The wasm directory contains everything needed to build the local git2cpp source code as an
WebAssembly Emscripten-forge package, create local
cockle and
JupyterLite terminal deployments that run in a browser,
and test the WebAssembly build.
See the README.md in the wasm directory for further details.
The latest cockle and JupyterLite terminal deployments using git2cpp are available at
https://quantstack.net/git2cpp
Documentation
The project documentation is generated from the git2cpp help pages. To build the documentation
locally first build git2cpp as usual as described above, then install the documentation
dependencies:
micromamba install myst-parser sphinx sphinx-book-theme
and build the documentation:
The top-level documentation page will be docs/_build/html/index.html