{"id":34599154,"url":"https://github.com/flyingrobots/libgitledger","last_synced_at":"2026-05-29T19:31:07.319Z","repository":{"id":320354902,"uuid":"1080356178","full_name":"flyingrobots/libgitledger","owner":"flyingrobots","description":"Portable C library for secure, append-only Git-native ledgers. Signed, policy-enforced, and queryable with roaring-fast indexes.","archived":false,"fork":false,"pushed_at":"2025-11-17T13:13:01.000Z","size":1771,"stargazers_count":0,"open_issues_count":71,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-25T23:44:15.898Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flyingrobots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/ROADMAP-DAG.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-10-21T08:50:40.000Z","updated_at":"2025-11-03T09:58:24.000Z","dependencies_parsed_at":"2025-10-23T11:23:14.559Z","dependency_job_id":"599531bf-a67a-4613-b9ac-b23f86967035","html_url":"https://github.com/flyingrobots/libgitledger","commit_stats":null,"previous_names":["flyingrobots/libgitledger"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/flyingrobots/libgitledger","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Flibgitledger","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Flibgitledger/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Flibgitledger/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Flibgitledger/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flyingrobots","download_url":"https://codeload.github.com/flyingrobots/libgitledger/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flyingrobots%2Flibgitledger/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33668185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T12:07:33.581Z","updated_at":"2026-05-29T19:31:07.297Z","avatar_url":"https://github.com/flyingrobots.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# libgitledger\n\n![freestanding](https://img.shields.io/badge/freestanding-ready-005f73)\n![libc: independent](https://img.shields.io/badge/libc-independent-brightgreen)\n\nEarly scaffolding for a Git-native ledger library built on top of `libgit2`.\n\n## Documentation\n\n- `docs/SPEC.md` — full functional spec\n- `docs/PROJECT-PLAN.md` — milestone roadmap and task lists\n- `docs/ISSUE-BREAKDOWN.md` — human-readable task index\n- `docs/ISSUE-DRAFTS.md` — prefilled issue bodies generated from the breakdown\n\n## Contributing\n\n- Open work items using the **Milestone Task** issue template (`.github/ISSUE_TEMPLATE/milestone_task.md`).\n- Issue drafts can be copied from `docs/ISSUE-DRAFTS.md`; regenerate with `python3 tools/automation/generate_issue_drafts.py` after editing the breakdown.\n- Pull requests must follow `.github/pull_request_template.md` and exercise both build systems (CMake + Meson).\n- See `CONTRIBUTING.md` for detailed workflow expectations.\n- Quickstart for contributors:\n  - Install repo hooks once: `make hooks-install` (pre-commit runs `make format-check` in containers like CI).\n  - Temporarily bypass the format gate for a commit: `SKIP_FORMAT_CHECK=1 git commit -m \"...\"`.\n  - Before pushing, run `make test-both` and `make lint` to mirror the matrix locally.\n\n## Building\n\nRunning the build or tests directly against your working tree is dangerous: our\nintegration tests intentionally mutate Git repositories and can trash your\ncheckout if misused. To keep everyone safe we execute the CI matrix via Docker\nby default.\n\n```\nmake cmake        # containerised CMake builds (Debug + Release)\nmake meson        # containerised Meson builds (debugoptimized + release)\nmake both         # run both build systems in containers\nmake test-cmake   # containerised CTest runs for both build types\nmake test-meson   # containerised Meson test suite\nmake test-both    # execute every CI job just like GitHub Actions\nmake format-check # verify clang-format inside the matrix\nmake tidy         # clang-tidy inside the matrix (only on the GCC job)\nmake lint         # format-check + tidy inside the matrix\n```\n\nUnder the hood these targets spin up per-matrix containers (GCC 14 + Clang 18)\nand run the same make targets that CI executes, copying the repository into an\nephemeral workspace and stripping all Git remotes. Each container also boots a\nfresh sandbox repository you can reach via the\n`LIBGITLEDGER_SANDBOX_ROOT` environment variable during tests.\n\n### Running on the host (dangerous)\n\nIf you really need to run against the host checkout, acknowledge the risk by\nsetting `I_KNOW_WHAT_I_AM_DOING=1`. The make targets will then delegate to the\n`host-*` equivalents.\n\n```\nI_KNOW_WHAT_I_AM_DOING=1 make cmake\nI_KNOW_WHAT_I_AM_DOING=1 make test-both\n```\n\nYou can still invoke the underlying host targets directly (`make host-cmake`,\n`make host-test-meson`, etc.), but they now abort unless you exported the\nacknowledgement flag or are already inside the container environment.\n\n### Manual build commands\n\nPrefer the make targets above, but if you need bespoke steps the raw commands\nremain available.\n\n#### CMake (Debug and Release)\n\n```\ncmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug\ncmake --build build-debug\nctest --test-dir build-debug\n\ncmake -S . -B build-release -DCMAKE_BUILD_TYPE=Release\ncmake --build build-release\n```\n\n#### Meson (Debug and Release)\n\n```\nmeson setup meson-debug --buildtype debugoptimized\nmeson compile -C meson-debug\nmeson test -C meson-debug\n\nmeson setup meson-release --buildtype release\nmeson compile -C meson-release\n```\n\n### Clean / format helpers\n\n```\nmake clean        # remove build directories and artefacts\nmake format       # apply clang-format in-place (runs on the host)\nmake markdownlint # lint Markdown docs using markdownlint-cli\n```\n\n## Dependencies\n\n`libgitledger` links against [`libgit2`](https://libgit2.org/). Ensure the development\nheaders are available before configuring either build system:\n\n- **Debian/Ubuntu**\n\n  ```bash\n  sudo apt-get update\n  sudo apt-get install libgit2-dev pkg-config\n  ```\n\n- **macOS (Homebrew)**\n\n  ```bash\n  brew install libgit2 pkg-config\n  ```\n\n- **Windows (Chocolatey)**\n\n  ```powershell\n  choco install libgit2 pkgconfiglite\n  ```\n\nOptional knobs surface in both build systems:\n\n- CMake: `-DGITLEDGER_WITH_LIBGIT2=OFF` to configure without libgit2, (future)\n  `-DGITLEDGER_VENDOR_LIBGIT2=ON` for vendoring once implemented, plus\n  placeholders `-DGITLEDGER_WITH_CROARING=ON` and `-DGITLEDGER_WITH_BLAKE3=ON`.\n- Meson: `-Dvendor_libgit2=true`, `-Dwith_croaring=enabled`, and `-Dwith_blake3=enabled`.\n\nThe CRoaring and BLAKE3 switches are stubs for future work and simply log that\nthe integration is pending.\n\n## Coding Standards\n\n- `.clang-format` defines the canonical formatting rules; run `make format` to apply them and\n  `make format-check` to verify compliance.\n- `.clang-tidy` configures warnings-as-errors for the project; `make tidy` builds a dedicated compile\n  database and executes the static analysis suite.\n- `.editorconfig` captures default editor behaviour (UTF-8, LF line endings, four-space indents for C).\n- GitHub Actions executes the full lint + build matrix for GCC, Clang, and MSVC. macOS is not part of the\n  hosted matrix to keep CI costs manageable; if you develop on macOS, consider a local pre-push hook that\n  runs `make lint`.\n\n## License\n\n`libgitledger` is released under the [MIND-UCAL License v1.0](LICENSE), aligned with the Universal Charter. See [`NOTICE`](NOTICE) for attribution details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Flibgitledger","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflyingrobots%2Flibgitledger","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflyingrobots%2Flibgitledger/lists"}