Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .config/release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.3.0-rc.1"
".": "0.3.0-rc.2"
}
119 changes: 119 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,124 @@
# Changelog

## [0.3.0-rc.2](https://github.com/git-ents/git-metadata/compare/git-metadata-v0.3.0-rc.1...git-metadata-v0.3.0-rc.2) (2026-05-16)


### Features

* `metadata` validates input and ref-target shape ([dbeb94c](https://github.com/git-ents/git-metadata/commit/dbeb94c95de99f0008b5fa606912b00ccefa4370))
* Accept optional author signature in Ledger::create ([cb4d735](https://github.com/git-ents/git-metadata/commit/cb4d735638eebdb907cf69bd0bf5d839268513c7)), closes [#10](https://github.com/git-ents/git-metadata/issues/10)
* Add --author-name and --author-email to create subcommand ([cb4d735](https://github.com/git-ents/git-metadata/commit/cb4d735638eebdb907cf69bd0bf5d839268513c7))
* Add --link <rev> to add (resolved permalink, peels tags) ([8499883](https://github.com/git-ents/git-metadata/commit/84998838f9decc1d7f23d5b36779096e2ad90f21))
* Add --link-ref <name> to add (unresolved ref name as blob) ([8499883](https://github.com/git-ents/git-metadata/commit/84998838f9decc1d7f23d5b36779096e2ad90f21))
* Add `AlreadyExists`, `InvalidRootType`, `FanoutPathConflict` errors ([dbeb94c](https://github.com/git-ents/git-metadata/commit/dbeb94c95de99f0008b5fa606912b00ccefa4370))
* Add `ContentAddressable` and `Pointer` traits ([677936a](https://github.com/git-ents/git-metadata/commit/677936a4579a0c27c97a02e17c48e275c3be5eab))
* Add `DEFAULT_FANOUT` constant ([82f6a4f](https://github.com/git-ents/git-metadata/commit/82f6a4f672120508454a1635e6779b0a9c1744b7))
* Add `Error::UnexpectedKind` variant ([d57c2ba](https://github.com/git-ents/git-metadata/commit/d57c2ba0a09d06fe31581563b87c7fa3929c10cf))
* Add `Executor::repo()` accessor ([8ac3697](https://github.com/git-ents/git-metadata/commit/8ac369788e7541a64bc749943754d23a77462c96))
* Add `Executor::stale()` read-only counterpart to `prune` ([8ac3697](https://github.com/git-ents/git-metadata/commit/8ac369788e7541a64bc749943754d23a77462c96))
* Add `InvalidFanoutDepth` and `FanoutFind` error variants ([82f6a4f](https://github.com/git-ents/git-metadata/commit/82f6a4f672120508454a1635e6779b0a9c1744b7))
* Add `list <object>` subcommand (replaces old `show` flat output) ([ce0fc2a](https://github.com/git-ents/git-metadata/commit/ce0fc2a01fdabbc55f88bca24b108653c5fd8f70))
* Add `message: Option<&str>` to `MetadataRepository::metadata_delete` ([8ac3697](https://github.com/git-ents/git-metadata/commit/8ac369788e7541a64bc749943754d23a77462c96))
* Add `message: Option<&str>` to `MetadataRepository::metadata` ([8ac3697](https://github.com/git-ents/git-metadata/commit/8ac369788e7541a64bc749943754d23a77462c96))
* Add `message`/`author` params to `Executor::upsert`, `import`, `remove` ([8ac3697](https://github.com/git-ents/git-metadata/commit/8ac369788e7541a64bc749943754d23a77462c96))
* Add `Metadata::id` and `Metadata::data` accessors ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Add `Metadata::id` and `Metadata::data` accessors ([9757be5](https://github.com/git-ents/git-metadata/commit/9757be5810fab143070ece4ab43496f9bb4ba7fe))
* Add `tree::remove_leaf` helper that prunes empty intermediates ([8764905](https://github.com/git-ents/git-metadata/commit/876490578e4f1f43fc9ef726a2fb1f4013a89b8c))
* Add `TreeId` newtype with `From<gix::Tree>` and `From<TreeId> for gix::ObjectId` ([f5d5c88](https://github.com/git-ents/git-metadata/commit/f5d5c88912bff2b4fe1abc49e6a11a5d66cac49d))
* Add `Tx::with_message()` builder; default commit message is `"store: commit transaction"` ([d57c2ba](https://github.com/git-ents/git-metadata/commit/d57c2ba0a09d06fe31581563b87c7fa3929c10cf))
* Add CLI ([ff68888](https://github.com/git-ents/git-metadata/commit/ff68888d90286dcfbaaf5aa554ab7aa7c530abe9))
* Add Error::FanoutDepthConflict variant ([a77bc5d](https://github.com/git-ents/git-metadata/commit/a77bc5da9d2e55ab36531cef6156d5030f1cfe4c))
* Add FileMode enum (Blob, Executable, Tree, Commit) ([c72b96c](https://github.com/git-ents/git-metadata/commit/c72b96ca0ca85cb91daa585f3db2be653120a6e8))
* Add git-db crate to workspace ([e2ed0fc](https://github.com/git-ents/git-metadata/commit/e2ed0fc74fa1cd71bbb5b863a8dfd3f247ade4fd))
* Add global --force flag used by add, copy, and man-page generation ([676d45a](https://github.com/git-ents/git-metadata/commit/676d45a72e2111a4f43181f4111a848939d5cbf0))
* Add IdStrategy::CommitOid for commit-OID-keyed entity refs ([31c8dc3](https://github.com/git-ents/git-metadata/commit/31c8dc3ff376f0a88a78fdf444053c95ae0336da)), closes [#6](https://github.com/git-ents/git-metadata/issues/6)
* Add Mutation::Pin for inserting entries that reference existing objects ([c72b96c](https://github.com/git-ents/git-metadata/commit/c72b96ca0ca85cb91daa585f3db2be653120a6e8))
* Add optional author override to Ledger::create ([cb4d735](https://github.com/git-ents/git-metadata/commit/cb4d735638eebdb907cf69bd0bf5d839268513c7))
* Add print_tree_entry helper in main.rs ([4f09287](https://github.com/git-ents/git-metadata/commit/4f092877208d65bbf7bda2f3269b263e7ed67d12))
* Add store abstractions ([260820f](https://github.com/git-ents/git-metadata/commit/260820f4e0b60b3132664bb53338daed49da4bea))
* Add validate_metadata_tree to MetadataRepository trait ([a77bc5d](https://github.com/git-ents/git-metadata/commit/a77bc5da9d2e55ab36531cef6156d5030f1cfe4c))
* Enable gix tree-editor feature for structural sharing ([bf946a9](https://github.com/git-ents/git-metadata/commit/bf946a9d8048d07a23b0bee0da6fac422ef8c5ad))
* Implement `ContentAddressable`, `Ref`, and `Transaction` over gix ([7949943](https://github.com/git-ents/git-metadata/commit/79499433db139dfbc4b6ef10850aeeb9560a0cc0))
* Implement `Executor::upsert` ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Implement `Executor::upsert` ([333a29f](https://github.com/git-ents/git-metadata/commit/333a29ff1694a62ed44297ddbd935bb2bb7e1826))
* Implement `find_metadata` ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Implement `find_metadata` ([119791d](https://github.com/git-ents/git-metadata/commit/119791d6ee48b359468e0ef60f7c43d147bc6395))
* Implement `metadata_default_ref` returning `refs/metadata/commits` ([82f6a4f](https://github.com/git-ents/git-metadata/commit/82f6a4f672120508454a1635e6779b0a9c1744b7))
* Implement `metadata_delete` and add `tree::remove_leaf` ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Implement `metadata_delete` and add `tree::remove_leaf` ([8764905](https://github.com/git-ents/git-metadata/commit/876490578e4f1f43fc9ef726a2fb1f4013a89b8c))
* Implement `metadata`, mirror libgit2 notes shape ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Implement `metadata`, mirror libgit2 notes shape ([dbeb94c](https://github.com/git-ents/git-metadata/commit/dbeb94c95de99f0008b5fa606912b00ccefa4370))
* Implement compile_patterns and tree_is_empty helpers ([7269b52](https://github.com/git-ents/git-metadata/commit/7269b528b18c8ce841abb32cec860ab022c4c924))
* Implement Executor::copy ([7269b52](https://github.com/git-ents/git-metadata/commit/7269b528b18c8ce841abb32cec860ab022c4c924))
* Implement Executor::remove with glob-pattern matching ([7269b52](https://github.com/git-ents/git-metadata/commit/7269b528b18c8ce841abb32cec860ab022c4c924))
* Implement Executor::remove, stale, copy, prune ([7269b52](https://github.com/git-ents/git-metadata/commit/7269b528b18c8ce841abb32cec860ab022c4c924))
* Implement Executor::stale and Executor::prune ([7269b52](https://github.com/git-ents/git-metadata/commit/7269b528b18c8ce841abb32cec860ab022c4c924))
* Implement Executor::upsert using tree::insert_leaf directly ([7302605](https://github.com/git-ents/git-metadata/commit/73026056fa67fceab5d5ffa3923eb4f47c5777d7))
* Implement Executor::upsert; parameterize insert_leaf over leaf_kind ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Implement Executor::upsert; parameterize insert_leaf over leaf_kind ([7302605](https://github.com/git-ents/git-metadata/commit/73026056fa67fceab5d5ffa3923eb4f47c5777d7))
* Implement Store and Tx for phase 1 transaction ([bf946a9](https://github.com/git-ents/git-metadata/commit/bf946a9d8048d07a23b0bee0da6fac422ef8c5ad))
* Install nextest via taiki-e/install-action@nextest ([8b9181f](https://github.com/git-ents/git-metadata/commit/8b9181f06b9fd55169db2eb2c700a2b5123ac971))
* Make `list` show flat tree entries and `show` render a tree ([ce0fc2a](https://github.com/git-ents/git-metadata/commit/ce0fc2a01fdabbc55f88bca24b108653c5fd8f70))
* Open editor for `add` when no content is provided interactively ([2a7cd53](https://github.com/git-ents/git-metadata/commit/2a7cd530c9aff7984219977b76ce5c5b193d63aa))
* Print man page path on write and require --force to overwrite ([676d45a](https://github.com/git-ents/git-metadata/commit/676d45a72e2111a4f43181f4111a848939d5cbf0))
* Read `.fanout` depth blob in `metadatas` ([82f6a4f](https://github.com/git-ents/git-metadata/commit/82f6a4f672120508454a1635e6779b0a9c1744b7))
* Read committer identity from git config via `repo.committer()`, falling back to generic defaults ([d57c2ba](https://github.com/git-ents/git-metadata/commit/d57c2ba0a09d06fe31581563b87c7fa3929c10cf))
* Render `show` output as a tree via `termtree` ([ce0fc2a](https://github.com/git-ents/git-metadata/commit/ce0fc2a01fdabbc55f88bca24b108653c5fd8f70))
* Require `.fanout` depth in metadata trees and document `MetadataRepository` ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Require `.fanout` depth in metadata trees and document `MetadataRepository` ([82f6a4f](https://github.com/git-ents/git-metadata/commit/82f6a4f672120508454a1635e6779b0a9c1744b7))
* Rework `add` to support --link/--link-ref; make --path optional ([8499883](https://github.com/git-ents/git-metadata/commit/84998838f9decc1d7f23d5b36779096e2ad90f21))
* Run doctests with cargo test --doc ([8b9181f](https://github.com/git-ents/git-metadata/commit/8b9181f06b9fd55169db2eb2c700a2b5123ac971))
* Run tests with cargo nextest run ([8b9181f](https://github.com/git-ents/git-metadata/commit/8b9181f06b9fd55169db2eb2c700a2b5123ac971))
* Scaffolding for `git-store` ([4480796](https://github.com/git-ents/git-metadata/commit/4480796879f5295864c90cf1c4463e1df065140d))
* Split --generate-man-page into bool flag plus --man-dir ([676d45a](https://github.com/git-ents/git-metadata/commit/676d45a72e2111a4f43181f4111a848939d5cbf0))
* Split `Pointer` into `Ref` and `Transaction` traits ([7ff0b5f](https://github.com/git-ents/git-metadata/commit/7ff0b5f49aa7e1d2f4b6fe661aafc35d23de4b81))
* Store::open/init bind to refs/db/&lt;n&gt; ([bf946a9](https://github.com/git-ents/git-metadata/commit/bf946a9d8048d07a23b0bee0da6fac422ef8c5ad))
* Tx::commit with configurable CAS retry loop ([bf946a9](https://github.com/git-ents/git-metadata/commit/bf946a9d8048d07a23b0bee0da6fac422ef8c5ad))
* Tx::get/put/delete/list over nested tree paths ([bf946a9](https://github.com/git-ents/git-metadata/commit/bf946a9d8048d07a23b0bee0da6fac422ef8c5ad))


### Bug Fixes

* --force is no longer global; add and copy each declare their own --force flag ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Add initial_depth: Option&lt;u8&gt; to MetadataRepository::metadata(); wire --shard-level through upsert ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Bind `metadata_default_ref()` result so the borrow outlives the match ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))
* Change `remove` return type to `Result<Option<gix::ObjectId>>` ([707709d](https://github.com/git-ents/git-metadata/commit/707709de871c611592dd6e4f9ba59acc1b80b8cd))
* Correct fanout traversal and error propagation in `metadatas` ([0c8fb44](https://github.com/git-ents/git-metadata/commit/0c8fb44e1f40b2fc8d5917f8ae59d2ee9e715d06))
* Correct fanout traversal and error propagation in `metadatas` ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))
* Correct generate-man arguments ([5e879a1](https://github.com/git-ents/git-metadata/commit/5e879a126b6b2718ce8d4498ee6974aa458ad34d))
* Correct stale `[`Repo`]` link in module doc to `[`Executor`]` ([707709d](https://github.com/git-ents/git-metadata/commit/707709de871c611592dd6e4f9ba59acc1b80b8cd))
* Create man dir if necessary ([21d2a15](https://github.com/git-ents/git-metadata/commit/21d2a15314b5a7de665c52d26a79e08cbbe20322))
* Default man page output dir to XDG_DATA_HOME ([f713512](https://github.com/git-ents/git-metadata/commit/f7135128c2ea1d90387cdbb7714d15cc760c8f0e))
* Document `force` behavior in `upsert`, `copy`, and `import` ([707709d](https://github.com/git-ents/git-metadata/commit/707709de871c611592dd6e4f9ba59acc1b80b8cd))
* Document copy --force as a destructive wholesale replace ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Ensure_fanout_blob now errors on type/depth conflict, no-ops on match ([a77bc5d](https://github.com/git-ents/git-metadata/commit/a77bc5da9d2e55ab36531cef6156d5030f1cfe4c))
* Fail fast on non-hex fanout leaves ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))
* Fix editor template line-continuation formatting ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* List and show return empty output instead of erroring when no metadata ref exists ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Make object positional in remove (was -o/--object, inconsistent with add/show) ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Metadata::new no longer requires id to be a blob; any object type is valid ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Peel metadata ref to a tree before traversal ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))
* Propagate ref-find, peel, and traverse errors via new variants ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))
* Publish only the crate matching the release tag ([912b8ce](https://github.com/git-ents/git-metadata/commit/912b8cecb7d9257a303697be9589edd88960af21))
* Publish pre-release crates to crates.io ([6f1d588](https://github.com/git-ents/git-metadata/commit/6f1d588f98cd5b8639dad12ded683f00e08fd402))
* Reject empty paths in `Tx` operations ([f541852](https://github.com/git-ents/git-metadata/commit/f541852b7d85fcfa3b710fb5213c7e1d6ea9d05f))
* Reject non-blob `.fanout` entries (symlink, gitlink) with `InvalidFanoutDepth` ([6e20304](https://github.com/git-ents/git-metadata/commit/6e20304335805ed05a171a65ee7adbbee23e2bbf))
* Remove --shard-level from copy (concept does not apply) ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Remove manual version pins ([ed13199](https://github.com/git-ents/git-metadata/commit/ed13199df77777a0f234730264ec3f4891610c11))
* Remove redundant `get_ref` method ([707709d](https://github.com/git-ents/git-metadata/commit/707709de871c611592dd6e4f9ba59acc1b80b8cd))
* Replace panicking `into_commit()`/`into_tree()` with `try_into_commit()`/`try_into_tree()`, returning `Error::UnexpectedKind` on mismatch ([d57c2ba](https://github.com/git-ents/git-metadata/commit/d57c2ba0a09d06fe31581563b87c7fa3929c10cf))
* Require positional argument to be last ([4827a71](https://github.com/git-ents/git-metadata/commit/4827a7115738690385c6082b6d7035c8d3eb8810))
* Resolve clippy -D warnings diagnostics in stub impls ([2793dde](https://github.com/git-ents/git-metadata/commit/2793dde6e9537bcf7014f60c64280ee352e3eff8))
* Resolve diagnostics in `metadatas` impl ([0818601](https://github.com/git-ents/git-metadata/commit/0818601fa578f15d2c1767a5acd089644469c843))
* Resolve nine CLI issues and rename default metadata ref ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))
* Revert `upsert` to `todo!()` pending rewrite ([707709d](https://github.com/git-ents/git-metadata/commit/707709de871c611592dd6e4f9ba59acc1b80b8cd))
* Update --path help to mention --link and --link-ref as alternatives ([c06cd88](https://github.com/git-ents/git-metadata/commit/c06cd88847b9f2a3813279fc8face130cd930756))


### Performance Improvements

* Hoist hex buffer allocation out of the entry loop ([6afe663](https://github.com/git-ents/git-metadata/commit/6afe66336bbc0131c277996f849338247deb1bb4))

## [0.3.0-rc.1](https://github.com/git-ents/git-metadata/compare/git-metadata-v0.2.1...git-metadata-v0.3.0-rc.1) (2026-03-26)


Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "git-metadata"
version = "0.3.0-rc.1"
version = "0.3.0-rc.2"
edition = "2024"
publish = true
readme = "README.md"
Expand Down
Loading