Unified · Split
| @@ -1508,7 +1508,7 @@ dependencies = [ · 1507 unmodified lines | |||
| 1508 | 1508 | ||
| 1509 | [[package]] | 1509 | [[package]] |
| 1510 | name = "gitoxide" | 1510 | name = "gitoxide" |
| 1511 | version = "0.57.0" | 1511 | version = "0.58.0" |
| 1512 | dependencies = [ | 1512 | dependencies = [ |
| 1513 | "anyhow", | 1513 | "anyhow", |
| 1514 | "clap", | 1514 | "clap", |
| @@ -1532,7 +1532,7 @@ dependencies = [ · 17 unmodified lines | |||
| 1532 | 1532 | ||
| 1533 | [[package]] | 1533 | [[package]] |
| 1534 | name = "gitoxide-core" | 1534 | name = "gitoxide-core" |
| 1535 | version = "0.61.0" | 1535 | version = "0.61.1" |
| 1536 | dependencies = [ | 1536 | dependencies = [ |
| 1537 | "anyhow", | 1537 | "anyhow", |
| 1538 | "async-io", | 1538 | "async-io", |
| @@ -1572,7 +1572,7 @@ dependencies = [ · 33 unmodified lines | |||
| 1572 | 1572 | ||
| 1573 | [[package]] | 1573 | [[package]] |
| 1574 | name = "gix" | 1574 | name = "gix" |
| 1575 | version = "0.87.0" | 1575 | version = "0.87.1" |
| 1576 | dependencies = [ | 1576 | dependencies = [ |
| 1577 | "anyhow", | 1577 | "anyhow", |
| 1578 | "async-std", | 1578 | "async-std", |
| @@ -1663,7 +1663,7 @@ dependencies = [ · 84 unmodified lines | |||
| 1663 | 1663 | ||
| 1664 | [[package]] | 1664 | [[package]] |
| 1665 | name = "gix-archive" | 1665 | name = "gix-archive" |
| 1666 | version = "0.36.0" | 1666 | version = "0.36.1" |
| 1667 | dependencies = [ | 1667 | dependencies = [ |
| 1668 | "bstr", | 1668 | "bstr", |
| 1669 | "document-features", | 1669 | "document-features", |
| @@ -1713,7 +1713,7 @@ dependencies = [ · 43 unmodified lines | |||
| 1713 | 1713 | ||
| 1714 | [[package]] | 1714 | [[package]] |
| 1715 | name = "gix-blame" | 1715 | name = "gix-blame" |
| 1716 | version = "0.17.0" | 1716 | version = "0.17.1" |
| 1717 | dependencies = [ | 1717 | dependencies = [ |
| 1718 | "gix-commitgraph", | 1718 | "gix-commitgraph", |
| 1719 | "gix-date", | 1719 | "gix-date", |
| @@ -1847,7 +1847,7 @@ dependencies = [ · 127 unmodified lines | |||
| 1847 | 1847 | ||
| 1848 | [[package]] | 1848 | [[package]] |
| 1849 | name = "gix-diff" | 1849 | name = "gix-diff" |
| 1850 | version = "0.67.0" | 1850 | version = "0.67.1" |
| 1851 | dependencies = [ | 1851 | dependencies = [ |
| 1852 | "bstr", | 1852 | "bstr", |
| 1853 | "criterion", | 1853 | "criterion", |
| @@ -1878,7 +1878,7 @@ dependencies = [ · 24 unmodified lines | |||
| 1878 | 1878 | ||
| 1879 | [[package]] | 1879 | [[package]] |
| 1880 | name = "gix-dir" | 1880 | name = "gix-dir" |
| 1881 | version = "0.29.0" | 1881 | version = "0.29.1" |
| 1882 | dependencies = [ | 1882 | dependencies = [ |
| 1883 | "bstr", | 1883 | "bstr", |
| 1884 | "gix-dir", | 1884 | "gix-dir", |
| @@ -1988,7 +1988,7 @@ dependencies = [ · 103 unmodified lines | |||
| 1988 | 1988 | ||
| 1989 | [[package]] | 1989 | [[package]] |
| 1990 | name = "gix-fsck" | 1990 | name = "gix-fsck" |
| 1991 | version = "0.25.0" | 1991 | version = "0.25.1" |
| 1992 | dependencies = [ | 1992 | dependencies = [ |
| 1993 | "gix-hash", | 1993 | "gix-hash", |
| 1994 | "gix-hashtable", | 1994 | "gix-hashtable", |
| @@ -2114,7 +2114,7 @@ dependencies = [ · 119 unmodified lines | |||
| 2114 | 2114 | ||
| 2115 | [[package]] | 2115 | [[package]] |
| 2116 | name = "gix-macros" | 2116 | name = "gix-macros" |
| 2117 | version = "0.1.5" | 2117 | version = "0.1.6" |
| 2118 | dependencies = [ | 2118 | dependencies = [ |
| 2119 | "proc-macro2", | 2119 | "proc-macro2", |
| 2120 | "quote", | 2120 | "quote", |
| @@ -2124,7 +2124,7 @@ dependencies = [ · 3 unmodified lines | |||
| 2124 | 2124 | ||
| 2125 | [[package]] | 2125 | [[package]] |
| 2126 | name = "gix-mailmap" | 2126 | name = "gix-mailmap" |
| 2127 | version = "0.34.0" | 2127 | version = "0.34.1" |
| 2128 | dependencies = [ | 2128 | dependencies = [ |
| 2129 | "bstr", | 2129 | "bstr", |
| 2130 | "document-features", | 2130 | "document-features", |
| @@ -2137,7 +2137,7 @@ dependencies = [ · 6 unmodified lines | |||
| 2137 | 2137 | ||
| 2138 | [[package]] | 2138 | [[package]] |
| 2139 | name = "gix-merge" | 2139 | name = "gix-merge" |
| 2140 | version = "0.20.0" | 2140 | version = "0.20.1" |
| 2141 | dependencies = [ | 2141 | dependencies = [ |
| 2142 | "arbitrary", | 2142 | "arbitrary", |
| 2143 | "bstr", | 2143 | "bstr", |
| @@ -2171,7 +2171,7 @@ dependencies = [ · 27 unmodified lines | |||
| 2171 | 2171 | ||
| 2172 | [[package]] | 2172 | [[package]] |
| 2173 | name = "gix-negotiate" | 2173 | name = "gix-negotiate" |
| 2174 | version = "0.35.0" | 2174 | version = "0.35.1" |
| 2175 | dependencies = [ | 2175 | dependencies = [ |
| 2176 | "bitflags 2.13.0", | 2176 | "bitflags 2.13.0", |
| 2177 | "gix-commitgraph", | 2177 | "gix-commitgraph", |
| @@ -2186,7 +2186,7 @@ dependencies = [ · 8 unmodified lines | |||
| 2186 | 2186 | ||
| 2187 | [[package]] | 2187 | [[package]] |
| 2188 | name = "gix-note" | 2188 | name = "gix-note" |
| 2189 | version = "0.1.0" | 2189 | version = "0.1.1" |
| 2190 | dependencies = [ | 2190 | dependencies = [ |
| 2191 | "gix-error", | 2191 | "gix-error", |
| 2192 | "gix-hash", | 2192 | "gix-hash", |
| @@ -2258,7 +2258,7 @@ dependencies = [ · 65 unmodified lines | |||
| 2258 | 2258 | ||
| 2259 | [[package]] | 2259 | [[package]] |
| 2260 | name = "gix-pack" | 2260 | name = "gix-pack" |
| 2261 | version = "0.74.1" | 2261 | version = "0.74.2" |
| 2262 | dependencies = [ | 2262 | dependencies = [ |
| 2263 | "bstr", | 2263 | "bstr", |
| 2264 | "clru", | 2264 | "clru", |
| @@ -2291,7 +2291,7 @@ dependencies = [ · 26 unmodified lines | |||
| 2291 | 2291 | ||
| 2292 | [[package]] | 2292 | [[package]] |
| 2293 | name = "gix-packetline" | 2293 | name = "gix-packetline" |
| 2294 | version = "0.22.1" | 2294 | version = "0.22.2" |
| 2295 | dependencies = [ | 2295 | dependencies = [ |
| 2296 | "async-std", | 2296 | "async-std", |
| 2297 | "bstr", | 2297 | "bstr", |
| @@ -2354,7 +2354,7 @@ dependencies = [ · 56 unmodified lines | |||
| 2354 | 2354 | ||
| 2355 | [[package]] | 2355 | [[package]] |
| 2356 | name = "gix-protocol" | 2356 | name = "gix-protocol" |
| 2357 | version = "0.65.0" | 2357 | version = "0.65.1" |
| 2358 | dependencies = [ | 2358 | dependencies = [ |
| 2359 | "async-std", | 2359 | "async-std", |
| 2360 | "async-trait", | 2360 | "async-trait", |
| @@ -2425,7 +2425,7 @@ dependencies = [ · 64 unmodified lines | |||
| 2425 | 2425 | ||
| 2426 | [[package]] | 2426 | [[package]] |
| 2427 | name = "gix-refspec" | 2427 | name = "gix-refspec" |
| 2428 | version = "0.45.0" | 2428 | version = "0.45.1" |
| 2429 | dependencies = [ | 2429 | dependencies = [ |
| 2430 | "bstr", | 2430 | "bstr", |
| 2431 | "gix-hash", | 2431 | "gix-hash", |
| @@ -2438,7 +2438,7 @@ dependencies = [ · 6 unmodified lines | |||
| 2438 | 2438 | ||
| 2439 | [[package]] | 2439 | [[package]] |
| 2440 | name = "gix-revision" | 2440 | name = "gix-revision" |
| 2441 | version = "0.49.0" | 2441 | version = "0.49.1" |
| 2442 | dependencies = [ | 2442 | dependencies = [ |
| 2443 | "bitflags 2.13.0", | 2443 | "bitflags 2.13.0", |
| 2444 | "bstr", | 2444 | "bstr", |
| @@ -2506,7 +2506,7 @@ dependencies = [ · 61 unmodified lines | |||
| 2506 | 2506 | ||
| 2507 | [[package]] | 2507 | [[package]] |
| 2508 | name = "gix-status" | 2508 | name = "gix-status" |
| 2509 | version = "0.34.0" | 2509 | version = "0.34.1" |
| 2510 | dependencies = [ | 2510 | dependencies = [ |
| 2511 | "bstr", | 2511 | "bstr", |
| 2512 | "document-features", | 2512 | "document-features", |
| @@ -2596,7 +2596,7 @@ dependencies = [ · 83 unmodified lines | |||
| 2596 | 2596 | ||
| 2597 | [[package]] | 2597 | [[package]] |
| 2598 | name = "gix-tix" | 2598 | name = "gix-tix" |
| 2599 | version = "0.2.0" | 2599 | version = "0.3.0" |
| 2600 | dependencies = [ | 2600 | dependencies = [ |
| 2601 | "anyhow", | 2601 | "anyhow", |
| 2602 | "clap", | 2602 | "clap", |
| @@ -2624,7 +2624,7 @@ dependencies = [ · 21 unmodified lines | |||
| 2624 | 2624 | ||
| 2625 | [[package]] | 2625 | [[package]] |
| 2626 | name = "gix-transport" | 2626 | name = "gix-transport" |
| 2627 | version = "0.59.0" | 2627 | version = "0.59.1" |
| 2628 | dependencies = [ | 2628 | dependencies = [ |
| 2629 | "async-std", | 2629 | "async-std", |
| 2630 | "async-trait", | 2630 | "async-trait", |
| @@ -2737,7 +2737,7 @@ dependencies = [ · 106 unmodified lines | |||
| 2737 | 2737 | ||
| 2738 | [[package]] | 2738 | [[package]] |
| 2739 | name = "gix-worktree-state" | 2739 | name = "gix-worktree-state" |
| 2740 | version = "0.34.0" | 2740 | version = "0.34.1" |
| 2741 | dependencies = [ | 2741 | dependencies = [ |
| 2742 | "bstr", | 2742 | "bstr", |
| 2743 | "gix-discover", | 2743 | "gix-discover", |
| @@ -2759,7 +2759,7 @@ dependencies = [ · 15 unmodified lines | |||
| 2759 | 2759 | ||
| 2760 | [[package]] | 2760 | [[package]] |
| 2761 | name = "gix-worktree-stream" | 2761 | name = "gix-worktree-stream" |
| 2762 | version = "0.36.0" | 2762 | version = "0.36.1" |
| 2763 | dependencies = [ | 2763 | dependencies = [ |
| 2764 | "gix-attributes", | 2764 | "gix-attributes", |
| 2765 | "gix-error", | 2765 | "gix-error", |
| @@ -7,7 +7,7 @@ repository = "https://github.com/GitoxideLabs/gitoxide" · 6 unmodified lines | |||
| 7 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] | 7 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] |
| 8 | edition = "2024" | 8 | edition = "2024" |
| 9 | license = "MIT OR Apache-2.0" | 9 | license = "MIT OR Apache-2.0" |
| 10 | version = "0.57.0" | 10 | version = "0.58.0" |
| 11 | # Rust 1.85 is required so hash-related dependencies can use Rust 2024 crates, | 11 | # Rust 1.85 is required so hash-related dependencies can use Rust 2024 crates, |
| 12 | # notably `sha2` 0.11 and `hashbrown` 0.17. | 12 | # notably `sha2` 0.11 and `hashbrown` 0.17. |
| 13 | rust-version = "1.85" | 13 | rust-version = "1.85" |
| @@ -171,10 +171,10 @@ gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"] · 157 unmodified lines | |||
| 171 | [dependencies] | 171 | [dependencies] |
| 172 | anyhow = "1.0.98" | 172 | anyhow = "1.0.98" |
| 173 | 173 | ||
| 174 | gitoxide-core = { version = "^0.61.0", path = "gitoxide-core" } | 174 | gitoxide-core = { version = "^0.61.1", path = "gitoxide-core" } |
| 175 | gix-features = { version = "^0.49.1", path = "gix-features" } | 175 | gix-features = { version = "^0.49.1", path = "gix-features" } |
| 176 | gix = { version = "^0.87.0", path = "gix", default-features = false } | 176 | gix = { version = "^0.87.1", path = "gix", default-features = false } |
| 177 | gix-tix = { version = "^0.2.0", path = "gix-tix", default-features = false, optional = true } | 177 | gix-tix = { version = "^0.3.0", path = "gix-tix", default-features = false, optional = true } |
| 178 | 178 | ||
| 179 | clap = { version = "4.5.42", features = ["derive", "cargo"] } | 179 | clap = { version = "4.5.42", features = ["derive", "cargo"] } |
| 180 | clap_complete = "4.5.55" | 180 | clap_complete = "4.5.55" |
| @@ -5,7 +5,140 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## Unreleased | 8 | ## 0.61.1 (2026-08-24) |
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.61.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### New Features | ||
| 34 | |||
| 35 | - <csr-id-d934f5b150146860b5a844218c3733869bfeb44f/> expose git notes in `gix::Repository` | ||
| 36 | <!-- agent --> | ||
| 37 | Add the notes feature and `Repository::notes` as the porcelain layer over `gix-note` | ||
| 38 | for repeated queries and mutations. | ||
| 39 | |||
| 40 | Select the default notes ref from `core.notesRef`, including the `GIT_NOTES_REF` | ||
| 41 | environment override represented in `config::tree`, and fall back to | ||
| 42 | `refs/notes/commits`. Discover additional display refs from `notes.displayRef` or | ||
| 43 | `GIT_NOTES_DISPLAY_REF`, expand glob patterns, preserve display order, and avoid | ||
| 44 | duplicates. | ||
| 45 | |||
| 46 | For mutations, accept conventional short notes-ref names, write note blobs and | ||
| 47 | notes commits, and update refs with compare-and-swap expectations so concurrent | ||
| 48 | changes are not silently overwritten. | ||
| 49 | - <csr-id-da39b92a4722d4e8eae47a78301cf005d2079835/> use Git signature configuration in `gix commit verify` | ||
| 50 | <!-- agent --> | ||
| 51 | Replace the command-specific GPG invocation with gix::Commit::verify_signature | ||
| 52 | so the CLI and library share one implementation and one interpretation of | ||
| 53 | repository configuration. | ||
| 54 | |||
| 55 | This extends the command from hard-coded OpenPGP verification to the OpenPGP, | ||
| 56 | X.509, and SSH formats supported by Git, including configured programs and trust | ||
| 57 | policy. Preserve verifier diagnostics on stderr and fail when a signature is | ||
| 58 | invalid or insufficiently trusted. | ||
| 59 | |||
| 60 | Enable the gix command feature in gitoxide-core to make the shared verification | ||
| 61 | API available. | ||
| 62 | - <csr-id-b1174b69b60b478be24f0b81787e95ac08564e7e/> support cloning a single revision | ||
| 63 | <!-- agent --> | ||
| 64 | A full object ID passed through with_ref_name() produced an object-ID refspec | ||
| 65 | mapping and panicked while clone assumed every mapping had a name. Branch and | ||
| 66 | tag checkout also retained ordinary clone tracking semantics instead of offering | ||
| 67 | a single-revision mode. | ||
| 68 | |||
| 69 | Add PrepareFetch::with_revision() and gix clone --revision for full refs, HEAD, | ||
| 70 | and full object IDs. Revision clones use a one source-only implicit refspec, | ||
| 71 | detach HEAD to the fetched commit, create no ordinary refs, persist no fetch | ||
| 72 | refspec, and disable tag following. Existing with_ref_name() and --ref behavior | ||
| 73 | stays unchanged. | ||
| 74 | |||
| 75 | This follows Git commit 337855629f59 (builtin/clone: teach git-clone(1) the | ||
| 76 | --revision= option) and its t/t5621-clone-revision.sh behavior. | ||
| 77 | |||
| 78 | ### Bug Fixes | ||
| 79 | |||
| 80 | - <csr-id-45e6d93fe48ed625b92363e94ed2053f2bc88e27/> peel revspecs to a commit in `gix merge-base` | ||
| 81 | The revspecs were resolved with `rev_parse_single()` and handed to the | ||
| 82 | commit-only merge-base traversal unchanged, so a revspec naming an annotated | ||
| 83 | tag arrived as the id of the tag object. No commit is found for such an id and | ||
| 84 | no error is raised. In a clone of this repository, | ||
| 85 | `gix merge-base HEAD cargo-smart-release-v0.10.0 cargo-smart-release-v0.1.0` | ||
| 86 | printed 0fa37f5d8c96aee551bb6442756059dc203a6cbc, dropping the tag and | ||
| 87 | computing the base of the two revspecs that were left, while `git merge-base` | ||
| 88 | with the same arguments prints ceb6dff13362a2b4318a551893217c1d11643b9f - the | ||
| 89 | commit the annotated tag points at. Git dereferences tags before computing | ||
| 90 | anything. | ||
| 91 | |||
| 92 | Each revspec is now peeled to a commit before the traversal. Lightweight tags, | ||
| 93 | branches and raw commit ids resolve as before, and a revspec that cannot be | ||
| 94 | peeled to a commit is rejected with the peel error. | ||
| 95 | |||
| 96 | ### Commit Statistics | ||
| 97 | |||
| 98 | <csr-read-only-do-not-edit/> | ||
| 99 | |||
| 100 | - 26 commits contributed to the release over the course of 30 calendar days. | ||
| 101 | - 30 days passed between releases. | ||
| 102 | - 4 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 103 | - 1 unique issue was worked on: [#1930](https://github.com/GitoxideLabs/gitoxide/issues/1930) | ||
| 104 | |||
| 105 | ### Commit Details | ||
| 106 | |||
| 107 | <csr-read-only-do-not-edit/> | ||
| 108 | |||
| 109 | <details><summary>view details</summary> | ||
| 110 | |||
| 111 | * **[#1930](https://github.com/GitoxideLabs/gitoxide/issues/1930)** | ||
| 112 | - Support cloning a single revision ([`b1174b6`](https://github.com/GitoxideLabs/gitoxide/commit/b1174b69b60b478be24f0b81787e95ac08564e7e)) | ||
| 113 | * **Uncategorized** | ||
| 114 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 115 | - Merge pull request #2930 from GitoxideLabs/gix-notes ([`7424676`](https://github.com/GitoxideLabs/gitoxide/commit/7424676f86cd3f5a67c53f8db6baf0803e937d4a)) | ||
| 116 | - Expose git notes in `gix::Repository` ([`d934f5b`](https://github.com/GitoxideLabs/gitoxide/commit/d934f5b150146860b5a844218c3733869bfeb44f)) | ||
| 117 | - Merge pull request #2926 from cruessler/remove-object-hash-from-options ([`b2d919a`](https://github.com/GitoxideLabs/gitoxide/commit/b2d919a11655fdab5c47001ec1b21d7bbebe24c0)) | ||
| 118 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) | ||
| 119 | - Adapt to changes in `gix-object` (object signing) ([`723d3de`](https://github.com/GitoxideLabs/gitoxide/commit/723d3dedc7a327d19103b53bf80d661f23ee8aca)) | ||
| 120 | - Use Git signature configuration in `gix commit verify` ([`da39b92`](https://github.com/GitoxideLabs/gitoxide/commit/da39b92a4722d4e8eae47a78301cf005d2079835)) | ||
| 121 | - Merge pull request #2919 from cruessler/require-object-hash-in-file-store-at ([`e5452ba`](https://github.com/GitoxideLabs/gitoxide/commit/e5452baec8ad94736a9f489ec5135c46091eab97)) | ||
| 122 | - Adapt to changes in `gix-ref` ([`5810922`](https://github.com/GitoxideLabs/gitoxide/commit/5810922cdb1c2028236b923f6003db7445da35ea)) | ||
| 123 | - Merge pull request #2916 from cruessler/require-object-hash-in-store-at ([`dd8c759`](https://github.com/GitoxideLabs/gitoxide/commit/dd8c759e0343c2b5c9776c948d109e9d1ea5943b)) | ||
| 124 | - Adapt to changes in `gix-odb` ([`a0b93a3`](https://github.com/GitoxideLabs/gitoxide/commit/a0b93a3877678720f4268adc37317c0f99a8be6d)) | ||
| 125 | - Merge pull request #2896 from shuvamk/fix/merge-base-peel-tag ([`e1af444`](https://github.com/GitoxideLabs/gitoxide/commit/e1af44408cf26cb6448a59b2b32b92b265ba2e8a)) | ||
| 126 | - Peel revspecs to a commit in `gix merge-base` ([`45e6d93`](https://github.com/GitoxideLabs/gitoxide/commit/45e6d93fe48ed625b92363e94ed2053f2bc88e27)) | ||
| 127 | - Merge pull request #2892 from ameyypawar/rev-conformity ([`453c17c`](https://github.com/GitoxideLabs/gitoxide/commit/453c17c343c83b569ad817e6459fadf406926a42)) | ||
| 128 | - Adapt to changes in `gix-revision`. ([`21c5614`](https://github.com/GitoxideLabs/gitoxide/commit/21c5614e1eb3cfa21d208083544913305b3986f1)) | ||
| 129 | - Merge pull request #2719 from cruessler/blame-untracked-changes ([`95e0213`](https://github.com/GitoxideLabs/gitoxide/commit/95e0213259162d357e68fe459962cbcdce38590f)) | ||
| 130 | - Review ([`2ea191f`](https://github.com/GitoxideLabs/gitoxide/commit/2ea191fffb63a2c21f5ed8c9f9f77cc91a763bcc)) | ||
| 131 | - Align line numbers in output and start `gix blame` from worktree contents ([`86e90d8`](https://github.com/GitoxideLabs/gitoxide/commit/86e90d8626c01613220ae88100eb3815b31f30ef)) | ||
| 132 | - Adapt to changes in `gix-blame` ([`93d4019`](https://github.com/GitoxideLabs/gitoxide/commit/93d4019fdd97200bebcd7b2197da7db74e678877)) | ||
| 133 | - Merge pull request #2824 from GitoxideLabs/fetch-revision ([`7a34c17`](https://github.com/GitoxideLabs/gitoxide/commit/7a34c175866222ba6ebeb108d2594369a97d5526)) | ||
| 134 | - Merge pull request #2879 from GitoxideLabs/remove-jwalk ([`b6492d3`](https://github.com/GitoxideLabs/gitoxide/commit/b6492d3a4b10d1c4b58988fac62171b65731b42d)) | ||
| 135 | - Replace jwalk with dua-core ([`c49dc45`](https://github.com/GitoxideLabs/gitoxide/commit/c49dc457b879eb9f9d6c844878d82e11c185babd)) | ||
| 136 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | ||
| 137 | - Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 ([`ab4fcb0`](https://github.com/GitoxideLabs/gitoxide/commit/ab4fcb0364ec4d01115595198f383b1ad9c29808)) | ||
| 138 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 139 | </details> | ||
| 140 | |||
| 141 | ## 0.60.0 (2026-07-23) | ||
| 9 | 142 | ||
| 10 | ### New Features | 143 | ### New Features |
| 11 | 144 | ||
| @@ -100,7 +233,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 88 unmodified lines | |||
| 100 | 233 | ||
| 101 | <csr-read-only-do-not-edit/> | 234 | <csr-read-only-do-not-edit/> |
| 102 | 235 | ||
| 103 | - 46 commits contributed to the release. | 236 | - 48 commits contributed to the release. |
| 104 | - 31 days passed between releases. | 237 | - 31 days passed between releases. |
| 105 | - 10 commits were understood as [conventional](https://www.conventionalcommits.org). | 238 | - 10 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 106 | - 3 unique issues were worked on: [#1534](https://github.com/GitoxideLabs/gitoxide/issues/1534), [#2562](https://github.com/GitoxideLabs/gitoxide/issues/2562), [#2696](https://github.com/GitoxideLabs/gitoxide/issues/2696) | 239 | - 3 unique issues were worked on: [#1534](https://github.com/GitoxideLabs/gitoxide/issues/1534), [#2562](https://github.com/GitoxideLabs/gitoxide/issues/2562), [#2696](https://github.com/GitoxideLabs/gitoxide/issues/2696) |
| @@ -124,6 +257,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 17 unmodified lines | |||
| 124 | * **[#2696](https://github.com/GitoxideLabs/gitoxide/issues/2696)** | 257 | * **[#2696](https://github.com/GitoxideLabs/gitoxide/issues/2696)** |
| 125 | - Preserve multiple remote URLs ([`5f244b3`](https://github.com/GitoxideLabs/gitoxide/commit/5f244b32c44795062b0aa9e352404cbd1412a844)) | 258 | - Preserve multiple remote URLs ([`5f244b3`](https://github.com/GitoxideLabs/gitoxide/commit/5f244b32c44795062b0aa9e352404cbd1412a844)) |
| 126 | * **Uncategorized** | 259 | * **Uncategorized** |
| 260 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 261 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | ||
| 127 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 262 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 128 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) | 263 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) |
| 129 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) | 264 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) |
| @@ -4,7 +4,7 @@ lints.workspace = true · 3 unmodified lines | |||
| 4 | name = "gitoxide-core" | 4 | name = "gitoxide-core" |
| 5 | description = "The library implementing all capabilities of the gitoxide CLI" | 5 | description = "The library implementing all capabilities of the gitoxide CLI" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | version = "0.61.0" | 7 | version = "0.61.1" |
| 8 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] | 8 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] |
| 9 | license = "MIT OR Apache-2.0" | 9 | license = "MIT OR Apache-2.0" |
| 10 | edition = "2024" | 10 | edition = "2024" |
| @@ -49,12 +49,12 @@ serde = ["gix/serde", "dep:serde_json", "dep:serde", "bytesize/serde"] · 38 unmodified lines | |||
| 49 | 49 | ||
| 50 | [dependencies] | 50 | [dependencies] |
| 51 | # deselect everything else (like "performance") as this should be controllable by the parent application. | 51 | # deselect everything else (like "performance") as this should be controllable by the parent application. |
| 52 | gix = { version = "^0.87.0", path = "../gix", default-features = false, features = ["merge", "blob-diff", "blame", "revision", "mailmap", "excludes", "attributes", "worktree-mutation", "credentials", "interrupt", "status", "dirwalk", "command"] } | 52 | gix = { version = "^0.87.1", path = "../gix", default-features = false, features = ["merge", "blob-diff", "blame", "revision", "mailmap", "excludes", "attributes", "worktree-mutation", "credentials", "interrupt", "status", "dirwalk", "command"] } |
| 53 | gix-pack-for-configuration-only = { package = "gix-pack", version = "^0.74.1", path = "../gix-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static", "generate", "streaming-input"] } | 53 | gix-pack-for-configuration-only = { package = "gix-pack", version = "^0.74.2", path = "../gix-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static", "generate", "streaming-input"] } |
| 54 | gix-transport-configuration-only = { package = "gix-transport", version = "^0.59.0", path = "../gix-transport", default-features = false } | 54 | gix-transport-configuration-only = { package = "gix-transport", version = "^0.59.1", path = "../gix-transport", default-features = false } |
| 55 | gix-archive-for-configuration-only = { package = "gix-archive", version = "^0.36.0", path = "../gix-archive", optional = true, features = ["tar", "tar_gz"] } | 55 | gix-archive-for-configuration-only = { package = "gix-archive", version = "^0.36.1", path = "../gix-archive", optional = true, features = ["tar", "tar_gz"] } |
| 56 | gix-status = { version = "^0.34.0", path = "../gix-status" } | 56 | gix-status = { version = "^0.34.1", path = "../gix-status" } |
| 57 | gix-fsck = { version = "^0.25.0", path = "../gix-fsck" } | 57 | gix-fsck = { version = "^0.25.1", path = "../gix-fsck" } |
| 58 | gix-error-for-configuration-only = { package = "gix-error", version = "^0.3.1", path = "../gix-error", features = ["anyhow"] } | 58 | gix-error-for-configuration-only = { package = "gix-error", version = "^0.3.1", path = "../gix-error", features = ["anyhow"] } |
| 59 | serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } | 59 | serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } |
| 60 | anyhow = "1.0.102" | 60 | anyhow = "1.0.102" |
| @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.36.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 8 | ## 0.36.0 (2026-08-22) | 31 | ## 0.36.0 (2026-08-22) |
| 9 | 32 | ||
| 10 | ### Commit Statistics | 33 | ### Commit Statistics |
| 11 | 34 | ||
| 12 | <csr-read-only-do-not-edit/> | 35 | <csr-read-only-do-not-edit/> |
| 13 | 36 | ||
| 14 | - 10 commits contributed to the release over the course of 30 calendar days. | 37 | - 11 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 38 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 39 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 40 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 46 | <details><summary>view details</summary> |
| 24 | 47 | ||
| 25 | * **Uncategorized** | 48 | * **Uncategorized** |
| 49 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | ||
| 26 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 50 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 27 | - Merge pull request #2930 from GitoxideLabs/gix-notes ([`7424676`](https://github.com/GitoxideLabs/gitoxide/commit/7424676f86cd3f5a67c53f8db6baf0803e937d4a)) | 51 | - Merge pull request #2930 from GitoxideLabs/gix-notes ([`7424676`](https://github.com/GitoxideLabs/gitoxide/commit/7424676f86cd3f5a67c53f8db6baf0803e937d4a)) |
| 28 | - Use automatic Box conversion in tests ([`ad4a9d1`](https://github.com/GitoxideLabs/gitoxide/commit/ad4a9d1c06aeb6a5534a03639230bd36cc690f3d)) | 52 | - Use automatic Box conversion in tests ([`ad4a9d1`](https://github.com/GitoxideLabs/gitoxide/commit/ad4a9d1c06aeb6a5534a03639230bd36cc690f3d)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-archive" | 4 | name = "gix-archive" |
| 5 | version = "0.36.0" | 5 | version = "0.36.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "archive generation from of a worktree stream" | 8 | description = "archive generation from of a worktree stream" |
| @@ -31,7 +31,7 @@ zip = ["dep:rawzip", "dep:flate2"] · 22 unmodified lines | |||
| 31 | 31 | ||
| 32 | 32 | ||
| 33 | [dependencies] | 33 | [dependencies] |
| 34 | gix-worktree-stream = { version = "^0.36.0", path = "../gix-worktree-stream" } | 34 | gix-worktree-stream = { version = "^0.36.1", path = "../gix-worktree-stream" } |
| 35 | gix-object = { version = "^0.64.1", path = "../gix-object" } | 35 | gix-object = { version = "^0.64.1", path = "../gix-object" } |
| 36 | gix-path = { version = "^0.12.5", path = "../gix-path", optional = true } | 36 | gix-path = { version = "^0.12.5", path = "../gix-path", optional = true } |
| 37 | gix-date = { version = "^0.16.0", path = "../gix-date" } | 37 | gix-date = { version = "^0.16.0", path = "../gix-date" } |
| @@ -5,13 +5,72 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.17.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.17.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### New Features (BREAKING) | ||
| 34 | |||
| 35 | - <csr-id-c11e5e48e840c1b1f7d1c1f6c9aa5a348f0dab47/> start blame from Start instead of ObjectId | ||
| 36 | |||
| 37 | ### Commit Statistics | ||
| 38 | |||
| 39 | <csr-read-only-do-not-edit/> | ||
| 40 | |||
| 41 | - 12 commits contributed to the release over the course of 30 calendar days. | ||
| 42 | - 30 days passed between releases. | ||
| 43 | - 1 commit was understood as [conventional](https://www.conventionalcommits.org). | ||
| 44 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 45 | |||
| 46 | ### Commit Details | ||
| 47 | |||
| 48 | <csr-read-only-do-not-edit/> | ||
| 49 | |||
| 50 | <details><summary>view details</summary> | ||
| 51 | |||
| 52 | * **Uncategorized** | ||
| 53 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 54 | - Merge pull request #2919 from cruessler/require-object-hash-in-file-store-at ([`e5452ba`](https://github.com/GitoxideLabs/gitoxide/commit/e5452baec8ad94736a9f489ec5135c46091eab97)) | ||
| 55 | - Adapt to changes in `gix-ref` ([`5810922`](https://github.com/GitoxideLabs/gitoxide/commit/5810922cdb1c2028236b923f6003db7445da35ea)) | ||
| 56 | - Merge pull request #2906 from cruessler/add-gix-blame-tests-with-symlinks ([`0b94ca6`](https://github.com/GitoxideLabs/gitoxide/commit/0b94ca61f08516fe723f46a77a1a273afe335418)) | ||
| 57 | - Review ([`31a98ed`](https://github.com/GitoxideLabs/gitoxide/commit/31a98edf26230bcdde70f759b1542ed0df3f2ec2)) | ||
| 58 | - Add tests for symlinks in `gix-blame` ([`6f626cf`](https://github.com/GitoxideLabs/gitoxide/commit/6f626cf2b65c0a4e8f03bc858b2395f8024e0f0d)) | ||
| 59 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | ||
| 60 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) | ||
| 61 | - Merge pull request #2719 from cruessler/blame-untracked-changes ([`95e0213`](https://github.com/GitoxideLabs/gitoxide/commit/95e0213259162d357e68fe459962cbcdce38590f)) | ||
| 62 | - Review ([`2ea191f`](https://github.com/GitoxideLabs/gitoxide/commit/2ea191fffb63a2c21f5ed8c9f9f77cc91a763bcc)) | ||
| 63 | - Start blame from Start instead of ObjectId ([`c11e5e4`](https://github.com/GitoxideLabs/gitoxide/commit/c11e5e48e840c1b1f7d1c1f6c9aa5a348f0dab47)) | ||
| 64 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 65 | </details> | ||
| 66 | |||
| 8 | ## 0.16.0 (2026-07-23) | 67 | ## 0.16.0 (2026-07-23) |
| 9 | 68 | ||
| 10 | ### Commit Statistics | 69 | ### Commit Statistics |
| 11 | 70 | ||
| 12 | <csr-read-only-do-not-edit/> | 71 | <csr-read-only-do-not-edit/> |
| 13 | 72 | ||
| 14 | - 7 commits contributed to the release. | 73 | - 8 commits contributed to the release. |
| 15 | - 31 days passed between releases. | 74 | - 31 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 75 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 76 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +82,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 82 | <details><summary>view details</summary> |
| 24 | 83 | ||
| 25 | * **Uncategorized** | 84 | * **Uncategorized** |
| 85 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 26 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | 86 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) |
| 27 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 87 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 28 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) | 88 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-blame" | 4 | name = "gix-blame" |
| 5 | version = "0.17.0" | 5 | version = "0.17.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dedicated to implementing a 'blame' algorithm" | 8 | description = "A crate of the gitoxide project dedicated to implementing a 'blame' algorithm" |
| @@ -23,7 +23,7 @@ gix-commitgraph = { version = "^0.39.0", path = "../gix-commitgraph" } · 14 unmodified lines | |||
| 23 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } | 23 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } |
| 24 | gix-trace = { version = "^0.1.21", path = "../gix-trace" } | 24 | gix-trace = { version = "^0.1.21", path = "../gix-trace" } |
| 25 | gix-date = { version = "^0.16.0", path = "../gix-date" } | 25 | gix-date = { version = "^0.16.0", path = "../gix-date" } |
| 26 | gix-diff = { version = "^0.67.0", path = "../gix-diff", default-features = false, features = ["blob"] } | 26 | gix-diff = { version = "^0.67.1", path = "../gix-diff", default-features = false, features = ["blob"] } |
| 27 | gix-object = { version = "^0.64.1", path = "../gix-object" } | 27 | gix-object = { version = "^0.64.1", path = "../gix-object" } |
| 28 | gix-hash = { version = "^0.26.2", path = "../gix-hash" } | 28 | gix-hash = { version = "^0.26.2", path = "../gix-hash" } |
| 29 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } | 29 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } |
| @@ -5,7 +5,199 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## Unreleased | 8 | ## 0.67.1 (2026-08-24) |
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 4 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2931 from cruessler/make-slider-test-more-granular ([`0f837c0`](https://github.com/GitoxideLabs/gitoxide/commit/0f837c07ae47671daf5f5cec5d2834321813f8f8)) | ||
| 27 | - Review ([`169ae96`](https://github.com/GitoxideLabs/gitoxide/commit/169ae964f47b82237f33b616fd0c94fd3ea7d344)) | ||
| 28 | - Add optional detailed report to slider test ([`7192d9a`](https://github.com/GitoxideLabs/gitoxide/commit/7192d9a8e00f6b4e0836610f90dcbb990618cc7c)) | ||
| 29 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 30 | </details> | ||
| 31 | |||
| 32 | ## 0.67.0 (2026-08-22) | ||
| 33 | |||
| 34 | ### Bug Fixes | ||
| 35 | |||
| 36 | - <csr-id-752f16f284796630aecdab558c8bd2f40eda8d29/> support shell commands in external blob diffs | ||
| 37 | <!-- agent --> | ||
| 38 | Treat configured external diff commands as shell command lines instead of | ||
| 39 | executable paths that require manual argument splitting. | ||
| 40 | |||
| 41 | Git diff drivers may contain a program followed by arguments. Passing such | ||
| 42 | values through the shell-aware gix-command preparation path preserves that | ||
| 43 | configuration while still appending Git diff arguments and environment variables | ||
| 44 | in the established platform code. | ||
| 45 | |||
| 46 | Add coverage for a configured command containing an argument so custom diff | ||
| 47 | drivers and text-conversion commands are launched as configured. | ||
| 48 | |||
| 49 | ### Test | ||
| 50 | |||
| 51 | - <csr-id-6ade0d4dbbb199f92961cc1e775346409b88945b/> add test for binary diff with textconv | ||
| 52 | I want to add similar tests for `gix-blame` as well, but first I want to | ||
| 53 | properly understand this part of the `gix-diff` machinery. | ||
| 54 | |||
| 55 | ### Changed (BREAKING) | ||
| 56 | |||
| 57 | - <csr-id-43cf77fdb52b547e727343644264fe60c05e6589/> Refactor tree-merge change matching and resolution. | ||
| 58 | Breaking because of added `ResolutionFailure` variants. | ||
| 59 | |||
| 60 | <!-- agent --> | ||
| 61 | The tree-merge implementation previously combined side-diff collection, | ||
| 62 | path matching, scheduling, and the complete conflict-resolution matrix in a | ||
| 63 | single function. It also duplicated change collection for both sides and | ||
| 64 | represented pair outcomes with independent boolean flags. | ||
| 65 | |||
| 66 | Keep the public tree() entry point as a small facade and move the merge | ||
| 67 | engine into focused private modules. Collect each ancestor-to-side diff | ||
| 68 | through one helper that constructs a SideState containing the flat change | ||
| 69 | list and its matching tree together. Isolate path and rename candidate | ||
| 70 | matching, including identical-change suppression, from classification into | ||
| 71 | pairs that the resolution matrix understands. | ||
| 72 | |||
| 73 | Represent the result of handling each paired change explicitly as a | ||
| 74 | ChangeDisposition. This preserves the important distinction between a | ||
| 75 | change that was merely processed and one whose effect is present in the | ||
| 76 | editor, without duplicating the final state transition in the scheduler. | ||
| 77 | Replace the type-specific side-picking helpers with generic pick() and | ||
| 78 | pick_mut() helpers as well. | ||
| 79 | |||
| 80 | These boundaries make the state machine easier to review and reduce the | ||
| 81 | chance that a future rename or forced-resolution fix accidentally changes | ||
| 82 | collection, matching, and application at once. They also remove duplicated | ||
| 83 | setup while keeping the exhaustive resolution match in one place, where | ||
| 84 | its symmetry remains visible. The public API and all recorded merge results | ||
| 85 | remain unchanged. | ||
| 86 | |||
| 87 | Fixes and Improvements | ||
| 88 | ---------------------- | ||
| 89 | |||
| 90 | Tree merging combines a flat change schedule with per-side path indexes. Valid | ||
| 91 | Git operations can therefore arrive in different orders or expose structural | ||
| 92 | relationships before the leaf changes that ultimately apply them. Several | ||
| 93 | resolver branches treated those relationships as physical occupancy or as | ||
| 94 | content changes for the same identity, leading to hangs, assertions, duplicate | ||
| 95 | entries, lost siblings, or merge results that depended on diff and side order. | ||
| 96 | |||
| 97 | Separate unique-path occupancy from PassedRewrittenDirectory scheduling so a | ||
| 98 | side-qualified name can terminate below directory rewrites. Prune empty path | ||
| 99 | nodes back to the root, and allow a deferred rewrite to insert only its new | ||
| 100 | destination because its source is already indexed. | ||
| 101 | |||
| 102 | Resolve the structural cases at their actual identity boundaries: | ||
| 103 | - handle an added file blocking an added directory before mode-specific add/add | ||
| 104 | resolution and defer early descendants until their parent deletion runs; | ||
| 105 | - keep explicit file renames ahead of inferred directory renames, and keep | ||
| 106 | directory replacements at their explicit sources; | ||
| 107 | - treat file replacements of incompatible non-blob ancestors as additions with | ||
| 108 | an empty compatible merge base; | ||
| 109 | - pair shared deletions before descendants and allow file renames into paths | ||
| 110 | vacated by directory renames; | ||
| 111 | - preserve unrelated nested or overlapping rename destinations by keeping the | ||
| 112 | directory in place and moving only the blocking file; | ||
| 113 | - reject incompatible same-destination rewrites before blob merging, while | ||
| 114 | collapsing identical rewrites to one clean shared destination; and | ||
| 115 | - defer file-to-directory children until the parent rename/delete decision is | ||
| 116 | made exactly once. | ||
| 117 | |||
| 118 | Forced Ancestor and Ours resolution continues to apply only the selected side. | ||
| 119 | Git-backed baselines cover both directions, forced policies, modes, symlinks, | ||
| 120 | gitlinks, nested directories, and documented index-only deviations. The | ||
| 121 | resulting suite contains 155 directional baseline cases, and the Cartesian | ||
| 122 | model reaches 210/210 Git/gix agreement for trees and path/mode results. | ||
| 123 | |||
| 124 | More Hardening | ||
| 125 | -------------- | ||
| 126 | |||
| 127 | Deferred tree changes may be reconsidered after another conflict has already | ||
| 128 | consumed or pruned the same path-tree node. This is valid when rename detection | ||
| 129 | has ambiguous identical sources, when structural conflicts overlap, or when a | ||
| 130 | change follows a detected directory rename. The editor and conflict records | ||
| 131 | still contain the required state, but strict bookkeeping removals and older | ||
| 132 | same-path assertions turned these schedules into debug panics, hangs, or | ||
| 133 | side-order-dependent duplicate content. | ||
| 134 | |||
| 135 | Make cleanup idempotent wherever absence is already the required end state: | ||
| 136 | add/add type conflicts, same-source rewrites, blocking conflict destinations, | ||
| 137 | delete/rewrite sources, and changes deferred through directory renames. Accept | ||
| 138 | cross-path structural matches from ambiguous rewrite candidates and let the | ||
| 139 | existing conservative unknown-conflict fallback handle them. | ||
| 140 | |||
| 141 | Preserve each rewrite input mode when blob content is identical so executable | ||
| 142 | mode changes remain visible to the merge. Make unique-path selection respect | ||
| 143 | childless tracked directories and qualify the first blocking file component, | ||
| 144 | which guarantees termination instead of varying an ineffective descendant | ||
| 145 | suffix forever. Finally, when a deferred addition is relocated to a unique | ||
| 146 | conflict path, remove its temporary original path from the side index before | ||
| 147 | marking it processed so a later descendant cannot relocate the same content a | ||
| 148 | second time. | ||
| 149 | |||
| 150 | The minimized and accumulated fuzz inputs now complete without failure. | ||
| 151 | Git-backed regressions cover ambiguous sources, consumed nodes, repeated | ||
| 152 | rename/delete candidates, mode-only rewrite collisions, unique paths below | ||
| 153 | files, and nested rename destinations in both side orderings. The final tree | ||
| 154 | baseline contains 165 directional cases with 130 intentionally skipped forced | ||
| 155 | resolution checks, and reversing the nested relocation case retains exactly | ||
| 156 | `a/a/a` and `a~A` without inventing `a~A_0`. | ||
| 157 | |||
| 158 | ### Commit Statistics | ||
| 159 | |||
| 160 | <csr-read-only-do-not-edit/> | ||
| 161 | |||
| 162 | - 18 commits contributed to the release over the course of 30 calendar days. | ||
| 163 | - 30 days passed between releases. | ||
| 164 | - 3 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 165 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 166 | |||
| 167 | ### Thanks Clippy | ||
| 168 | |||
| 169 | <csr-read-only-do-not-edit/> | ||
| 170 | |||
| 171 | [Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. | ||
| 172 | |||
| 173 | ### Commit Details | ||
| 174 | |||
| 175 | <csr-read-only-do-not-edit/> | ||
| 176 | |||
| 177 | <details><summary>view details</summary> | ||
| 178 | |||
| 179 | * **Uncategorized** | ||
| 180 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | ||
| 181 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 182 | - Merge pull request #2930 from GitoxideLabs/gix-notes ([`7424676`](https://github.com/GitoxideLabs/gitoxide/commit/7424676f86cd3f5a67c53f8db6baf0803e937d4a)) | ||
| 183 | - Thanks clippy ([`5c8d935`](https://github.com/GitoxideLabs/gitoxide/commit/5c8d9351dcab6c59c456787db7a40d38b5b5c5c0)) | ||
| 184 | - Merge pull request #2928 from cruessler/add-git-diff-textconv-test ([`227619a`](https://github.com/GitoxideLabs/gitoxide/commit/227619ad066af0dbbdbd855be4c9442228e0ce98)) | ||
| 185 | - Review ([`5e600cb`](https://github.com/GitoxideLabs/gitoxide/commit/5e600cb6fcb4ad646cf46cefba1968dc64afcb23)) | ||
| 186 | - Add test for binary diff with textconv ([`6ade0d4`](https://github.com/GitoxideLabs/gitoxide/commit/6ade0d4dbbb199f92961cc1e775346409b88945b)) | ||
| 187 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) | ||
| 188 | - Support shell commands in external blob diffs ([`752f16f`](https://github.com/GitoxideLabs/gitoxide/commit/752f16f284796630aecdab558c8bd2f40eda8d29)) | ||
| 189 | - Adapt to changes in `gix-testtools` ([`0cbe539`](https://github.com/GitoxideLabs/gitoxide/commit/0cbe53971687fb3b1959925aa9d8dc89deb5b474)) | ||
| 190 | - Use `gix_object::tree::name_order` instead of copy of the same function ([`db1f7d4`](https://github.com/GitoxideLabs/gitoxide/commit/db1f7d462253a713837ef31b2942ff21c5a9df72)) | ||
| 191 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | ||
| 192 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) | ||
| 193 | - Merge pull request #2843 from GitoxideLabs/deleted-file-added-dir ([`f33e250`](https://github.com/GitoxideLabs/gitoxide/commit/f33e250d35391faf981cabc1ff5c7c1ab0af62a9)) | ||
| 194 | - Refactor tree-merge change matching and resolution. ([`43cf77f`](https://github.com/GitoxideLabs/gitoxide/commit/43cf77fdb52b547e727343644264fe60c05e6589)) | ||
| 195 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | ||
| 196 | - Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 ([`ab4fcb0`](https://github.com/GitoxideLabs/gitoxide/commit/ab4fcb0364ec4d01115595198f383b1ad9c29808)) | ||
| 197 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 198 | </details> | ||
| 199 | |||
| 200 | ## 0.66.0 (2026-07-23) | ||
| 9 | 201 | ||
| 10 | ### Chore | 202 | ### Chore |
| 11 | 203 | ||
| @@ -36,7 +228,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 24 unmodified lines | |||
| 36 | 228 | ||
| 37 | <csr-read-only-do-not-edit/> | 229 | <csr-read-only-do-not-edit/> |
| 38 | 230 | ||
| 39 | - 14 commits contributed to the release. | 231 | - 16 commits contributed to the release. |
| 40 | - 31 days passed between releases. | 232 | - 31 days passed between releases. |
| 41 | - 3 commits were understood as [conventional](https://www.conventionalcommits.org). | 233 | - 3 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 42 | - 1 unique issue was worked on: [#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832) | 234 | - 1 unique issue was worked on: [#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832) |
| @@ -51,6 +243,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 8 unmodified lines | |||
| 51 | - Prefer file-name matches when pairing rename candidates, like Git ([`cea5ea7`](https://github.com/GitoxideLabs/gitoxide/commit/cea5ea77b57f840de618e1d15508add8293f30f2)) | 243 | - Prefer file-name matches when pairing rename candidates, like Git ([`cea5ea7`](https://github.com/GitoxideLabs/gitoxide/commit/cea5ea77b57f840de618e1d15508add8293f30f2)) |
| 52 | - Make rename tracking independent of the input order ([`1acc43d`](https://github.com/GitoxideLabs/gitoxide/commit/1acc43d14af57e7711407af8172d43a75733ae16)) | 244 | - Make rename tracking independent of the input order ([`1acc43d`](https://github.com/GitoxideLabs/gitoxide/commit/1acc43d14af57e7711407af8172d43a75733ae16)) |
| 53 | * **Uncategorized** | 245 | * **Uncategorized** |
| 246 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 247 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | ||
| 54 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 248 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 55 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) | 249 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) |
| 56 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) | 250 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-diff" | 4 | name = "gix-diff" |
| 5 | version = "0.67.0" | 5 | version = "0.67.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "Calculate differences between various git objects" | 8 | description = "Calculate differences between various git objects" |
| @@ -5,7 +5,79 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## Unreleased | 8 | ## 0.29.1 (2026-08-24) |
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.29.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### Bug Fixes | ||
| 34 | |||
| 35 | - <csr-id-234181b199b533594ec9e41f3623e399d414e9e1/> preserve combining-mark order when precomposing paths | ||
| 36 | <!-- agent --> | ||
| 37 | On macOS, gix status reported a tracked dua-cli fixture as untracked while git | ||
| 38 | status was clean. The filename contains valid combining marks in noncanonical | ||
| 39 | order; full NFC normalization reordered them before the directory walk looked | ||
| 40 | the path up in the index. | ||
| 41 | |||
| 42 | Recompose filesystem-decomposed characters without canonical reordering, | ||
| 43 | preserving non-composable combining-mark byte order. Cover both the helper behavior | ||
| 44 | and a Git-created index entry in the directory walk. | ||
| 45 | |||
| 46 | Git baseline: Git 2.50.1 uses UTF-8-MAC to UTF-8 iconv conversion | ||
| 47 | in compat/precompose_utf8.c, with directory-read coverage in | ||
| 48 | t/t3910-mac-os-precompose.sh. That conversion leaves the reported combining-mark | ||
| 49 | order unchanged. | ||
| 50 | |||
| 51 | ### Commit Statistics | ||
| 52 | |||
| 53 | <csr-read-only-do-not-edit/> | ||
| 54 | |||
| 55 | - 11 commits contributed to the release over the course of 30 calendar days. | ||
| 56 | - 30 days passed between releases. | ||
| 57 | - 1 commit was understood as [conventional](https://www.conventionalcommits.org). | ||
| 58 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 59 | |||
| 60 | ### Commit Details | ||
| 61 | |||
| 62 | <csr-read-only-do-not-edit/> | ||
| 63 | |||
| 64 | <details><summary>view details</summary> | ||
| 65 | |||
| 66 | * **Uncategorized** | ||
| 67 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 68 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) | ||
| 69 | - Adapt to changes in `gix-testtools` ([`0cbe539`](https://github.com/GitoxideLabs/gitoxide/commit/0cbe53971687fb3b1959925aa9d8dc89deb5b474)) | ||
| 70 | - Merge pull request #2898 from cruessler/run-more-tests-with-sha-256-2 ([`7241150`](https://github.com/GitoxideLabs/gitoxide/commit/7241150fbf60ab4e9be48d65d7f2b269a393b756)) | ||
| 71 | - Review ([`351d793`](https://github.com/GitoxideLabs/gitoxide/commit/351d793eb6660febe82c6db2e78bedd2c518216f)) | ||
| 72 | - Use `GIX_TEST_FIXTURE_HASH` for more tests ([`9bb4148`](https://github.com/GitoxideLabs/gitoxide/commit/9bb4148b841f2566887638a646099bc86683bd78)) | ||
| 73 | - Merge pull request #2874 from GitoxideLabs/fix-status-untracked ([`8f18657`](https://github.com/GitoxideLabs/gitoxide/commit/8f18657718a1098fb3382aee51d866b9a1a1d10d)) | ||
| 74 | - Preserve combining-mark order when precomposing paths ([`234181b`](https://github.com/GitoxideLabs/gitoxide/commit/234181b199b533594ec9e41f3623e399d414e9e1)) | ||
| 75 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | ||
| 76 | - Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 ([`ab4fcb0`](https://github.com/GitoxideLabs/gitoxide/commit/ab4fcb0364ec4d01115595198f383b1ad9c29808)) | ||
| 77 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 78 | </details> | ||
| 79 | |||
| 80 | ## 0.28.0 (2026-07-23) | ||
| 9 | 81 | ||
| 10 | ### Bug Fixes | 82 | ### Bug Fixes |
| 11 | 83 | ||
| @@ -33,7 +105,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 21 unmodified lines | |||
| 33 | 105 | ||
| 34 | <csr-read-only-do-not-edit/> | 106 | <csr-read-only-do-not-edit/> |
| 35 | 107 | ||
| 36 | - 9 commits contributed to the release. | 108 | - 11 commits contributed to the release. |
| 37 | - 31 days passed between releases. | 109 | - 31 days passed between releases. |
| 38 | - 1 commit was understood as [conventional](https://www.conventionalcommits.org). | 110 | - 1 commit was understood as [conventional](https://www.conventionalcommits.org). |
| 39 | - 1 unique issue was worked on: [#2490](https://github.com/GitoxideLabs/gitoxide/issues/2490) | 111 | - 1 unique issue was worked on: [#2490](https://github.com/GitoxideLabs/gitoxide/issues/2490) |
| @@ -47,6 +119,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 7 unmodified lines | |||
| 47 | * **[#2490](https://github.com/GitoxideLabs/gitoxide/issues/2490)** | 119 | * **[#2490](https://github.com/GitoxideLabs/gitoxide/issues/2490)** |
| 48 | - Keep EmptyDirectory when collapsing trees of only empty dirs ([`4b38ff1`](https://github.com/GitoxideLabs/gitoxide/commit/4b38ff1267ec73afe79c727a3a998a7da209077e)) | 120 | - Keep EmptyDirectory when collapsing trees of only empty dirs ([`4b38ff1`](https://github.com/GitoxideLabs/gitoxide/commit/4b38ff1267ec73afe79c727a3a998a7da209077e)) |
| 49 | * **Uncategorized** | 121 | * **Uncategorized** |
| 122 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 123 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | ||
| 50 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 124 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 51 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) | 125 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) |
| 52 | - Replace lint allowances with expectations ([`43ff87a`](https://github.com/GitoxideLabs/gitoxide/commit/43ff87a73897b70313e3a58e7de82231be5b59ad)) | 126 | - Replace lint allowances with expectations ([`43ff87a`](https://github.com/GitoxideLabs/gitoxide/commit/43ff87a73897b70313e3a58e7de82231be5b59ad)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-dir" | 4 | name = "gix-dir" |
| 5 | version = "0.29.0" | 5 | version = "0.29.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dealing with directory walks" | 8 | description = "A crate of the gitoxide project dealing with directory walks" |
| @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.25.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 8 | ## 0.25.0 (2026-08-22) | 31 | ## 0.25.0 (2026-08-22) |
| 9 | 32 | ||
| 10 | ### Commit Statistics | 33 | ### Commit Statistics |
| 11 | 34 | ||
| 12 | <csr-read-only-do-not-edit/> | 35 | <csr-read-only-do-not-edit/> |
| 13 | 36 | ||
| 14 | - 7 commits contributed to the release over the course of 30 calendar days. | 37 | - 8 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 38 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 39 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 40 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 46 | <details><summary>view details</summary> |
| 24 | 47 | ||
| 25 | * **Uncategorized** | 48 | * **Uncategorized** |
| 49 | - Release gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`0c541c7`](https://github.com/GitoxideLabs/gitoxide/commit/0c541c7308aee674110dc4dbd2ccda6dceaf41e6)) | ||
| 26 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | 50 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) |
| 27 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 51 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 28 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | 52 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-fsck" | 4 | name = "gix-fsck" |
| 5 | version = "0.25.0" | 5 | version = "0.25.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | authors = ["Cameron Esfahani <cesfahani@gmail.com>", "Sebastian Thiel <sebastian.thiel@icloud.com>"] | 7 | authors = ["Cameron Esfahani <cesfahani@gmail.com>", "Sebastian Thiel <sebastian.thiel@icloud.com>"] |
| 8 | license = "MIT OR Apache-2.0" | 8 | license = "MIT OR Apache-2.0" |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-macros" | 4 | name = "gix-macros" |
| 5 | version = "0.1.5" | 5 | version = "0.1.6" |
| 6 | edition = "2024" | 6 | edition = "2024" |
| 7 | description = "Proc-macro utilities for gix" | 7 | description = "Proc-macro utilities for gix" |
| 8 | authors = [ | 8 | authors = [ |
| @@ -5,13 +5,100 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.34.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.34.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### Bug Fixes | ||
| 34 | |||
| 35 | - <csr-id-122125b49f2f42cc767cbcf13082a2659d9bc9dc/> match Git when parsing a second mailmap identity | ||
| 36 | <!-- agent --> | ||
| 37 | Git treats the second name-and-email pair differently from the first: an | ||
| 38 | empty email is accepted, and a malformed pair is ignored while retaining | ||
| 39 | the mapping parsed from the first identity. Mirror those rules instead of | ||
| 40 | rejecting the entire line. | ||
| 41 | |||
| 42 | This also keeps arbitrary malformed trailing content from dropping an | ||
| 43 | otherwise valid mapping. | ||
| 44 | - <csr-id-8aab54dc473687b0eeb5e1af28d99da3cccd7fa0/> don't reject mailmap lines with content after the second email | ||
| 45 | Git's `read_mailmap_line()` parses at most two `name <email>` pairs and | ||
| 46 | discards whatever follows - the return value of the second | ||
| 47 | `parse_name_and_email()` call is unused. `gix-mailmap` instead rejected | ||
| 48 | any line with a non-empty remainder, and because `Snapshot::from_bytes()` | ||
| 49 | goes through `parse_ignore_errors()`, those lines were silently dropped. | ||
| 50 | |||
| 51 | Git's own `.mailmap` contains 16 such lines out of 305, and | ||
| 52 | `torvalds/linux`'s contains one. Line 230 of git.git's `.mailmap`: | ||
| 53 | |||
| 54 | Philip Oakley <philipoakley@iee.email> <philipoakley@iee.org> # secondary <philipoakley@dunelm.org.uk> | ||
| 55 | |||
| 56 | $ git check-mailmap 'Philip Oakley <philipoakley@iee.org>' | ||
| 57 | Philip Oakley <philipoakley@iee.email> | ||
| 58 | |||
| 59 | while `gix_mailmap::Snapshot::resolve()` returned the signature unchanged. | ||
| 60 | |||
| 61 | The remainder check is replaced by Git's own condition: reject a line only | ||
| 62 | when it contains no email at all, which is what `if (email1)` guards in | ||
| 63 | `read_mailmap_line()`. Lines such as `just a name` therefore still produce | ||
| 64 | an error, so `parse()` keeps reporting genuinely unparseable input. The | ||
| 65 | message is reworded because "too many names or emails" can no longer | ||
| 66 | happen. | ||
| 67 | |||
| 68 | Resolving every name and email appearing in git.git's and linux's | ||
| 69 | `.mailmap` - 904 and 2834 queries - now agrees with `git check-mailmap` | ||
| 70 | in every case; 16 and 2 of them disagreed before. | ||
| 71 | |||
| 72 | ### Commit Statistics | ||
| 73 | |||
| 74 | <csr-read-only-do-not-edit/> | ||
| 75 | |||
| 76 | - 5 commits contributed to the release over the course of 30 calendar days. | ||
| 77 | - 30 days passed between releases. | ||
| 78 | - 2 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 79 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 80 | |||
| 81 | ### Commit Details | ||
| 82 | |||
| 83 | <csr-read-only-do-not-edit/> | ||
| 84 | |||
| 85 | <details><summary>view details</summary> | ||
| 86 | |||
| 87 | * **Uncategorized** | ||
| 88 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 89 | - Merge pull request #2857 from shuvamk/fix/mailmap-trailing-content ([`f14a495`](https://github.com/GitoxideLabs/gitoxide/commit/f14a495b0c30af82e2156f0dbdf60dfd74ac3612)) | ||
| 90 | - Match Git when parsing a second mailmap identity ([`122125b`](https://github.com/GitoxideLabs/gitoxide/commit/122125b49f2f42cc767cbcf13082a2659d9bc9dc)) | ||
| 91 | - Don't reject mailmap lines with content after the second email ([`8aab54d`](https://github.com/GitoxideLabs/gitoxide/commit/8aab54dc473687b0eeb5e1af28d99da3cccd7fa0)) | ||
| 92 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 93 | </details> | ||
| 94 | |||
| 8 | ## 0.33.2 (2026-07-23) | 95 | ## 0.33.2 (2026-07-23) |
| 9 | 96 | ||
| 10 | ### Commit Statistics | 97 | ### Commit Statistics |
| 11 | 98 | ||
| 12 | <csr-read-only-do-not-edit/> | 99 | <csr-read-only-do-not-edit/> |
| 13 | 100 | ||
| 14 | - 4 commits contributed to the release. | 101 | - 5 commits contributed to the release. |
| 15 | - 58 days passed between releases. | 102 | - 58 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 103 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 104 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +110,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 110 | <details><summary>view details</summary> |
| 24 | 111 | ||
| 25 | * **Uncategorized** | 112 | * **Uncategorized** |
| 113 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 26 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | 114 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) |
| 27 | - Merge pull request #2714 from GitoxideLabs/fix-credentials-parsing ([`cf3053a`](https://github.com/GitoxideLabs/gitoxide/commit/cf3053a3c18e2de788cdaa9f41b5bd343bdc0091)) | 115 | - Merge pull request #2714 from GitoxideLabs/fix-credentials-parsing ([`cf3053a`](https://github.com/GitoxideLabs/gitoxide/commit/cf3053a3c18e2de788cdaa9f41b5bd343bdc0091)) |
| 28 | - Release gix-path v0.12.2, gix-error v0.2.5, gix-utils v0.3.4, gix-date v0.15.6, gix-url v0.36.2, gix-credentials v0.38.2 ([`27aec47`](https://github.com/GitoxideLabs/gitoxide/commit/27aec474c113cc885d44631b329454dc1ad0fed2)) | 116 | - Release gix-path v0.12.2, gix-error v0.2.5, gix-utils v0.3.4, gix-date v0.15.6, gix-url v0.36.2, gix-credentials v0.38.2 ([`27aec47`](https://github.com/GitoxideLabs/gitoxide/commit/27aec474c113cc885d44631b329454dc1ad0fed2)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-mailmap" | 4 | name = "gix-mailmap" |
| 5 | version = "0.34.0" | 5 | version = "0.34.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project for parsing mailmap files" | 8 | description = "A crate of the gitoxide project for parsing mailmap files" |
| @@ -5,7 +5,254 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## Unreleased | 8 | ## 0.20.1 (2026-08-24) |
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 4 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Use fundamental-type comparisons throughout tests ([`47536a5`](https://github.com/GitoxideLabs/gitoxide/commit/47536a5c2b22da3a9f4892c8af5e460c2d5bda0a)) | ||
| 29 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 30 | </details> | ||
| 31 | |||
| 32 | ## 0.20.0 (2026-08-22) | ||
| 33 | |||
| 34 | ### Bug Fixes | ||
| 35 | |||
| 36 | - <csr-id-61b45a81911561761b1546e8bf74541263b964be/> track whether tree changes were actually applied | ||
| 37 | <!-- agent --> | ||
| 38 | |||
| 39 | Replace the ambiguous `was_written` flag with an explicit change state: | ||
| 40 | |||
| 41 | - `Pending` means the change still needs processing. | ||
| 42 | - `Processed` means conflict handling consumed the change without applying it. | ||
| 43 | - `Applied` means its effect was written to the tree editor. | ||
| 44 | |||
| 45 | This distinction matters for forced ancestor resolution. A deletion may participate | ||
| 46 | in a conflict while the ancestor entry is deliberately retained. Treating that | ||
| 47 | deletion as written caused later changes below the same path to assume the file | ||
| 48 | had been removed and replace it with a directory. | ||
| 49 | |||
| 50 | Only suppress subsequent conflicts for deletions that were actually applied. | ||
| 51 | Keep applied state monotonic so later bookkeeping cannot downgrade it to merely | ||
| 52 | processed. | ||
| 53 | |||
| 54 | The expanded rename baselines exposed related ordering issues, to allow a fix: | ||
| 55 | |||
| 56 | - Preserve trie children when removing a change attached to an interior node. | ||
| 57 | - Associate deferred rewrite additions with the opposing change index so the | ||
| 58 | same rename content is not merged twice. | ||
| 59 | - Detect different source files renamed onto the same destination. | ||
| 60 | - Merge converging rename contents as competing additions instead of silently | ||
| 61 | allowing one rename to win. | ||
| 62 | - Define forced resolution for converging renames: ancestor retains both source | ||
| 63 | files, while ours applies only the selected side's rename. | ||
| 64 | |||
| 65 | Add an inspectable rename/change matrix covering: | ||
| 66 | |||
| 67 | - rename versus source modification | ||
| 68 | - rename versus source deletion | ||
| 69 | - rename versus destination addition | ||
| 70 | - rename onto a modified destination | ||
| 71 | - rename onto a deleted destination | ||
| 72 | - the same source renamed to different destinations | ||
| 73 | - additions below a renamed directory | ||
| 74 | - both sides modifying and choosing the same rename | ||
| 75 | - different sources renamed onto the same destination | ||
| 76 | - rename/delete combined with file-to-directory replacement | ||
| 77 | - <csr-id-195f0b99a650c626d951ef7a902733a0e2ac44cc/> treat adjacent text changes as conflicting. | ||
| 78 | <!-- agent --> | ||
| 79 | |||
| 80 | The text merge previously considered changes from opposing sides to | ||
| 81 | overlap only when the later hunk started inside the earlier hunk's | ||
| 82 | half-open base range. For adjacent ranges `[a, b)` and `[b, c)`, the | ||
| 83 | second hunk starts exactly at the end of the first and therefore wasn't | ||
| 84 | considered to overlap. | ||
| 85 | |||
| 86 | This caused gix to merge edits to neighboring lines cleanly even though | ||
| 87 | there was no unchanged base line separating them. Git instead combines | ||
| 88 | such touching changes into one conflicting region. | ||
| 89 | |||
| 90 | Treat opposing hunks as disjoint only when there is an actual gap | ||
| 91 | between their base ranges. A later hunk whose start is equal to the | ||
| 92 | earlier hunk's end now intersects it, while same-side hunks and changes | ||
| 93 | separated by an unchanged line retain their previous behavior. | ||
| 94 | |||
| 95 | Add direct text-driver coverage for both merge directions. The tests | ||
| 96 | verify that adjacent edits produce one conflict with the expected | ||
| 97 | content and that edits separated by an unchanged base line still merge | ||
| 98 | cleanly while preserving both changes. | ||
| 99 | - <csr-id-1ee3fc6adf44520ee3397982ec42dbf65a9126f8/> merge additions below jointly deleted files | ||
| 100 | <!-- agent --> | ||
| 101 | |||
| 102 | When both sides delete a file and one side replaces it with a directory, | ||
| 103 | the tree merge matched the directory parent instead of the non-tree deletion | ||
| 104 | and later treated a child addition as a conflict. In debug builds this reached | ||
| 105 | an assertion for changes at different paths. | ||
| 106 | |||
| 107 | Prefer non-tree changes when multiple changes occupy the same lookup path. | ||
| 108 | Mark matching deletions as consumed so their child additions can be applied | ||
| 109 | without colliding with stale conflict state. Add a bidirectional baseline | ||
| 110 | covering the file-to-directory replacement. | ||
| 111 | |||
| 112 | Git baseline: Git 2.50.1 merge-tree resolves the fixture cleanly in both | ||
| 113 | directions and retains to-be-deleted/a. The reference checkout was at | ||
| 114 | a23bace963. | ||
| 115 | |||
| 116 | ### Changed (BREAKING) | ||
| 117 | |||
| 118 | - <csr-id-43cf77fdb52b547e727343644264fe60c05e6589/> Refactor tree-merge change matching and resolution. | ||
| 119 | Breaking because of added `ResolutionFailure` variants. | ||
| 120 | |||
| 121 | <!-- agent --> | ||
| 122 | The tree-merge implementation previously combined side-diff collection, | ||
| 123 | path matching, scheduling, and the complete conflict-resolution matrix in a | ||
| 124 | single function. It also duplicated change collection for both sides and | ||
| 125 | represented pair outcomes with independent boolean flags. | ||
| 126 | |||
| 127 | Keep the public tree() entry point as a small facade and move the merge | ||
| 128 | engine into focused private modules. Collect each ancestor-to-side diff | ||
| 129 | through one helper that constructs a SideState containing the flat change | ||
| 130 | list and its matching tree together. Isolate path and rename candidate | ||
| 131 | matching, including identical-change suppression, from classification into | ||
| 132 | pairs that the resolution matrix understands. | ||
| 133 | |||
| 134 | Represent the result of handling each paired change explicitly as a | ||
| 135 | ChangeDisposition. This preserves the important distinction between a | ||
| 136 | change that was merely processed and one whose effect is present in the | ||
| 137 | editor, without duplicating the final state transition in the scheduler. | ||
| 138 | Replace the type-specific side-picking helpers with generic pick() and | ||
| 139 | pick_mut() helpers as well. | ||
| 140 | |||
| 141 | These boundaries make the state machine easier to review and reduce the | ||
| 142 | chance that a future rename or forced-resolution fix accidentally changes | ||
| 143 | collection, matching, and application at once. They also remove duplicated | ||
| 144 | setup while keeping the exhaustive resolution match in one place, where | ||
| 145 | its symmetry remains visible. The public API and all recorded merge results | ||
| 146 | remain unchanged. | ||
| 147 | |||
| 148 | Fixes and Improvements | ||
| 149 | ---------------------- | ||
| 150 | |||
| 151 | Tree merging combines a flat change schedule with per-side path indexes. Valid | ||
| 152 | Git operations can therefore arrive in different orders or expose structural | ||
| 153 | relationships before the leaf changes that ultimately apply them. Several | ||
| 154 | resolver branches treated those relationships as physical occupancy or as | ||
| 155 | content changes for the same identity, leading to hangs, assertions, duplicate | ||
| 156 | entries, lost siblings, or merge results that depended on diff and side order. | ||
| 157 | |||
| 158 | Separate unique-path occupancy from PassedRewrittenDirectory scheduling so a | ||
| 159 | side-qualified name can terminate below directory rewrites. Prune empty path | ||
| 160 | nodes back to the root, and allow a deferred rewrite to insert only its new | ||
| 161 | destination because its source is already indexed. | ||
| 162 | |||
| 163 | Resolve the structural cases at their actual identity boundaries: | ||
| 164 | - handle an added file blocking an added directory before mode-specific add/add | ||
| 165 | resolution and defer early descendants until their parent deletion runs; | ||
| 166 | - keep explicit file renames ahead of inferred directory renames, and keep | ||
| 167 | directory replacements at their explicit sources; | ||
| 168 | - treat file replacements of incompatible non-blob ancestors as additions with | ||
| 169 | an empty compatible merge base; | ||
| 170 | - pair shared deletions before descendants and allow file renames into paths | ||
| 171 | vacated by directory renames; | ||
| 172 | - preserve unrelated nested or overlapping rename destinations by keeping the | ||
| 173 | directory in place and moving only the blocking file; | ||
| 174 | - reject incompatible same-destination rewrites before blob merging, while | ||
| 175 | collapsing identical rewrites to one clean shared destination; and | ||
| 176 | - defer file-to-directory children until the parent rename/delete decision is | ||
| 177 | made exactly once. | ||
| 178 | |||
| 179 | Forced Ancestor and Ours resolution continues to apply only the selected side. | ||
| 180 | Git-backed baselines cover both directions, forced policies, modes, symlinks, | ||
| 181 | gitlinks, nested directories, and documented index-only deviations. The | ||
| 182 | resulting suite contains 155 directional baseline cases, and the Cartesian | ||
| 183 | model reaches 210/210 Git/gix agreement for trees and path/mode results. | ||
| 184 | |||
| 185 | More Hardening | ||
| 186 | -------------- | ||
| 187 | |||
| 188 | Deferred tree changes may be reconsidered after another conflict has already | ||
| 189 | consumed or pruned the same path-tree node. This is valid when rename detection | ||
| 190 | has ambiguous identical sources, when structural conflicts overlap, or when a | ||
| 191 | change follows a detected directory rename. The editor and conflict records | ||
| 192 | still contain the required state, but strict bookkeeping removals and older | ||
| 193 | same-path assertions turned these schedules into debug panics, hangs, or | ||
| 194 | side-order-dependent duplicate content. | ||
| 195 | |||
| 196 | Make cleanup idempotent wherever absence is already the required end state: | ||
| 197 | add/add type conflicts, same-source rewrites, blocking conflict destinations, | ||
| 198 | delete/rewrite sources, and changes deferred through directory renames. Accept | ||
| 199 | cross-path structural matches from ambiguous rewrite candidates and let the | ||
| 200 | existing conservative unknown-conflict fallback handle them. | ||
| 201 | |||
| 202 | Preserve each rewrite input mode when blob content is identical so executable | ||
| 203 | mode changes remain visible to the merge. Make unique-path selection respect | ||
| 204 | childless tracked directories and qualify the first blocking file component, | ||
| 205 | which guarantees termination instead of varying an ineffective descendant | ||
| 206 | suffix forever. Finally, when a deferred addition is relocated to a unique | ||
| 207 | conflict path, remove its temporary original path from the side index before | ||
| 208 | marking it processed so a later descendant cannot relocate the same content a | ||
| 209 | second time. | ||
| 210 | |||
| 211 | The minimized and accumulated fuzz inputs now complete without failure. | ||
| 212 | Git-backed regressions cover ambiguous sources, consumed nodes, repeated | ||
| 213 | rename/delete candidates, mode-only rewrite collisions, unique paths below | ||
| 214 | files, and nested rename destinations in both side orderings. The final tree | ||
| 215 | baseline contains 165 directional cases with 130 intentionally skipped forced | ||
| 216 | resolution checks, and reversing the nested relocation case retains exactly | ||
| 217 | `a/a/a` and `a~A` without inventing `a~A_0`. | ||
| 218 | |||
| 219 | ### Commit Statistics | ||
| 220 | |||
| 221 | <csr-read-only-do-not-edit/> | ||
| 222 | |||
| 223 | - 18 commits contributed to the release over the course of 30 calendar days. | ||
| 224 | - 30 days passed between releases. | ||
| 225 | - 4 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 226 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 227 | |||
| 228 | ### Commit Details | ||
| 229 | |||
| 230 | <csr-read-only-do-not-edit/> | ||
| 231 | |||
| 232 | <details><summary>view details</summary> | ||
| 233 | |||
| 234 | * **Uncategorized** | ||
| 235 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | ||
| 236 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 237 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) | ||
| 238 | - Adapt to changes in `gix-testtools` ([`0cbe539`](https://github.com/GitoxideLabs/gitoxide/commit/0cbe53971687fb3b1959925aa9d8dc89deb5b474)) | ||
| 239 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | ||
| 240 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) | ||
| 241 | - Merge pull request #2843 from GitoxideLabs/deleted-file-added-dir ([`f33e250`](https://github.com/GitoxideLabs/gitoxide/commit/f33e250d35391faf981cabc1ff5c7c1ab0af62a9)) | ||
| 242 | - Refactor tree-merge change matching and resolution. ([`43cf77f`](https://github.com/GitoxideLabs/gitoxide/commit/43cf77fdb52b547e727343644264fe60c05e6589)) | ||
| 243 | - Add Linux-sized tree merge benchmarks ([`7ccac01`](https://github.com/GitoxideLabs/gitoxide/commit/7ccac0132e48e23aaf56ad29eed9e9d35bff89cc)) | ||
| 244 | - Add structural tree-merge validation. ([`af2aa23`](https://github.com/GitoxideLabs/gitoxide/commit/af2aa2302506df476297a14db388fa4169a811ba)) | ||
| 245 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | ||
| 246 | - Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 ([`ab4fcb0`](https://github.com/GitoxideLabs/gitoxide/commit/ab4fcb0364ec4d01115595198f383b1ad9c29808)) | ||
| 247 | - Merge pull request #2826 from GitoxideLabs/deleted-file-added-dir ([`83e074c`](https://github.com/GitoxideLabs/gitoxide/commit/83e074c1e2d070059febaaab1022058948855101)) | ||
| 248 | - Add a Cartesian tree-merge correctness baseline. ([`df845cf`](https://github.com/GitoxideLabs/gitoxide/commit/df845cfedca98e9c9b52922223ebf4d77581af90)) | ||
| 249 | - Track whether tree changes were actually applied ([`61b45a8`](https://github.com/GitoxideLabs/gitoxide/commit/61b45a81911561761b1546e8bf74541263b964be)) | ||
| 250 | - Treat adjacent text changes as conflicting. ([`195f0b9`](https://github.com/GitoxideLabs/gitoxide/commit/195f0b99a650c626d951ef7a902733a0e2ac44cc)) | ||
| 251 | - Merge additions below jointly deleted files ([`1ee3fc6`](https://github.com/GitoxideLabs/gitoxide/commit/1ee3fc6adf44520ee3397982ec42dbf65a9126f8)) | ||
| 252 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 253 | </details> | ||
| 254 | |||
| 255 | ## 0.19.0 (2026-07-23) | ||
| 9 | 256 | ||
| 10 | ### Bug Fixes | 257 | ### Bug Fixes |
| 11 | 258 | ||
| @@ -40,7 +287,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 28 unmodified lines | |||
| 40 | 287 | ||
| 41 | <csr-read-only-do-not-edit/> | 288 | <csr-read-only-do-not-edit/> |
| 42 | 289 | ||
| 43 | - 16 commits contributed to the release. | 290 | - 18 commits contributed to the release. |
| 44 | - 31 days passed between releases. | 291 | - 31 days passed between releases. |
| 45 | - 2 commits were understood as [conventional](https://www.conventionalcommits.org). | 292 | - 2 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 46 | - 1 unique issue was worked on: [#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832) | 293 | - 1 unique issue was worked on: [#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832) |
| @@ -54,6 +301,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 7 unmodified lines | |||
| 54 | * **[#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832)** | 301 | * **[#1832](https://github.com/GitoxideLabs/gitoxide/issues/1832)** |
| 55 | - Prefer file-name matches when pairing rename candidates, like Git ([`cea5ea7`](https://github.com/GitoxideLabs/gitoxide/commit/cea5ea77b57f840de618e1d15508add8293f30f2)) | 302 | - Prefer file-name matches when pairing rename candidates, like Git ([`cea5ea7`](https://github.com/GitoxideLabs/gitoxide/commit/cea5ea77b57f840de618e1d15508add8293f30f2)) |
| 56 | * **Uncategorized** | 303 | * **Uncategorized** |
| 304 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 305 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | ||
| 57 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 306 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 58 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) | 307 | - Merge pull request #2737 from GitoxideLabs/encoding-fallback-pony ([`2315ede`](https://github.com/GitoxideLabs/gitoxide/commit/2315ede714da6a43c885ed534f37901b2e1db687)) |
| 59 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) | 308 | - Adapt to changes in `gix-filter` ([`552402f`](https://github.com/GitoxideLabs/gitoxide/commit/552402f6147b8ed4f412b9d24bf8408320b4a5d8)) |
| @@ -1,6 +1,6 @@ | |||
| 1 | [package] | 1 | [package] |
| 2 | name = "gix-merge" | 2 | name = "gix-merge" |
| 3 | version = "0.20.0" | 3 | version = "0.20.1" |
| 4 | repository = "https://github.com/GitoxideLabs/gitoxide" | 4 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 5 | license = "MIT OR Apache-2.0" | 5 | license = "MIT OR Apache-2.0" |
| 6 | description = "A crate of the gitoxide project implementing merge algorithms" | 6 | description = "A crate of the gitoxide project implementing merge algorithms" |
| @@ -38,9 +38,9 @@ gix-fs = { version = "^0.22.1", path = "../gix-fs" } · 31 unmodified lines | |||
| 38 | gix-tempfile = { version = "^24.0.0", path = "../gix-tempfile" } | 38 | gix-tempfile = { version = "^24.0.0", path = "../gix-tempfile" } |
| 39 | gix-trace = { version = "^0.1.21", path = "../gix-trace" } | 39 | gix-trace = { version = "^0.1.21", path = "../gix-trace" } |
| 40 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } | 40 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } |
| 41 | gix-revision = { version = "^0.49.0", path = "../gix-revision", default-features = false, features = ["merge_base"] } | 41 | gix-revision = { version = "^0.49.1", path = "../gix-revision", default-features = false, features = ["merge_base"] } |
| 42 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } | 42 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } |
| 43 | gix-diff = { version = "^0.67.0", path = "../gix-diff", default-features = false, features = ["blob"] } | 43 | gix-diff = { version = "^0.67.1", path = "../gix-diff", default-features = false, features = ["blob"] } |
| 44 | gix-index = { version = "^0.55.0", path = "../gix-index" } | 44 | gix-index = { version = "^0.55.0", path = "../gix-index" } |
| 45 | imara-diff = { package = "gix-imara-diff", version = "^0.2.5", path = "../gix-imara-diff" } | 45 | imara-diff = { package = "gix-imara-diff", version = "^0.2.5", path = "../gix-imara-diff" } |
| 46 | 46 | ||
| @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.35.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 8 | ## 0.35.0 (2026-08-22) | 31 | ## 0.35.0 (2026-08-22) |
| 9 | 32 | ||
| 10 | ### Commit Statistics | 33 | ### Commit Statistics |
| 11 | 34 | ||
| 12 | <csr-read-only-do-not-edit/> | 35 | <csr-read-only-do-not-edit/> |
| 13 | 36 | ||
| 14 | - 9 commits contributed to the release over the course of 30 calendar days. | 37 | - 10 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 38 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 39 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 40 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 46 | <details><summary>view details</summary> |
| 24 | 47 | ||
| 25 | * **Uncategorized** | 48 | * **Uncategorized** |
| 49 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | ||
| 26 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 50 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 27 | - Merge pull request #2919 from cruessler/require-object-hash-in-file-store-at ([`e5452ba`](https://github.com/GitoxideLabs/gitoxide/commit/e5452baec8ad94736a9f489ec5135c46091eab97)) | 51 | - Merge pull request #2919 from cruessler/require-object-hash-in-file-store-at ([`e5452ba`](https://github.com/GitoxideLabs/gitoxide/commit/e5452baec8ad94736a9f489ec5135c46091eab97)) |
| 28 | - Adapt to changes in `gix-ref` ([`5810922`](https://github.com/GitoxideLabs/gitoxide/commit/5810922cdb1c2028236b923f6003db7445da35ea)) | 52 | - Adapt to changes in `gix-ref` ([`5810922`](https://github.com/GitoxideLabs/gitoxide/commit/5810922cdb1c2028236b923f6003db7445da35ea)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-negotiate" | 4 | name = "gix-negotiate" |
| 5 | version = "0.35.0" | 5 | version = "0.35.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project implementing negotiation algorithms" | 8 | description = "A crate of the gitoxide project implementing negotiation algorithms" |
| @@ -5,6 +5,149 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.1.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.1.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### Chore | ||
| 34 | |||
| 35 | - <csr-id-3e05ca352597ef5966fa4dc4f52456c2424cddad/> add package.include directives to control which files are packaged. | ||
| 36 | - <csr-id-17835bccb066bbc47cc137e8ec5d9fe7d5665af0/> bump `rust-version` to 1.70 | ||
| 37 | That way clippy will allow to use the fantastic `Option::is_some_and()` | ||
| 38 | and friends. | ||
| 39 | - <csr-id-3bd09ef120945a9669321ea856db4079a5dab930/> change `rust-version` manifest field back to 1.65. | ||
| 40 | They didn't actually need to be higher to work, and changing them | ||
| 41 | unecessarily can break downstream CI. | ||
| 42 | |||
| 43 | Let's keep this value as low as possible, and only increase it when | ||
| 44 | more recent features are actually used. | ||
| 45 | - <csr-id-aea89c3ad52f1a800abb620e9a4701bdf904ff7d/> upgrade MSRV to v1.70 | ||
| 46 | Our MSRV follows the one of `helix`, which in turn follows Firefox. | ||
| 47 | |||
| 48 | ### Documentation | ||
| 49 | |||
| 50 | - <csr-id-64ff0a77062d35add1a2dd422bb61075647d1a36/> Update gitoxide repository URLs | ||
| 51 | This updates `Byron/gitoxide` URLs to `GitoxideLabs/gitoxide` in: | ||
| 52 | |||
| 53 | - Markdown documentation, except changelogs and other such files | ||
| 54 | where such changes should not be made. | ||
| 55 | |||
| 56 | - Documentation comments (in .rs files). | ||
| 57 | |||
| 58 | - Manifest (.toml) files, for the value of the `repository` key. | ||
| 59 | |||
| 60 | - The comments appearing at the top of a sample hook that contains | ||
| 61 | a repository URL as an example. | ||
| 62 | |||
| 63 | When making these changes, I also allowed my editor to remove | ||
| 64 | trailing whitespace in any lines in files already being edited | ||
| 65 | (since, in this case, there was no disadvantage to allowing this). | ||
| 66 | |||
| 67 | The gitoxide repository URL changed when the repository was moved | ||
| 68 | into the recently created GitHub organization `GitoxideLabs`, as | ||
| 69 | detailed in #1406. Please note that, although I believe updating | ||
| 70 | the URLs to their new canonical values is useful, this is not | ||
| 71 | needed to fix any broken links, since `Byron/gitoxide` URLs | ||
| 72 | redirect (and hopefully will always redirect) to the coresponding | ||
| 73 | `GitoxideLabs/gitoxide` URLs. | ||
| 74 | |||
| 75 | While this change should not break any URLs, some affected URLs | ||
| 76 | were already broken. This updates them, but they are still broken. | ||
| 77 | They will be fixed in a subsequent commit. | ||
| 78 | |||
| 79 | This also does not update `Byron/gitoxide` URLs in test fixtures | ||
| 80 | or test cases, nor in the `Makefile`. (It may make sense to change | ||
| 81 | some of those too, but it is not really a documentation change.) | ||
| 82 | |||
| 83 | ### New Features | ||
| 84 | |||
| 85 | - <csr-id-d21b52afaaae0cb5312aa3d474f476166546b760/> support note mutation in gix-note | ||
| 86 | <!-- agent --> | ||
| 87 | Add plumbing operations to insert, replace, and remove note mappings while | ||
| 88 | returning the rewritten root tree and the previous note id. | ||
| 89 | |||
| 90 | Rebuild notes using the same dynamic fanout rule as Git so growing and shrinking | ||
| 91 | collections remain compatible with existing notes trees. Preserve unrelated | ||
| 92 | entries during rewriting, reject mixed object-hash kinds, report duplicate | ||
| 93 | mappings, and leave the tree unchanged when removing a missing note. | ||
| 94 | |||
| 95 | Keep object persistence delegated through Find and Write traits, allowing | ||
| 96 | callers to decide how commits and refs are updated. | ||
| 97 | - <csr-id-048bfd3058cb122c5155f59136b24d522681d62b/> support lazy note lookup in gix-note | ||
| 98 | <!-- agent --> | ||
| 99 | Establish the minimal plumbing API needed to query notes efficiently for many | ||
| 100 | objects, such as every commit visible in a history view. | ||
| 101 | |||
| 102 | Resolve note blobs through Git notes progressive two-hex-digit fanout trees | ||
| 103 | and use Git tree ordering for direct entry lookup. Load only trees along the | ||
| 104 | requested object path and retain decoded trees in a caller-owned cache that can | ||
| 105 | be reused across lookups and notes roots. | ||
| 106 | |||
| 107 | Ignore entries that do not form valid notes instead of mistaking arbitrary tree | ||
| 108 | contents for mappings. Use gix-error for contextual failures. | ||
| 109 | |||
| 110 | ### Commit Statistics | ||
| 111 | |||
| 112 | <csr-read-only-do-not-edit/> | ||
| 113 | |||
| 114 | - 23 commits contributed to the release. | ||
| 115 | - 1101 days passed between releases. | ||
| 116 | - 7 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 117 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 118 | |||
| 119 | ### Commit Details | ||
| 120 | |||
| 121 | <csr-read-only-do-not-edit/> | ||
| 122 | |||
| 123 | <details><summary>view details</summary> | ||
| 124 | |||
| 125 | * **Uncategorized** | ||
| 126 | - Make gix-note compile on docs.rs ([`94aa28e`](https://github.com/GitoxideLabs/gitoxide/commit/94aa28ee57d73e32a43edc9ebf6dbb8dd460ed45)) | ||
| 127 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 128 | - Merge pull request #2930 from GitoxideLabs/gix-notes ([`7424676`](https://github.com/GitoxideLabs/gitoxide/commit/7424676f86cd3f5a67c53f8db6baf0803e937d4a)) | ||
| 129 | - Support note mutation in gix-note ([`d21b52a`](https://github.com/GitoxideLabs/gitoxide/commit/d21b52afaaae0cb5312aa3d474f476166546b760)) | ||
| 130 | - Support lazy note lookup in gix-note ([`048bfd3`](https://github.com/GitoxideLabs/gitoxide/commit/048bfd3058cb122c5155f59136b24d522681d62b)) | ||
| 131 | - Merge pull request #2568 from GitoxideLabs/dependabot/cargo/cargo-56d6b174d8 ([`ab2fee1`](https://github.com/GitoxideLabs/gitoxide/commit/ab2fee14651202fcb7b3d8178932090c73492014)) | ||
| 132 | - Update crates to Rust 2024 edition ([`2cb17b2`](https://github.com/GitoxideLabs/gitoxide/commit/2cb17b2e7f6009693a55af907614f705a29d8c29)) | ||
| 133 | - Remove rust_2018_idioms lint declarations ([`e10d5f6`](https://github.com/GitoxideLabs/gitoxide/commit/e10d5f662df2ee05f973a3167ad215a330ee74e1)) | ||
| 134 | - Raise MSRV for hash dependency updates ([`3675a8d`](https://github.com/GitoxideLabs/gitoxide/commit/3675a8d61b17845a783bc27912a3f52ac273a4af)) | ||
| 135 | - Merge pull request #2518 from GitoxideLabs/improvements ([`444a92b`](https://github.com/GitoxideLabs/gitoxide/commit/444a92b0fa1df406cf2f36f8dbe82c2859e04e0b)) | ||
| 136 | - Add package.include directives to control which files are packaged. ([`3e05ca3`](https://github.com/GitoxideLabs/gitoxide/commit/3e05ca352597ef5966fa4dc4f52456c2424cddad)) | ||
| 137 | - Merge pull request #2217 from GitoxideLabs/copilot/update-msrv-to-rust-1-82 ([`4da2927`](https://github.com/GitoxideLabs/gitoxide/commit/4da2927629c7ec95b96d62a387c61097e3fc71fa)) | ||
| 138 | - Update MSRV to 1.82 and replace once_cell with std equivalents ([`6cc8464`](https://github.com/GitoxideLabs/gitoxide/commit/6cc84641cb7be6f70468a90efaafcf142a6b8c4b)) | ||
| 139 | - Merge pull request #1762 from GitoxideLabs/fix-1759 ([`7ec21bb`](https://github.com/GitoxideLabs/gitoxide/commit/7ec21bb96ce05b29dde74b2efdf22b6e43189aab)) | ||
| 140 | - Bump `rust-version` to 1.70 ([`17835bc`](https://github.com/GitoxideLabs/gitoxide/commit/17835bccb066bbc47cc137e8ec5d9fe7d5665af0)) | ||
| 141 | - Merge pull request #1624 from EliahKagan/update-repo-url ([`795962b`](https://github.com/GitoxideLabs/gitoxide/commit/795962b107d86f58b1f7c75006da256d19cc80ad)) | ||
| 142 | - Update gitoxide repository URLs ([`64ff0a7`](https://github.com/GitoxideLabs/gitoxide/commit/64ff0a77062d35add1a2dd422bb61075647d1a36)) | ||
| 143 | - Merge branch 'global-lints' ([`37ba461`](https://github.com/GitoxideLabs/gitoxide/commit/37ba4619396974ec9cc41d1e882ac5efaf3816db)) | ||
| 144 | - Workspace Clippy lint management ([`2e0ce50`](https://github.com/GitoxideLabs/gitoxide/commit/2e0ce506968c112b215ca0056bd2742e7235df48)) | ||
| 145 | - Merge branch 'msrv' ([`8c492d7`](https://github.com/GitoxideLabs/gitoxide/commit/8c492d7b7e6e5d520b1e3ffeb489eeb88266aa75)) | ||
| 146 | - Change `rust-version` manifest field back to 1.65. ([`3bd09ef`](https://github.com/GitoxideLabs/gitoxide/commit/3bd09ef120945a9669321ea856db4079a5dab930)) | ||
| 147 | - Merge branch 'maintenance' ([`4454c9d`](https://github.com/GitoxideLabs/gitoxide/commit/4454c9d66c32a1de75a66639016c73edbda3bd34)) | ||
| 148 | - Upgrade MSRV to v1.70 ([`aea89c3`](https://github.com/GitoxideLabs/gitoxide/commit/aea89c3ad52f1a800abb620e9a4701bdf904ff7d)) | ||
| 149 | </details> | ||
| 150 | |||
| 8 | ## 0.0.0 (2023-08-17) | 151 | ## 0.0.0 (2023-08-17) |
| 9 | 152 | ||
| 10 | An empty crate without any content to reserve the name for the gitoxide project. | 153 | An empty crate without any content to reserve the name for the gitoxide project. |
| @@ -32,9 +175,9 @@ An empty crate without any content to reserve the name for the gitoxide project. · 21 unmodified lines | |||
| 32 | 175 | ||
| 33 | <csr-read-only-do-not-edit/> | 176 | <csr-read-only-do-not-edit/> |
| 34 | 177 | ||
| 35 | - 21 commits contributed to the release over the course of 504 calendar days. | 178 | - 22 commits contributed to the release. |
| 36 | - 4 commits were understood as [conventional](https://www.conventionalcommits.org). | 179 | - 4 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 37 | - 1 unique issue was worked on: [#691](https://github.com/Byron/gitoxide/issues/691) | 180 | - 1 unique issue was worked on: [#691](https://github.com/GitoxideLabs/gitoxide/issues/691) |
| 38 | 181 | ||
| 39 | ### Commit Details | 182 | ### Commit Details |
| 40 | 183 | ||
| @@ -42,28 +185,29 @@ An empty crate without any content to reserve the name for the gitoxide project. · 1 unmodified line | |||
| 42 | 185 | ||
| 43 | <details><summary>view details</summary> | 186 | <details><summary>view details</summary> |
| 44 | 187 | ||
| 45 | * **[#691](https://github.com/Byron/gitoxide/issues/691)** | 188 | * **[#691](https://github.com/GitoxideLabs/gitoxide/issues/691)** |
| 46 | - Set `rust-version` to 1.64 ([`55066ce`](https://github.com/Byron/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb)) | 189 | - Set `rust-version` to 1.64 ([`55066ce`](https://github.com/GitoxideLabs/gitoxide/commit/55066ce5fd71209abb5d84da2998b903504584bb)) |
| 47 | * **Uncategorized** | 190 | * **Uncategorized** |
| 48 | - Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/Byron/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f)) | 191 | - Release gix-tix v0.0.0, gix-note v0.0.0, gix-lfs v0.0.0, gix-fetchhead v0.0.0, gix-sequencer v0.0.0, gix-rebase v0.0.0 ([`0199927`](https://github.com/GitoxideLabs/gitoxide/commit/019992765d3cfc2627cf57e82771c006726c8fbc)) |
| 49 | - Update license field following SPDX 2.1 license expression standard ([`9064ea3`](https://github.com/Byron/gitoxide/commit/9064ea31fae4dc59a56bdd3a06c0ddc990ee689e)) | 192 | - Don't call crate 'WIP' in manifest anymore. ([`229bd48`](https://github.com/GitoxideLabs/gitoxide/commit/229bd4899213f749a7cc124aa2b82a1368fba40f)) |
| 50 | - Merge branch 'corpus' ([`aa16c8c`](https://github.com/Byron/gitoxide/commit/aa16c8ce91452a3e3063cf1cf0240b6014c4743f)) | 193 | - Update license field following SPDX 2.1 license expression standard ([`9064ea3`](https://github.com/GitoxideLabs/gitoxide/commit/9064ea31fae4dc59a56bdd3a06c0ddc990ee689e)) |
| 51 | - Change MSRV to 1.65 ([`4f635fc`](https://github.com/Byron/gitoxide/commit/4f635fc4429350bae2582d25de86429969d28f30)) | 194 | - Merge branch 'corpus' ([`aa16c8c`](https://github.com/GitoxideLabs/gitoxide/commit/aa16c8ce91452a3e3063cf1cf0240b6014c4743f)) |
| 52 | - Merge branch 'main' into auto-clippy ([`3ef5c90`](https://github.com/Byron/gitoxide/commit/3ef5c90aebce23385815f1df674c1d28d58b4b0d)) | 195 | - Change MSRV to 1.65 ([`4f635fc`](https://github.com/GitoxideLabs/gitoxide/commit/4f635fc4429350bae2582d25de86429969d28f30)) |
| 53 | - Merge branch 'blinxen/main' ([`9375cd7`](https://github.com/Byron/gitoxide/commit/9375cd75b01aa22a0e2eed6305fe45fabfd6c1ac)) | 196 | - Merge branch 'main' into auto-clippy ([`3ef5c90`](https://github.com/GitoxideLabs/gitoxide/commit/3ef5c90aebce23385815f1df674c1d28d58b4b0d)) |
| 54 | - Include license files in all crates ([`facaaf6`](https://github.com/Byron/gitoxide/commit/facaaf633f01c857dcf2572c6dbe0a92b7105c1c)) | 197 | - Merge branch 'blinxen/main' ([`9375cd7`](https://github.com/GitoxideLabs/gitoxide/commit/9375cd75b01aa22a0e2eed6305fe45fabfd6c1ac)) |
| 55 | - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/Byron/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1)) | 198 | - Include license files in all crates ([`facaaf6`](https://github.com/GitoxideLabs/gitoxide/commit/facaaf633f01c857dcf2572c6dbe0a92b7105c1c)) |
| 56 | - Adjust to renaming of `git-note` to `gix-note` ([`9cc9ae2`](https://github.com/Byron/gitoxide/commit/9cc9ae28102bca9c5eac4c7699be7029e7f7697f)) | 199 | - Merge branch 'rename-crates' into inform-about-gix-rename ([`c9275b9`](https://github.com/GitoxideLabs/gitoxide/commit/c9275b99ea43949306d93775d9d78c98fb86cfb1)) |
| 57 | - Rename `git-note` to `gix-note` ([`794b485`](https://github.com/Byron/gitoxide/commit/794b485e40728aba3a364455210a2035e7ba9fbd)) | 200 | - Adjust to renaming of `git-note` to `gix-note` ([`9cc9ae2`](https://github.com/GitoxideLabs/gitoxide/commit/9cc9ae28102bca9c5eac4c7699be7029e7f7697f)) |
| 58 | - Merge branch 'main' into http-config ([`bcd9654`](https://github.com/Byron/gitoxide/commit/bcd9654e56169799eb706646da6ee1f4ef2021a9)) | 201 | - Rename `git-note` to `gix-note` ([`794b485`](https://github.com/GitoxideLabs/gitoxide/commit/794b485e40728aba3a364455210a2035e7ba9fbd)) |
| 59 | - Merge branch 'version2021' ([`0e4462d`](https://github.com/Byron/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8)) | 202 | - Merge branch 'main' into http-config ([`bcd9654`](https://github.com/GitoxideLabs/gitoxide/commit/bcd9654e56169799eb706646da6ee1f4ef2021a9)) |
| 60 | - Upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/Byron/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed)) | 203 | - Merge branch 'version2021' ([`0e4462d`](https://github.com/GitoxideLabs/gitoxide/commit/0e4462df7a5166fe85c23a779462cdca8ee013e8)) |
| 61 | - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/Byron/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b)) | 204 | - Upgrade edition to 2021 in most crates. ([`3d8fa8f`](https://github.com/GitoxideLabs/gitoxide/commit/3d8fa8fef9800b1576beab8a5bc39b821157a5ed)) |
| 62 | - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/Byron/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78)) | 205 | - Merge branch 'main' into index-from-tree ([`bc64b96`](https://github.com/GitoxideLabs/gitoxide/commit/bc64b96a2ec781c72d1d4daad38aa7fb8b74f99b)) |
| 63 | - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/Byron/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce)) | 206 | - Merge branch 'main' into remote-ls-refs ([`e2ee3de`](https://github.com/GitoxideLabs/gitoxide/commit/e2ee3ded97e5c449933712883535b30d151c7c78)) |
| 64 | - Uniformize deny attributes ([`f7f136d`](https://github.com/Byron/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78)) | 207 | - Merge branch 'docsrs-show-features' ([`31c2351`](https://github.com/GitoxideLabs/gitoxide/commit/31c235140cad212d16a56195763fbddd971d87ce)) |
| 65 | - Remove default link to cargo doc everywhere ([`533e887`](https://github.com/Byron/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8)) | 208 | - Uniformize deny attributes ([`f7f136d`](https://github.com/GitoxideLabs/gitoxide/commit/f7f136dbe4f86e7dee1d54835c420ec07c96cd78)) |
| 66 | - Release git-note v0.0.0 ([`2dcb3f3`](https://github.com/Byron/gitoxide/commit/2dcb3f3e030bc87914c7c58ce2916d81649aa0d9)) | 209 | - Remove default link to cargo doc everywhere ([`533e887`](https://github.com/GitoxideLabs/gitoxide/commit/533e887e80c5f7ede8392884562e1c5ba56fb9a8)) |
| 67 | - Empty crate for git-note ([`2fb8b46`](https://github.com/Byron/gitoxide/commit/2fb8b46abd3905bdf654977e77ec2f36f09e754f)) | 210 | - Release git-note v0.0.0 ([`2dcb3f3`](https://github.com/GitoxideLabs/gitoxide/commit/2dcb3f3e030bc87914c7c58ce2916d81649aa0d9)) |
| 211 | - Empty crate for git-note ([`2fb8b46`](https://github.com/GitoxideLabs/gitoxide/commit/2fb8b46abd3905bdf654977e77ec2f36f09e754f)) | ||
| 68 | </details> | 212 | </details> |
| 69 | 213 | ||
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-note" | 4 | name = "gix-note" |
| 5 | version = "0.1.0" | 5 | version = "0.1.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dealing with git notes" | 8 | description = "A crate of the gitoxide project dealing with git notes" |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-pack" | 4 | name = "gix-pack" |
| 5 | version = "0.74.1" | 5 | version = "0.74.2" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] | 7 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] |
| 8 | license = "MIT OR Apache-2.0" | 8 | license = "MIT OR Apache-2.0" |
| @@ -56,7 +56,7 @@ gix-hashtable = { version = "^0.16.0", path = "../gix-hashtable", optional = tru · 47 unmodified lines | |||
| 56 | 56 | ||
| 57 | # for streaming of packs (input, output) | 57 | # for streaming of packs (input, output) |
| 58 | gix-traverse = { version = "^0.61.0", path = "../gix-traverse", optional = true } | 58 | gix-traverse = { version = "^0.61.0", path = "../gix-traverse", optional = true } |
| 59 | gix-diff = { version = "^0.67.0", path = "../gix-diff", default-features = false, optional = true } | 59 | gix-diff = { version = "^0.67.1", path = "../gix-diff", default-features = false, optional = true } |
| 60 | 60 | ||
| 61 | memmap2 = "0.9.11" | 61 | memmap2 = "0.9.11" |
| 62 | smallvec = "1.15.1" | 62 | smallvec = "1.15.1" |
| @@ -5,13 +5,34 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.22.2 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 1 commit contributed to the release over the course of 1 calendar day. | ||
| 15 | - 1 day passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | </details> | ||
| 28 | |||
| 8 | ## 0.22.1 (2026-08-23) | 29 | ## 0.22.1 (2026-08-23) |
| 9 | 30 | ||
| 10 | ### Commit Statistics | 31 | ### Commit Statistics |
| 11 | 32 | ||
| 12 | <csr-read-only-do-not-edit/> | 33 | <csr-read-only-do-not-edit/> |
| 13 | 34 | ||
| 14 | - 2 commits contributed to the release over the course of 30 calendar days. | 35 | - 3 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 31 days passed between releases. | 36 | - 31 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 37 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 38 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 44 | <details><summary>view details</summary> |
| 24 | 45 | ||
| 25 | * **Uncategorized** | 46 | * **Uncategorized** |
| 47 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 26 | - Use fundamental-type comparisons throughout tests ([`47536a5`](https://github.com/GitoxideLabs/gitoxide/commit/47536a5c2b22da3a9f4892c8af5e460c2d5bda0a)) | 48 | - Use fundamental-type comparisons throughout tests ([`47536a5`](https://github.com/GitoxideLabs/gitoxide/commit/47536a5c2b22da3a9f4892c8af5e460c2d5bda0a)) |
| 27 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | 49 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) |
| 28 | </details> | 50 | </details> |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-packetline" | 4 | name = "gix-packetline" |
| 5 | version = "0.22.1" | 5 | version = "0.22.2" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project implementing the pkt-line serialization format" | 8 | description = "A crate of the gitoxide project implementing the pkt-line serialization format" |
| @@ -5,13 +5,37 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.65.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 4 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Use fundamental-type comparisons throughout tests ([`47536a5`](https://github.com/GitoxideLabs/gitoxide/commit/47536a5c2b22da3a9f4892c8af5e460c2d5bda0a)) | ||
| 29 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 30 | </details> | ||
| 31 | |||
| 8 | ## 0.65.0 (2026-08-22) | 32 | ## 0.65.0 (2026-08-22) |
| 9 | 33 | ||
| 10 | ### Commit Statistics | 34 | ### Commit Statistics |
| 11 | 35 | ||
| 12 | <csr-read-only-do-not-edit/> | 36 | <csr-read-only-do-not-edit/> |
| 13 | 37 | ||
| 14 | - 5 commits contributed to the release over the course of 30 calendar days. | 38 | - 6 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 39 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 40 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 41 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 47 | <details><summary>view details</summary> |
| 24 | 48 | ||
| 25 | * **Uncategorized** | 49 | * **Uncategorized** |
| 50 | - Release gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`0c541c7`](https://github.com/GitoxideLabs/gitoxide/commit/0c541c7308aee674110dc4dbd2ccda6dceaf41e6)) | ||
| 26 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | 51 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) |
| 27 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 52 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 28 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | 53 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-protocol" | 4 | name = "gix-protocol" |
| 5 | version = "0.65.0" | 5 | version = "0.65.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project for implementing git protocols" | 8 | description = "A crate of the gitoxide project for implementing git protocols" |
| @@ -75,20 +75,20 @@ required-features = ["async-client"] · 66 unmodified lines | |||
| 75 | gix-features = { version = "^0.49.1", path = "../gix-features", features = [ | 75 | gix-features = { version = "^0.49.1", path = "../gix-features", features = [ |
| 76 | "progress", | 76 | "progress", |
| 77 | ] } | 77 | ] } |
| 78 | gix-transport = { version = "^0.59.0", path = "../gix-transport" } | 78 | gix-transport = { version = "^0.59.1", path = "../gix-transport" } |
| 79 | gix-hash = { version = "^0.26.2", path = "../gix-hash" } | 79 | gix-hash = { version = "^0.26.2", path = "../gix-hash" } |
| 80 | gix-shallow = { version = "^0.13.0", path = "../gix-shallow" } | 80 | gix-shallow = { version = "^0.13.0", path = "../gix-shallow" } |
| 81 | gix-date = { version = "^0.16.0", path = "../gix-date" } | 81 | gix-date = { version = "^0.16.0", path = "../gix-date" } |
| 82 | gix-utils = { version = "^0.3.6", path = "../gix-utils" } | 82 | gix-utils = { version = "^0.3.6", path = "../gix-utils" } |
| 83 | gix-ref = { version = "^0.67.1", path = "../gix-ref" } | 83 | gix-ref = { version = "^0.67.1", path = "../gix-ref" } |
| 84 | gix-macros = { version = "^0.1.5", path = "../gix-macros" } | 84 | gix-macros = { version = "^0.1.6", path = "../gix-macros" } |
| 85 | 85 | ||
| 86 | gix-trace = { version = "^0.1.21", path = "../gix-trace", optional = true } | 86 | gix-trace = { version = "^0.1.21", path = "../gix-trace", optional = true } |
| 87 | gix-negotiate = { version = "^0.35.0", path = "../gix-negotiate", optional = true } | 87 | gix-negotiate = { version = "^0.35.1", path = "../gix-negotiate", optional = true } |
| 88 | gix-object = { version = "^0.64.1", path = "../gix-object", optional = true } | 88 | gix-object = { version = "^0.64.1", path = "../gix-object", optional = true } |
| 89 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk", optional = true } | 89 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk", optional = true } |
| 90 | gix-credentials = { version = "^0.40.0", path = "../gix-credentials", optional = true } | 90 | gix-credentials = { version = "^0.40.0", path = "../gix-credentials", optional = true } |
| 91 | gix-refspec = { version = "^0.45.0", path = "../gix-refspec", optional = true } | 91 | gix-refspec = { version = "^0.45.1", path = "../gix-refspec", optional = true } |
| 92 | gix-lock = { version = "^24.0.0", path = "../gix-lock", optional = true } | 92 | gix-lock = { version = "^24.0.0", path = "../gix-lock", optional = true } |
| 93 | 93 | ||
| 94 | thiserror = "2.0.18" | 94 | thiserror = "2.0.18" |
| @@ -110,7 +110,7 @@ document-features = { version = "0.2.0", optional = true } · 15 unmodified lines | |||
| 110 | 110 | ||
| 111 | [dev-dependencies] | 111 | [dev-dependencies] |
| 112 | async-std = { version = "1.9.0", features = ["attributes"] } | 112 | async-std = { version = "1.9.0", features = ["attributes"] } |
| 113 | gix-packetline = { path = "../gix-packetline", version = "^0.22.1" } | 113 | gix-packetline = { path = "../gix-packetline", version = "^0.22.2" } |
| 114 | gix-protocol = { path = "../gix-protocol", features = ["sha1"] } | 114 | gix-protocol = { path = "../gix-protocol", features = ["sha1"] } |
| 115 | 115 | ||
| 116 | [package.metadata.docs.rs] | 116 | [package.metadata.docs.rs] |
| @@ -5,13 +5,139 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.45.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.45.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### Bug Fixes | ||
| 34 | |||
| 35 | - <csr-id-42f742d85ac6aa721c0f460f4e05d59bcd5893fa/> match Git refspec pattern and exclusion rules. | ||
| 36 | <!-- agent --> | ||
| 37 | Git refspec patterns are deliberately narrower than general globs. The | ||
| 38 | upstream parser accepts exactly one asterisk, requires a patterned fetch | ||
| 39 | source to have a patterned destination, and only permits the one-sided | ||
| 40 | pattern form for pushes and negative refspecs. | ||
| 41 | |||
| 42 | Apply those rules uniformly instead of skipping validation for one-sided | ||
| 43 | specifications. This rejects general wildcard expressions and one-sided | ||
| 44 | fetch patterns while retaining valid one-sided push patterns. | ||
| 45 | |||
| 46 | Accept partial negative refspecs as Git does, and compare their source | ||
| 47 | literally during matching instead of expanding it through the positive | ||
| 48 | partial-ref lookup rules. Thus a negative source such as ^main parses but | ||
| 49 | does not implicitly match refs/heads/main. | ||
| 50 | |||
| 51 | Remove the now-unreachable wildmatch matcher, its complex-glob tests, and | ||
| 52 | the direct gix-glob dependency. Update the instruction documentation, | ||
| 53 | including the fact that deletion destinations cannot be patterns, and fix | ||
| 54 | the negative-object-hash error text. | ||
| 55 | |||
| 56 | Extend and regenerate the Git baselines for one-sided fetch and push | ||
| 57 | patterns, invalid wildcard syntax, and partial negative refspecs. Remove | ||
| 58 | the baseline exceptions so every recorded result must now agree with Git. | ||
| 59 | - <csr-id-910197fad6fcd752cae808ce1414512b21c78ae8/> split refspecs on the last colon, like Git does | ||
| 60 | `parse_refspec()` in `refspec.c` locates the separator with | ||
| 61 | `rhs = strrchr(lhs, ':')`, so everything before the final colon is the source. | ||
| 62 | That matters for push, where the source is a revision rather than a ref name and | ||
| 63 | may itself contain a colon - `:/message` searches commit messages, `<rev>:<path>` | ||
| 64 | addresses a blob or tree. Both are accepted by Git today. | ||
| 65 | |||
| 66 | Splitting on the first colon instead made `:/message:refs/heads/x` parse as the | ||
| 67 | destination `message:refs/heads/x`, which is not a valid reference name, so the | ||
| 68 | spec was rejected outright. | ||
| 69 | |||
| 70 | Fetch is unaffected, as its source is a ref name that cannot contain a colon. | ||
| 71 | Baseline entries cover both operations; both archives are regenerated because the | ||
| 72 | archive identity derives from the fixture script. | ||
| 73 | |||
| 74 | ### Changed (BREAKING) | ||
| 75 | |||
| 76 | - <csr-id-05a126f9b4bdde603a1c5a9b5553c8d1dbb5d484/> take any non-glob push source, like Git does. | ||
| 77 | Git means the source of a push refspec to be an extended SHA-1, but says of it | ||
| 78 | that "there is no existing way to validate this" and takes whatever is written: | ||
| 79 | |||
| 80 | * - otherwise, it must be an extended SHA-1, but | ||
| 81 | * there is no existing way to validate this. | ||
| 82 | [...] | ||
| 83 | else | ||
| 84 | ; /* anything goes, for now */ | ||
| 85 | |||
| 86 | This crate checked it against a ref name, falling back to parsing it as a | ||
| 87 | rev-spec, which `gix-revision` can do without a repository. That is stricter than | ||
| 88 | Git for seven of the shapes now in the baseline, among them `::a`, `~:x`, | ||
| 89 | `a^{bogus}:x` and `a@{:x`. | ||
| 90 | |||
| 91 | The check is dropped for that one side only. A missing destination still requires | ||
| 92 | the source to be a ref name, an empty destination is still refused, the | ||
| 93 | destination itself is still validated, and both glob rules still hold, all as | ||
| 94 | before. Negative refspecs never reach it, as a destination rejects them first. | ||
| 95 | |||
| 96 | Ten entries are added to the parse baseline, which records `git`'s own verdict; | ||
| 97 | the last two of them are destinations Git refuses, to pin that side. Both | ||
| 98 | archives are regenerated, since `just unit-tests` runs this crate under `sha256` | ||
| 99 | as well. | ||
| 100 | |||
| 101 | With the rev-spec fallback gone, so is the only use of `gix-revision` here, the | ||
| 102 | `Error::RevSpec` variant that carried its failures, and the last use of | ||
| 103 | `gix-error`. Both dependencies are dropped. | ||
| 104 | |||
| 105 | ### Commit Statistics | ||
| 106 | |||
| 107 | <csr-read-only-do-not-edit/> | ||
| 108 | |||
| 109 | - 11 commits contributed to the release over the course of 30 calendar days. | ||
| 110 | - 30 days passed between releases. | ||
| 111 | - 3 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 112 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 113 | |||
| 114 | ### Commit Details | ||
| 115 | |||
| 116 | <csr-read-only-do-not-edit/> | ||
| 117 | |||
| 118 | <details><summary>view details</summary> | ||
| 119 | |||
| 120 | * **Uncategorized** | ||
| 121 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 122 | - Merge pull request #2894 from ameyypawar/refspec-push-source ([`ef41caa`](https://github.com/GitoxideLabs/gitoxide/commit/ef41caafddba2fc97b0106f9cfd7fa3e5567f670)) | ||
| 123 | - Match Git refspec pattern and exclusion rules. ([`42f742d`](https://github.com/GitoxideLabs/gitoxide/commit/42f742d85ac6aa721c0f460f4e05d59bcd5893fa)) | ||
| 124 | - Review ([`81883b2`](https://github.com/GitoxideLabs/gitoxide/commit/81883b2ac2d356cf83ea1c4f8636858227ddad86)) | ||
| 125 | - Take any non-glob push source, like Git does. ([`05a126f`](https://github.com/GitoxideLabs/gitoxide/commit/05a126f9b4bdde603a1c5a9b5553c8d1dbb5d484)) | ||
| 126 | - Merge pull request #2888 from ameyypawar/refspec-last-colon ([`04b91a1`](https://github.com/GitoxideLabs/gitoxide/commit/04b91a1b66777e5d6e3d8ca4407960ceedec4c36)) | ||
| 127 | - Review ([`9864e70`](https://github.com/GitoxideLabs/gitoxide/commit/9864e70a54f1d95733a7be365ff92a8daaf6d1ee)) | ||
| 128 | - Split refspecs on the last colon, like Git does ([`910197f`](https://github.com/GitoxideLabs/gitoxide/commit/910197fad6fcd752cae808ce1414512b21c78ae8)) | ||
| 129 | - Merge pull request #2886 from ameyypawar/validate-at-refname ([`12240ab`](https://github.com/GitoxideLabs/gitoxide/commit/12240ab1637a2f3feaef4ce48fd1f6d324705437)) | ||
| 130 | - Review ([`1384133`](https://github.com/GitoxideLabs/gitoxide/commit/1384133eaa3815f03f7ba18bcc81a1e2bdb934f5)) | ||
| 131 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 132 | </details> | ||
| 133 | |||
| 8 | ## 0.44.0 (2026-07-23) | 134 | ## 0.44.0 (2026-07-23) |
| 9 | 135 | ||
| 10 | ### Commit Statistics | 136 | ### Commit Statistics |
| 11 | 137 | ||
| 12 | <csr-read-only-do-not-edit/> | 138 | <csr-read-only-do-not-edit/> |
| 13 | 139 | ||
| 14 | - 7 commits contributed to the release. | 140 | - 8 commits contributed to the release. |
| 15 | - 31 days passed between releases. | 141 | - 31 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 142 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 143 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +149,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 149 | <details><summary>view details</summary> |
| 24 | 150 | ||
| 25 | * **Uncategorized** | 151 | * **Uncategorized** |
| 152 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 26 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | 153 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) |
| 27 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 154 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 28 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) | 155 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-refspec" | 4 | name = "gix-refspec" |
| 5 | version = "0.45.0" | 5 | version = "0.45.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project for parsing and representing refspecs" | 8 | description = "A crate of the gitoxide project for parsing and representing refspecs" |
| @@ -5,13 +5,126 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.49.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.49.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### Bug Fixes | ||
| 34 | |||
| 35 | - <csr-id-67467157bc5acc41546990aac2782e07701762f5/> resolve the empty pattern in `<rev>^{/}` like Git, instead of skipping it. | ||
| 36 | The parser dropped the `find()` delegate call whenever the pattern in | ||
| 37 | `<rev>^{/<pattern>}` was empty, turning the whole navigation step into a | ||
| 38 | no-op on the grounds that an empty pattern matches everything. | ||
| 39 | |||
| 40 | That reasoning only holds for a commit anchor and a non-negated pattern. | ||
| 41 | Git routes `<rev>^{/...}` through `GET_OID_COMMITTISH` and searches from | ||
| 42 | the peeled commit even when the pattern is empty - object-name.c notes | ||
| 43 | "$commit^{/}. Some regex implementation may reject empty regex, but this | ||
| 44 | is safe". Thus `git rev-parse 'b-tag^{/}'` yields the commit the | ||
| 45 | annotated tag points at, while `gix` returned the tag object itself. A | ||
| 46 | negated empty pattern matches no commit at all, so Git fails `HEAD^{/!-}` | ||
| 47 | while `gix` silently succeeded with HEAD. | ||
| 48 | |||
| 49 | Now the parser always forwards the pattern to `Navigate::find()`, whose | ||
| 50 | implementation in `gix` already handles the empty case correctly on both | ||
| 51 | the `revparse-regex` and the substring fallback paths: it peels the | ||
| 52 | anchor to a commit first and treats an empty pattern as match-all, which | ||
| 53 | fails naturally when negated. The delegate behind `gix revision explain` | ||
| 54 | makes no assumption about patterns and needs no change. | ||
| 55 | |||
| 56 | The `make_rev_spec_parse_repos` fixture gains baselines for `@^{/}`, | ||
| 57 | `@^{/!-}` and `b-tag^{/}`; its archive needs regeneration. | ||
| 58 | |||
| 59 | ### Other | ||
| 60 | |||
| 61 | - <csr-id-548cb6895c04c074db830d77b5dd5fb1552fc3c0/> delegate zero ancestor traversal | ||
| 62 | <!-- agent --> | ||
| 63 | `~0` is a no-op only after resolving its anchor to a commit. The parser cannot | ||
| 64 | know whether the anchor is an annotated tag, and suppressing `NthAncestor(0)` | ||
| 65 | prevents higher-level delegates from peeling it as Git does. Always forward zero | ||
| 66 | so each `Navigate` implementation can apply its own object semantics. | ||
| 67 | |||
| 68 | ### Changed (BREAKING) | ||
| 69 | |||
| 70 | - <csr-id-8640d5b86526c03e029c7d591084d96ec5d0fb10/> accept `:3:<path>` for the 'theirs' index stage, like Git does. | ||
| 71 | The parser had arms for stages 0, 1 and 2 and let everything else fall through | ||
| 72 | to the catch-all, so `:3:file` was looked up as a path literally named | ||
| 73 | `3:file` at stage 0. `gitrevisions(7)` documents a stage number of 0 to 3, and | ||
| 74 | Git resolves `:3:file` to the blob from the branch being merged. | ||
| 75 | |||
| 76 | The trait's own docs said stages range from 0 to 2 and labelled them base, ours | ||
| 77 | and theirs. That is off by one: 0 is unconflicted, and 1, 2 and 3 are the common | ||
| 78 | ancestor, the target branch and the branch being merged. The docs came first, in | ||
| 79 | cee04e126, and the arms written twenty minutes later in ea22d3e7c matched them. | ||
| 80 | |||
| 81 | This is marked breaking because a `Navigate` implementation written against the | ||
| 82 | old documented range can now be handed a stage it does not expect. The one in | ||
| 83 | `gix` already maps 3 to `Stage::Theirs`, but the one behind `gix revision | ||
| 84 | explain` did not, which the next commit addresses. | ||
| 85 | |||
| 86 | ### Commit Statistics | ||
| 87 | |||
| 88 | <csr-read-only-do-not-edit/> | ||
| 89 | |||
| 90 | - 17 commits contributed to the release over the course of 30 calendar days. | ||
| 91 | - 30 days passed between releases. | ||
| 92 | - 3 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 93 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 94 | |||
| 95 | ### Commit Details | ||
| 96 | |||
| 97 | <csr-read-only-do-not-edit/> | ||
| 98 | |||
| 99 | <details><summary>view details</summary> | ||
| 100 | |||
| 101 | * **Uncategorized** | ||
| 102 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 103 | - Merge pull request #2911 from codeAnqiang-ma/fix/empty-regex-revspec ([`05f905e`](https://github.com/GitoxideLabs/gitoxide/commit/05f905ee3647ddf5bf24c580fc64ba4e369d2c7d)) | ||
| 104 | - Merge pull request #2910 from codeAnqiang-ma/fix/relative-date-month-rollover ([`566fea1`](https://github.com/GitoxideLabs/gitoxide/commit/566fea12b59005673dd4beede48df12d8884264e)) | ||
| 105 | - Review ([`a8b1be5`](https://github.com/GitoxideLabs/gitoxide/commit/a8b1be50101d024977f3037c289951c1ec39a4d6)) | ||
| 106 | - Resolve the empty pattern in `<rev>^{/}` like Git, instead of skipping it. ([`6746715`](https://github.com/GitoxideLabs/gitoxide/commit/67467157bc5acc41546990aac2782e07701762f5)) | ||
| 107 | - Adapt to changes in `gix-date` ([`613ff86`](https://github.com/GitoxideLabs/gitoxide/commit/613ff86cf77922aaab1f7885e014792458b81606)) | ||
| 108 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | ||
| 109 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) | ||
| 110 | - Merge pull request #2897 from cruessler/run-more-tests-with-sha-256 ([`59f2d61`](https://github.com/GitoxideLabs/gitoxide/commit/59f2d610088abf6b5648ea34559827b539aac020)) | ||
| 111 | - Review ([`98c29f6`](https://github.com/GitoxideLabs/gitoxide/commit/98c29f6bff71c8a43be1d7063c05325fac000175)) | ||
| 112 | - Use `GIX_TEST_FIXTURE_HASH` for more tests ([`bbea2c4`](https://github.com/GitoxideLabs/gitoxide/commit/bbea2c4f231063937c997491b8cd23d8e3e2c4c9)) | ||
| 113 | - Merge pull request #2892 from ameyypawar/rev-conformity ([`453c17c`](https://github.com/GitoxideLabs/gitoxide/commit/453c17c343c83b569ad817e6459fadf406926a42)) | ||
| 114 | - Review ([`5a4e97b`](https://github.com/GitoxideLabs/gitoxide/commit/5a4e97bf27752091ec48cf1128645d20ea135b9d)) | ||
| 115 | - Accept `:3:<path>` for the 'theirs' index stage, like Git does. ([`8640d5b`](https://github.com/GitoxideLabs/gitoxide/commit/8640d5b86526c03e029c7d591084d96ec5d0fb10)) | ||
| 116 | - Merge pull request #2871 from shuvamk/fix/revspec-peel-tag-before-traversal ([`d14aefb`](https://github.com/GitoxideLabs/gitoxide/commit/d14aefbf23e9d5c510a6dea3a6f646cb9964731e)) | ||
| 117 | - Delegate zero ancestor traversal ([`548cb68`](https://github.com/GitoxideLabs/gitoxide/commit/548cb6895c04c074db830d77b5dd5fb1552fc3c0)) | ||
| 118 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | ||
| 119 | </details> | ||
| 120 | |||
| 8 | ## 0.48.0 (2026-07-23) | 121 | ## 0.48.0 (2026-07-23) |
| 9 | 122 | ||
| 10 | ### Commit Statistics | 123 | ### Commit Statistics |
| 11 | 124 | ||
| 12 | <csr-read-only-do-not-edit/> | 125 | <csr-read-only-do-not-edit/> |
| 13 | 126 | ||
| 14 | - 7 commits contributed to the release. | 127 | - 8 commits contributed to the release. |
| 15 | - 31 days passed between releases. | 128 | - 31 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 129 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 130 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +136,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 136 | <details><summary>view details</summary> |
| 24 | 137 | ||
| 25 | * **Uncategorized** | 138 | * **Uncategorized** |
| 139 | - Release gix-actor v0.41.2, gix-features v0.49.0, gix-hash v0.26.0, gix-hashtable v0.16.0, gix-object v0.63.0, gix-glob v0.27.0, gix-attributes v0.34.0, gix-packetline v0.22.0, gix-filter v0.33.0, gix-fs v0.22.0, gix-chunk v0.7.3, gix-commitgraph v0.38.0, gix-revwalk v0.34.0, gix-traverse v0.60.0, gix-worktree-stream v0.35.0, gix-archive v0.35.0, gix-bitmap v0.3.3, gix-tempfile v24.0.0, gix-lock v24.0.0, gix-index v0.54.0, gix-pathspec v0.19.0, gix-ignore v0.22.0, gix-worktree v0.55.0, gix-imara-diff v0.2.4, gix-diff v0.66.0, gix-blame v0.16.0, gix-ref v0.66.0, gix-config v0.59.0, gix-discover v0.54.0, gix-dir v0.28.0, gix-mailmap v0.33.2, gix-revision v0.48.0, gix-merge v0.19.0, gix-negotiate v0.34.0, gix-zlib v0.1.0, gix-pack v0.73.0, gix-odb v0.83.0, gix-refspec v0.44.0, gix-shallow v0.13.0, gix-transport v0.58.0, gix-protocol v0.64.0, gix-status v0.33.0, gix-submodule v0.33.0, gix-worktree-state v0.33.0, gix v0.86.0, gix-fsck v0.24.0, gitoxide-core v0.60.0, gix-tix v0.1.0, gitoxide v0.56.0, safety bump 40 crates ([`842bc44`](https://github.com/GitoxideLabs/gitoxide/commit/842bc447e3aeacf5d9d36f7f8a01068eda4b7999)) | ||
| 26 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) | 140 | - Update changelogs prior to release ([`cb6ec7d`](https://github.com/GitoxideLabs/gitoxide/commit/cb6ec7dce283943d811b1600b577f586d7a13e1f)) |
| 27 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) | 141 | - Release gix-trace v0.1.21, gix-validate v0.11.3, gix-path v0.12.3, gix-utils v0.3.5, gix-config-value v0.19.0, gix-prompt v0.16.0, gix-sec v0.14.2, gix-url v0.37.0, gix-credentials v0.39.0, safety bump 18 crates ([`f0ec710`](https://github.com/GitoxideLabs/gitoxide/commit/f0ec71076aa1cef3181b77946ee556a89c651b8e)) |
| 28 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) | 142 | - Merge pull request #2722 from GitoxideLabs/reasons ([`c16b5a1`](https://github.com/GitoxideLabs/gitoxide/commit/c16b5a1892704b7c72a253bdd74a6848dd61032a)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-revision" | 4 | name = "gix-revision" |
| 5 | version = "0.49.0" | 5 | version = "0.49.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dealing with finding names for revisions and parsing specifications" | 8 | description = "A crate of the gitoxide project dealing with finding names for revisions and parsing specifications" |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-status" | 4 | name = "gix-status" |
| 5 | version = "0.34.0" | 5 | version = "0.34.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dealing with 'git status'-like functionality" | 8 | description = "A crate of the gitoxide project dealing with 'git status'-like functionality" |
| @@ -35,8 +35,8 @@ gix-filter = { version = "^0.34.0", path = "../gix-filter" } · 26 unmodified lines | |||
| 35 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } | 35 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } |
| 36 | gix-pathspec = { version = "^0.20.0", path = "../gix-pathspec" } | 36 | gix-pathspec = { version = "^0.20.0", path = "../gix-pathspec" } |
| 37 | 37 | ||
| 38 | gix-dir = { version = "^0.29.0", path = "../gix-dir", optional = true } | 38 | gix-dir = { version = "^0.29.1", path = "../gix-dir", optional = true } |
| 39 | gix-diff = { version = "^0.67.0", path = "../gix-diff", default-features = false, features = ["blob"], optional = true } | 39 | gix-diff = { version = "^0.67.1", path = "../gix-diff", default-features = false, features = ["blob"], optional = true } |
| 40 | 40 | ||
| 41 | thiserror = "2.0.18" | 41 | thiserror = "2.0.18" |
| 42 | filetime = "0.2.29" | 42 | filetime = "0.2.29" |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-tix" | 4 | name = "gix-tix" |
| 5 | version = "0.2.0" | 5 | version = "0.3.0" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A tool like `tig`, but minimal, fast and efficient" | 8 | description = "A tool like `tig`, but minimal, fast and efficient" |
| @@ -27,7 +27,7 @@ anyhow = "1.0.98" · 18 unmodified lines | |||
| 27 | clap = { version = "4.5.42", features = ["derive"] } | 27 | clap = { version = "4.5.42", features = ["derive"] } |
| 28 | crossterm = { version = "0.29.0", features = ["osc52"] } | 28 | crossterm = { version = "0.29.0", features = ["osc52"] } |
| 29 | directories = "6.0.0" | 29 | directories = "6.0.0" |
| 30 | gix = { version = "^0.87.0", path = "../gix", default-features = false, features = ["blob-diff", "mailmap", "merge", "notes", "parallel", "revision", "command", "status"] } | 30 | gix = { version = "^0.87.1", path = "../gix", default-features = false, features = ["blob-diff", "mailmap", "merge", "notes", "parallel", "revision", "command", "status"] } |
| 31 | notify = "8.2.0" | 31 | notify = "8.2.0" |
| 32 | ratatui = { version = "0.30.2", default-features = false, features = ["crossterm", "unstable-rendered-line-info"] } | 32 | ratatui = { version = "0.30.2", default-features = false, features = ["crossterm", "unstable-rendered-line-info"] } |
| 33 | terminal-colorsaurus = "1.0.3" | 33 | terminal-colorsaurus = "1.0.3" |
| @@ -5,6 +5,74 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.59.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 31 | ## 0.59.0 (2026-08-22) | ||
| 32 | |||
| 33 | ### New Features | ||
| 34 | |||
| 35 | - <csr-id-b1174b69b60b478be24f0b81787e95ac08564e7e/> support cloning a single revision | ||
| 36 | <!-- agent --> | ||
| 37 | A full object ID passed through with_ref_name() produced an object-ID refspec | ||
| 38 | mapping and panicked while clone assumed every mapping had a name. Branch and | ||
| 39 | tag checkout also retained ordinary clone tracking semantics instead of offering | ||
| 40 | a single-revision mode. | ||
| 41 | |||
| 42 | Add PrepareFetch::with_revision() and gix clone --revision for full refs, HEAD, | ||
| 43 | and full object IDs. Revision clones use a one source-only implicit refspec, | ||
| 44 | detach HEAD to the fetched commit, create no ordinary refs, persist no fetch | ||
| 45 | refspec, and disable tag following. Existing with_ref_name() and --ref behavior | ||
| 46 | stays unchanged. | ||
| 47 | |||
| 48 | This follows Git commit 337855629f59 (builtin/clone: teach git-clone(1) the | ||
| 49 | --revision= option) and its t/t5621-clone-revision.sh behavior. | ||
| 50 | |||
| 51 | ### Commit Statistics | ||
| 52 | |||
| 53 | <csr-read-only-do-not-edit/> | ||
| 54 | |||
| 55 | - 6 commits contributed to the release over the course of 19 calendar days. | ||
| 56 | - 19 days passed between releases. | ||
| 57 | - 1 commit was understood as [conventional](https://www.conventionalcommits.org). | ||
| 58 | - 1 unique issue was worked on: [#1930](https://github.com/GitoxideLabs/gitoxide/issues/1930) | ||
| 59 | |||
| 60 | ### Commit Details | ||
| 61 | |||
| 62 | <csr-read-only-do-not-edit/> | ||
| 63 | |||
| 64 | <details><summary>view details</summary> | ||
| 65 | |||
| 66 | * **[#1930](https://github.com/GitoxideLabs/gitoxide/issues/1930)** | ||
| 67 | - Support cloning a single revision ([`b1174b6`](https://github.com/GitoxideLabs/gitoxide/commit/b1174b69b60b478be24f0b81787e95ac08564e7e)) | ||
| 68 | * **Uncategorized** | ||
| 69 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | ||
| 70 | - Merge pull request #2899 from ameyypawar/url-remote-helper ([`dbd162d`](https://github.com/GitoxideLabs/gitoxide/commit/dbd162d38833106425004a325a3a7852596c16f4)) | ||
| 71 | - Adapt to changes in `gix-url` ([`2648dc1`](https://github.com/GitoxideLabs/gitoxide/commit/2648dc18a600aa3f1bdd062a8e0feadc68affdca)) | ||
| 72 | - Merge pull request #2824 from GitoxideLabs/fetch-revision ([`7a34c17`](https://github.com/GitoxideLabs/gitoxide/commit/7a34c175866222ba6ebeb108d2594369a97d5526)) | ||
| 73 | - Merge pull request #2867 from GitoxideLabs/fix-url-authority-parsing ([`cc3ee80`](https://github.com/GitoxideLabs/gitoxide/commit/cc3ee8060ad7a32ee8d2eb9139854be7f7561b70)) | ||
| 74 | </details> | ||
| 75 | |||
| 8 | ## 0.58.1 (2026-08-03) | 76 | ## 0.58.1 (2026-08-03) |
| 9 | 77 | ||
| 10 | ### Bug Fixes | 78 | ### Bug Fixes |
| @@ -31,7 +99,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 20 unmodified lines | |||
| 31 | 99 | ||
| 32 | <csr-read-only-do-not-edit/> | 100 | <csr-read-only-do-not-edit/> |
| 33 | 101 | ||
| 34 | - 3 commits contributed to the release over the course of 11 calendar days. | 102 | - 4 commits contributed to the release over the course of 11 calendar days. |
| 35 | - 11 days passed between releases. | 103 | - 11 days passed between releases. |
| 36 | - 2 commits were understood as [conventional](https://www.conventionalcommits.org). | 104 | - 2 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 37 | - 0 issues like '(#ID)' were seen in commit messages | 105 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -43,6 +111,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 43 | <details><summary>view details</summary> | 111 | <details><summary>view details</summary> |
| 44 | 112 | ||
| 45 | * **Uncategorized** | 113 | * **Uncategorized** |
| 114 | - Release gix-path v0.12.4, gix-command v0.9.2, gix-config-value v0.19.1, gix-url v0.37.1, gix-credentials v0.39.1, gix-transport v0.58.1 ([`ab4fcb0`](https://github.com/GitoxideLabs/gitoxide/commit/ab4fcb0364ec4d01115595198f383b1ad9c29808)) | ||
| 46 | - Preserve encoded HTTP paths across redirects. ([`60850df`](https://github.com/GitoxideLabs/gitoxide/commit/60850df267f902ef6b65e8211e6d40aeb45e1970)) | 115 | - Preserve encoded HTTP paths across redirects. ([`60850df`](https://github.com/GitoxideLabs/gitoxide/commit/60850df267f902ef6b65e8211e6d40aeb45e1970)) |
| 47 | - Terminate URL authorities at query and fragment delimiters. ([`156b53d`](https://github.com/GitoxideLabs/gitoxide/commit/156b53de2b7d93087aceee623965110a19750d37)) | 116 | - Terminate URL authorities at query and fragment delimiters. ([`156b53d`](https://github.com/GitoxideLabs/gitoxide/commit/156b53de2b7d93087aceee623965110a19750d37)) |
| 48 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) | 117 | - Merge pull request #2812 from GitoxideLabs/report-july ([`ae8845a`](https://github.com/GitoxideLabs/gitoxide/commit/ae8845a47c4c87e0996a119822106cf09036340b)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-transport" | 4 | name = "gix-transport" |
| 5 | version = "0.59.0" | 5 | version = "0.59.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project dedicated to implementing the git transport layer" | 8 | description = "A crate of the gitoxide project dedicated to implementing the git transport layer" |
| @@ -96,7 +96,7 @@ gix-path = { version = "^0.12.5", path = "../gix-path" } · 87 unmodified lines | |||
| 96 | gix-features = { version = "^0.49.1", path = "../gix-features" } | 96 | gix-features = { version = "^0.49.1", path = "../gix-features" } |
| 97 | gix-url = { version = "^0.38.0", path = "../gix-url" } | 97 | gix-url = { version = "^0.38.0", path = "../gix-url" } |
| 98 | gix-sec = { version = "^0.14.2", path = "../gix-sec" } | 98 | gix-sec = { version = "^0.14.2", path = "../gix-sec" } |
| 99 | gix-packetline = { version = "^0.22.1", path = "../gix-packetline" } | 99 | gix-packetline = { version = "^0.22.2", path = "../gix-packetline" } |
| 100 | gix-credentials = { version = "^0.40.0", path = "../gix-credentials", optional = true } | 100 | gix-credentials = { version = "^0.40.0", path = "../gix-credentials", optional = true } |
| 101 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } | 101 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } |
| 102 | 102 | ||
| @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.34.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 8 | ## 0.34.0 (2026-08-22) | 31 | ## 0.34.0 (2026-08-22) |
| 9 | 32 | ||
| 10 | ### Commit Statistics | 33 | ### Commit Statistics |
| 11 | 34 | ||
| 12 | <csr-read-only-do-not-edit/> | 35 | <csr-read-only-do-not-edit/> |
| 13 | 36 | ||
| 14 | - 12 commits contributed to the release over the course of 30 calendar days. | 37 | - 13 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 38 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 39 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 40 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 46 | <details><summary>view details</summary> |
| 24 | 47 | ||
| 25 | * **Uncategorized** | 48 | * **Uncategorized** |
| 49 | - Release gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`0c541c7`](https://github.com/GitoxideLabs/gitoxide/commit/0c541c7308aee674110dc4dbd2ccda6dceaf41e6)) | ||
| 26 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | 50 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) |
| 27 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 51 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 28 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) | 52 | - Merge pull request #2905 from GitoxideLabs/various-improvements ([`f3bbfad`](https://github.com/GitoxideLabs/gitoxide/commit/f3bbfadd4b4f1d72c85c62eb3d7ae337c922f945)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-worktree-state" | 4 | name = "gix-worktree-state" |
| 5 | version = "0.34.0" | 5 | version = "0.34.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "A crate of the gitoxide project implementing setting the worktree to a particular state" | 8 | description = "A crate of the gitoxide project implementing setting the worktree to a particular state" |
| @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. · 4 unmodified lines | |||
| 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | 7 | ||
| 8 | ## 0.36.1 (2026-08-24) | ||
| 9 | |||
| 10 | ### Commit Statistics | ||
| 11 | |||
| 12 | <csr-read-only-do-not-edit/> | ||
| 13 | |||
| 14 | - 3 commits contributed to the release over the course of 1 calendar day. | ||
| 15 | - 2 days passed between releases. | ||
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | ||
| 17 | - 0 issues like '(#ID)' were seen in commit messages | ||
| 18 | |||
| 19 | ### Commit Details | ||
| 20 | |||
| 21 | <csr-read-only-do-not-edit/> | ||
| 22 | |||
| 23 | <details><summary>view details</summary> | ||
| 24 | |||
| 25 | * **Uncategorized** | ||
| 26 | - Merge pull request #2932 from GitoxideLabs/fundamental-types-comp ([`6704303`](https://github.com/GitoxideLabs/gitoxide/commit/6704303ed5ef3403b129e2b6cc4a9214432ffd03)) | ||
| 27 | - Release gix-error v0.3.1, gix-hash v0.26.2, gix-object v0.64.1, gix-ref v0.67.1, gix-packetline v0.22.1, gix-pack v0.74.1, gix-testtools v0.20.0 ([`e52fe9d`](https://github.com/GitoxideLabs/gitoxide/commit/e52fe9d03e82437a25bdfb1098e7046ec7e1b558)) | ||
| 28 | - Merge pull request #2933 from GitoxideLabs/report-august ([`b8914ff`](https://github.com/GitoxideLabs/gitoxide/commit/b8914ffda5bc8f6ea851aaf1f720140acfe96dbb)) | ||
| 29 | </details> | ||
| 30 | |||
| 8 | ## 0.36.0 (2026-08-22) | 31 | ## 0.36.0 (2026-08-22) |
| 9 | 32 | ||
| 10 | ### Commit Statistics | 33 | ### Commit Statistics |
| 11 | 34 | ||
| 12 | <csr-read-only-do-not-edit/> | 35 | <csr-read-only-do-not-edit/> |
| 13 | 36 | ||
| 14 | - 6 commits contributed to the release over the course of 30 calendar days. | 37 | - 7 commits contributed to the release over the course of 30 calendar days. |
| 15 | - 30 days passed between releases. | 38 | - 30 days passed between releases. |
| 16 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). | 39 | - 0 commits were understood as [conventional](https://www.conventionalcommits.org). |
| 17 | - 0 issues like '(#ID)' were seen in commit messages | 40 | - 0 issues like '(#ID)' were seen in commit messages |
| @@ -23,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 · 5 unmodified lines | |||
| 23 | <details><summary>view details</summary> | 46 | <details><summary>view details</summary> |
| 24 | 47 | ||
| 25 | * **Uncategorized** | 48 | * **Uncategorized** |
| 49 | - Release gix-error v0.3.0, gix-date v0.16.0, gix-actor v0.42.0, gix-validate v0.11.4, gix-path v0.12.5, gix-utils v0.3.6, gix-quote v0.8.0, gix-command v0.10.0, gix-features v0.49.1, gix-hash v0.26.1, gix-fs v0.22.1, gix-object v0.64.0, gix-glob v0.27.1, gix-attributes v0.35.0, gix-filter v0.34.0, gix-chunk v0.8.0, gix-commitgraph v0.39.0, gix-revwalk v0.35.0, gix-traverse v0.61.0, gix-worktree-stream v0.36.0, gix-archive v0.36.0, gix-bitmap v0.4.0, gix-index v0.55.0, gix-pathspec v0.20.0, gix-ignore v0.22.1, gix-worktree v0.56.0, gix-imara-diff v0.2.5, gix-diff v0.67.0, gix-blame v0.17.0, gix-ref v0.67.0, gix-config v0.60.0, gix-prompt v0.17.0, gix-url v0.38.0, gix-credentials v0.40.0, gix-discover v0.55.0, gix-dir v0.29.0, gix-mailmap v0.34.0, gix-revision v0.49.0, gix-merge v0.20.0, gix-negotiate v0.35.0, gix-note v0.1.0, gix-pack v0.74.0, gix-odb v0.84.0, gix-refspec v0.45.0, gix-transport v0.59.0, gix-protocol v0.65.0, gix-status v0.34.0, gix-submodule v0.34.0, gix-worktree-state v0.34.0, gix v0.87.0, gix-fsck v0.25.0, gitoxide-core v0.61.0, gix-tix v0.2.0, gitoxide v0.57.0 ([`d2af4ed`](https://github.com/GitoxideLabs/gitoxide/commit/d2af4ed5532ea660fbd643e48d8925cd88de5ee0)) | ||
| 26 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) | 50 | - Update manifests prior to release ([`ebe9095`](https://github.com/GitoxideLabs/gitoxide/commit/ebe9095f2888d3c12447ea5eed9d0afdb0fd5aeb)) |
| 27 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) | 51 | - Merge pull request #2901 from cruessler/switch-to-gix-odb-at-opts ([`2a4d996`](https://github.com/GitoxideLabs/gitoxide/commit/2a4d996ca53bd38a5e9889da0b180580315d905f)) |
| 28 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) | 52 | - Introduce `Store::at()` where possible ([`17fea2a`](https://github.com/GitoxideLabs/gitoxide/commit/17fea2ab8a1c23f2e8bc50b78b90feb1e361f66a)) |
| @@ -2,7 +2,7 @@ lints.workspace = true · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | [package] | 3 | [package] |
| 4 | name = "gix-worktree-stream" | 4 | name = "gix-worktree-stream" |
| 5 | version = "0.36.0" | 5 | version = "0.36.1" |
| 6 | repository = "https://github.com/GitoxideLabs/gitoxide" | 6 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | description = "generate a byte-stream from a git-tree" | 8 | description = "generate a byte-stream from a git-tree" |
| @@ -5,7 +5,7 @@ name = "gix" · 4 unmodified lines | |||
| 5 | repository = "https://github.com/GitoxideLabs/gitoxide" | 5 | repository = "https://github.com/GitoxideLabs/gitoxide" |
| 6 | description = "Interact with git repositories just like git would" | 6 | description = "Interact with git repositories just like git would" |
| 7 | license = "MIT OR Apache-2.0" | 7 | license = "MIT OR Apache-2.0" |
| 8 | version = "0.87.0" | 8 | version = "0.87.1" |
| 9 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] | 9 | authors = ["Sebastian Thiel <sebastian.thiel@icloud.com>"] |
| 10 | edition = "2024" | 10 | edition = "2024" |
| 11 | include = ["/src/**/*", "/LICENSE-*"] | 11 | include = ["/src/**/*", "/LICENSE-*"] |
| @@ -338,9 +338,9 @@ gix-lock = { version = "^24.0.0", path = "../gix-lock" } · 326 unmodified lines | |||
| 338 | gix-validate = { version = "^0.11.4", path = "../gix-validate" } | 338 | gix-validate = { version = "^0.11.4", path = "../gix-validate" } |
| 339 | gix-sec = { version = "^0.14.2", path = "../gix-sec" } | 339 | gix-sec = { version = "^0.14.2", path = "../gix-sec" } |
| 340 | gix-date = { version = "^0.16.0", path = "../gix-date" } | 340 | gix-date = { version = "^0.16.0", path = "../gix-date" } |
| 341 | gix-refspec = { version = "^0.45.0", path = "../gix-refspec" } | 341 | gix-refspec = { version = "^0.45.1", path = "../gix-refspec" } |
| 342 | gix-filter = { version = "^0.34.0", path = "../gix-filter", optional = true } | 342 | gix-filter = { version = "^0.34.0", path = "../gix-filter", optional = true } |
| 343 | gix-dir = { version = "^0.29.0", path = "../gix-dir", optional = true } | 343 | gix-dir = { version = "^0.29.1", path = "../gix-dir", optional = true } |
| 344 | 344 | ||
| 345 | gix-config = { version = "^0.60.0", path = "../gix-config" } | 345 | gix-config = { version = "^0.60.0", path = "../gix-config" } |
| 346 | gix-odb = { version = "^0.84.0", path = "../gix-odb" } | 346 | gix-odb = { version = "^0.84.0", path = "../gix-odb" } |
| @@ -349,21 +349,21 @@ gix-hash = { version = "^0.26.2", path = "../gix-hash" } · 2 unmodified lines | |||
| 349 | gix-shallow = { version = "^0.13.0", path = "../gix-shallow" } | 349 | gix-shallow = { version = "^0.13.0", path = "../gix-shallow" } |
| 350 | gix-object = { version = "^0.64.1", path = "../gix-object" } | 350 | gix-object = { version = "^0.64.1", path = "../gix-object" } |
| 351 | gix-actor = { version = "^0.42.0", path = "../gix-actor" } | 351 | gix-actor = { version = "^0.42.0", path = "../gix-actor" } |
| 352 | gix-pack = { version = "^0.74.1", path = "../gix-pack", default-features = false, features = [ | 352 | gix-pack = { version = "^0.74.2", path = "../gix-pack", default-features = false, features = [ |
| 353 | "object-cache-dynamic", | 353 | "object-cache-dynamic", |
| 354 | ] } | 354 | ] } |
| 355 | gix-revision = { version = "^0.49.0", path = "../gix-revision", default-features = false } | 355 | gix-revision = { version = "^0.49.1", path = "../gix-revision", default-features = false } |
| 356 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } | 356 | gix-revwalk = { version = "^0.35.0", path = "../gix-revwalk" } |
| 357 | gix-negotiate = { version = "^0.35.0", path = "../gix-negotiate", optional = true } | 357 | gix-negotiate = { version = "^0.35.1", path = "../gix-negotiate", optional = true } |
| 358 | 358 | ||
| 359 | gix-path = { version = "^0.12.5", path = "../gix-path" } | 359 | gix-path = { version = "^0.12.5", path = "../gix-path" } |
| 360 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } | 360 | gix-quote = { version = "^0.8.0", path = "../gix-quote" } |
| 361 | gix-url = { version = "^0.38.0", path = "../gix-url" } | 361 | gix-url = { version = "^0.38.0", path = "../gix-url" } |
| 362 | gix-traverse = { version = "^0.61.0", path = "../gix-traverse" } | 362 | gix-traverse = { version = "^0.61.0", path = "../gix-traverse" } |
| 363 | gix-diff = { version = "^0.67.0", path = "../gix-diff", default-features = false } | 363 | gix-diff = { version = "^0.67.1", path = "../gix-diff", default-features = false } |
| 364 | gix-merge = { version = "^0.20.0", path = "../gix-merge", default-features = false, optional = true } | 364 | gix-merge = { version = "^0.20.1", path = "../gix-merge", default-features = false, optional = true } |
| 365 | gix-mailmap = { version = "^0.34.0", path = "../gix-mailmap", optional = true } | 365 | gix-mailmap = { version = "^0.34.1", path = "../gix-mailmap", optional = true } |
| 366 | gix-note = { version = "^0.1.0", path = "../gix-note", optional = true } | 366 | gix-note = { version = "^0.1.1", path = "../gix-note", optional = true } |
| 367 | gix-features = { version = "^0.49.1", path = "../gix-features", features = [ | 367 | gix-features = { version = "^0.49.1", path = "../gix-features", features = [ |
| 368 | "progress", | 368 | "progress", |
| 369 | "once_cell", | 369 | "once_cell", |
| @@ -377,23 +377,23 @@ gix-index = { version = "^0.55.0", path = "../gix-index", optional = true } · 7 unmodified lines | |||
| 377 | gix-attributes = { version = "^0.35.0", path = "../gix-attributes", optional = true } | 377 | gix-attributes = { version = "^0.35.0", path = "../gix-attributes", optional = true } |
| 378 | gix-ignore = { version = "^0.22.1", path = "../gix-ignore", optional = true } | 378 | gix-ignore = { version = "^0.22.1", path = "../gix-ignore", optional = true } |
| 379 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", optional = true, default-features = false } | 379 | gix-worktree = { version = "^0.56.0", path = "../gix-worktree", optional = true, default-features = false } |
| 380 | gix-worktree-state = { version = "^0.34.0", path = "../gix-worktree-state", optional = true } | 380 | gix-worktree-state = { version = "^0.34.1", path = "../gix-worktree-state", optional = true } |
| 381 | gix-hashtable = { version = "^0.16.0", path = "../gix-hashtable" } | 381 | gix-hashtable = { version = "^0.16.0", path = "../gix-hashtable" } |
| 382 | gix-commitgraph = { version = "^0.39.0", path = "../gix-commitgraph" } | 382 | gix-commitgraph = { version = "^0.39.0", path = "../gix-commitgraph" } |
| 383 | gix-pathspec = { version = "^0.20.0", path = "../gix-pathspec", optional = true } | 383 | gix-pathspec = { version = "^0.20.0", path = "../gix-pathspec", optional = true } |
| 384 | gix-submodule = { version = "^0.34.0", path = "../gix-submodule", optional = true } | 384 | gix-submodule = { version = "^0.34.0", path = "../gix-submodule", optional = true } |
| 385 | gix-status = { version = "^0.34.0", path = "../gix-status", optional = true, features = [ | 385 | gix-status = { version = "^0.34.1", path = "../gix-status", optional = true, features = [ |
| 386 | "worktree-rewrites", | 386 | "worktree-rewrites", |
| 387 | ] } | 387 | ] } |
| 388 | gix-command = { version = "^0.10.0", path = "../gix-command", optional = true } | 388 | gix-command = { version = "^0.10.0", path = "../gix-command", optional = true } |
| 389 | 389 | ||
| 390 | gix-worktree-stream = { version = "^0.36.0", path = "../gix-worktree-stream", optional = true } | 390 | gix-worktree-stream = { version = "^0.36.1", path = "../gix-worktree-stream", optional = true } |
| 391 | gix-archive = { version = "^0.36.0", path = "../gix-archive", default-features = false, optional = true } | 391 | gix-archive = { version = "^0.36.1", path = "../gix-archive", default-features = false, optional = true } |
| 392 | gix-blame = { version = "^0.17.0", path = "../gix-blame", optional = true } | 392 | gix-blame = { version = "^0.17.1", path = "../gix-blame", optional = true } |
| 393 | 393 | ||
| 394 | # For communication with remotes | 394 | # For communication with remotes |
| 395 | gix-protocol = { version = "^0.65.0", path = "../gix-protocol" } | 395 | gix-protocol = { version = "^0.65.1", path = "../gix-protocol" } |
| 396 | gix-transport = { version = "^0.59.0", path = "../gix-transport", optional = true } | 396 | gix-transport = { version = "^0.59.1", path = "../gix-transport", optional = true } |
| 397 | 397 | ||
| 398 | # Just to get the progress-tree feature | 398 | # Just to get the progress-tree feature |
| 399 | prodash = { version = "31.0.0", optional = true, features = ["progress-tree"] } | 399 | prodash = { version = "31.0.0", optional = true, features = ["progress-tree"] } |
| @@ -17,5 +17,5 @@ path = "src/main.rs" · 16 unmodified lines | |||
| 17 | [dependencies] | 17 | [dependencies] |
| 18 | anyhow = "1.0.102" | 18 | anyhow = "1.0.102" |
| 19 | clap = { version = "4.5.60", features = ["derive"] } | 19 | clap = { version = "4.5.60", features = ["derive"] } |
| 20 | gix = { version = "^0.87.0", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "parallel", "revision", "sha1"] } | 20 | gix = { version = "^0.87.1", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "parallel", "revision", "sha1"] } |
| 21 | regex = { version = "1.12.3", default-features = false, features = ["std"] } | 21 | regex = { version = "1.12.3", default-features = false, features = ["std"] } |