git-spawn 0.2.1

Async wrapper around the git CLI: builder commands, typed parsers, high-level workflow helpers
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.2.1]https://github.com/joshrotenberg/git-spawn/compare/v0.2.0...v0.2.1 - 2026-06-08


### Features

- Add generic git notes command wrapper (closes #31) ([#32]https://github.com/joshrotenberg/git-spawn/pull/32)

### Miscellaneous

- Backfill 0.2.0 changelog and guard release automation ([#29]https://github.com/joshrotenberg/git-spawn/pull/29)

## [0.2.0]https://github.com/joshrotenberg/git-spawn/compare/v0.1.0...v0.2.0 - 2026-06-08

### Features

- Add `Repository` accessors for plumbing commands: `rev_parse`, `describe`, `ls_files`, `ls_tree`, `show_ref`, `symbolic_ref` ([#22]https://github.com/joshrotenberg/git-spawn/issues/22)
- Add no-match-tolerant execution: `GrepCommand::execute_allow_no_match` and `ConfigCommand::execute_value_opt` return `Ok(None)` for the exit-1 (no match / missing key) case instead of `CommandFailed` ([#21]https://github.com/joshrotenberg/git-spawn/issues/21)

### Bug Fixes

- `CommandOutput.stdout` is now `Vec<u8>` instead of `String`; binary output (e.g. `cat-file` on a blob) is no longer corrupted by lossy UTF-8 decoding. Read it via `stdout_str()` / `stdout_bytes()`, and use `CatFileCommand::execute_bytes()` for raw blob bytes ([#23]https://github.com/joshrotenberg/git-spawn/issues/23) [**breaking**]
- `branch` force-delete emits `-D <name>` instead of the invalid `-D -d <name>` ([#25]https://github.com/joshrotenberg/git-spawn/issues/25)
- `parse_status` reads the original-path field only when the index column is a rename/copy, matching real porcelain v1 `-z` output ([#20]https://github.com/joshrotenberg/git-spawn/issues/20)

### Documentation

- Trim git library comparison section ([#18]https://github.com/joshrotenberg/git-spawn/pull/18)

### Refactor

- Unify builder modifier style to `&mut Self` across the action-enum commands (stash, config, reflog, bisect, symbolic_ref, worktree, submodule) ([#19]https://github.com/joshrotenberg/git-spawn/issues/19) [**breaking**]
- Consolidate shared integration-test helpers into `tests/common` ([#24]https://github.com/joshrotenberg/git-spawn/issues/24)

### Miscellaneous

- Release v0.1.0 ([#16]https://github.com/joshrotenberg/git-spawn/pull/16)

## [0.1.0]https://github.com/joshrotenberg/git-spawn/releases/tag/v0.1.0 - 2026-05-22


### Documentation

- Add README with usage, comparison to git2/gix, and dual license files

### Features

- Add tags, history, and workflow modules to workflow feature
- Add workflow feature with info and branches modules
- Add runnable examples and three small plumbing commands
- Add advanced commands (worktree, submodule, bisect, cherry-pick, grep, config, reflog)
- Add plumbing commands, typed parsers, and expanded rustdoc
- Add 23 porcelain command wrappers and Repository ergonomics
- Initial scaffold with error, command executor, and repository handle

### Miscellaneous

- Rename crate to git-spawn ([#15]https://github.com/joshrotenberg/git-spawn/pull/15)
- Appease clippy 1.95 unnecessary_sort_by lint