puregit 0.0.2

A pure-Rust implementation of git, in the spirit of libgit2, built on purecrypto. Object model, packfiles, refs, and the smart transport over HTTP and SSH — client and server.
Documentation
name: CI

on:
  push:
    branches: [master]
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  # The interop tests skip when `git` is not on PATH so a bare dev box can
  # still run `cargo test`; in CI a missing git must fail instead of passing
  # vacuously.
  PUREGIT_REQUIRE_GIT: "1"

jobs:
  test:
    name: Test & lint (${{ matrix.os }}, ${{ matrix.build.name }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        # Several feature surfaces ship in the crate. Build & test each on every
        # PR so none rots: the std default, the no_std core (compile-checked —
        # the test harness itself needs std), and the full surface (server +
        # both network transports). The flags live on the matrix entry to keep
        # the steps shell-portable across Linux/macOS/Windows runners.
        build:
          - name: default
            flags: ""
            test: true
          - name: full
            flags: "--features full"
            test: true
          - name: no-std
            flags: "--no-default-features"
            test: false
    steps:
      - uses: actions/checkout@v6

      - name: Install Rust
        uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy, rustfmt

      - name: Format
        run: cargo fmt --all -- --check

      - name: Clippy
        run: cargo clippy --all-targets ${{ matrix.build.flags }} -- -D warnings

      - name: Build
        run: cargo build --all-targets ${{ matrix.build.flags }}

      - name: Test
        if: ${{ matrix.build.test }}
        run: cargo test ${{ matrix.build.flags }}

      - name: Doc
        run: cargo doc --no-deps ${{ matrix.build.flags }}
        env:
          RUSTDOCFLAGS: -D warnings