{"name":"@deckyard/git","description":"Work with git repositories through the git command line: status, commit, log, diff, branches, tags, remotes, with hardened defaults","versions":{"0.1.0":{"version":"0.1.0","kind":"git","url":"https://github.com/deckyard/deck-git.git","ref":"0.1.0","commit":"3ecf1c7583ae331f30defb106b9e8dbf6919754f","checksum":"","yanked":false,"license":"LGPL-3.0-only","requires":{},"engines":{"jennifer":"\u003e=0.25.0"},"capabilities":["exec"],"keywords":["git","vcs","version-control","repository","commit"],"description":"Work with git repositories through the git command line: status, commit, log, diff, branches, tags, remotes, with hardened defaults","publishedAt":"1793743691","repoId":1444856440,"repoOwnerId":346943577,"repoOwner":"deckyard"}},"readme":"# @deckyard/git\n\n[![test](https://github.com/deckyard/deck-git/actions/workflows/test.yml/badge.svg)](https://github.com/deckyard/deck-git/actions/workflows/test.yml)\n[![Documentation](https://img.shields.io/badge/docs-github%20pages-blue)](https://deckyard.github.io/deck-git/)\n[![release](https://img.shields.io/github/v/release/deckyard/deck-git)](https://github.com/deckyard/deck-git/releases/latest)\n\nGit repositories for [Jennifer](https://jennifer-lang.dev/) through the\n`git` command line: open, create and clone repositories; status, staging,\ncommits and stashes; log, diffs, blame and files at any revision; branches,\ntags and merges; fetch, pull and push. Results are typed structs parsed from\ngit's machine-readable output. Built for names and URLs you do not control:\noption injection, remote helpers, repository-redirecting environment\nvariables and hooks are all shut off, and every command has a timeout.\n\n**[Documentation](https://deckyard.github.io/deck-git/)**\n\n## Install\n\n```sh\njvc add @deckyard/git\n```\n\nOr unpack `src/` from a release archive (`deckyard-git-\u003cversion\u003e.tar.gz`)\ninto `vendor/deckyard/git/`.\n\n## Usage\n\n```jennifer\nimport \"@deckyard/git/\" as git;\n\ndef repo as git.Repo init git.open(git.config(), \".\");\ndef s as git.Status init git.status($repo);\nio.printf(\"%s, %d changed\\n\", $s.branch, len($s.changes));\nfor (def c in git.log($repo, \"\", \"\", 5)) {\n    io.printf(\"%s %s\\n\", strings.substring($c.hash, 0, 8), $c.subject);\n}\n```\n\n## Requirements\n\nJennifer 0.25.0 or newer and the default `jennifer` binary (the deck needs\nthe `exec` capability); git 2.25 or newer and `env` on the `PATH`.\n\n## Development\n\n```sh\ntools/check-all.sh                   # the full gate, as CI runs it\njennifer test src/git_test.j         # tests; the live ones need git\ntools/check-docs.sh                  # docs against the code\n```\n\nThe tests that run git use throwaway repositories in the temp directory and\nno network. They return early where git is not installed, as in CI's\ncontainer; run the suite on a machine with git before a release.\n\n## Licence\n\nLGPL-3.0-only, see [LICENSE](LICENSE). Copyright (C) 2026 mplx \u0026lt;mplx@jennifer-lang.dev\u0026gt;.\n\nGit is a trademark of the Software Freedom Conservancy. This deck is not\naffiliated with or endorsed by it.\n"}