25 breaking releases

new 0.26.0 Feb 10, 2026
0.24.0 Dec 31, 2025
0.22.0 Nov 22, 2025
0.20.0 Jul 15, 2025
0.2.0 Oct 12, 2023

#31 in Machine learning

Download history 249784/week @ 2025-10-21 265894/week @ 2025-10-28 306104/week @ 2025-11-04 267591/week @ 2025-11-11 252609/week @ 2025-11-18 178507/week @ 2025-11-25 179889/week @ 2025-12-02 157353/week @ 2025-12-09 124149/week @ 2025-12-16 80072/week @ 2025-12-23 93038/week @ 2025-12-30 169943/week @ 2026-01-06 203511/week @ 2026-01-13 277763/week @ 2026-01-20 378389/week @ 2026-01-27 499734/week @ 2026-02-03

1,391,565 downloads per month
Used in 145 crates (2 directly)

MIT/Apache

1MB
19K SLoC

This crate includes the various diffs git can do between different representations of the repository state, like comparisons between…

  • index and working tree
  • tree and index

…while also being able to check if the working tree is dirty, quickly, by instructing the operation to stop once the first change was found.

Tree-Index Status

This status is not actually implemented here as it's not implemented directly. Instead, one creates an Index from a tree and then diffs two indices with gix_diff::index(index_from_tree, usually_dot_git_index). This adds about 15% to the runtime and comes at the cost of another index in memory. Once there are generators implementing depth-first tree iteration should become trivial, but for now it's very hard if one wants to return referenced state of the iterator (which is not possible).

Difference to gix-diff

Technically, status is just another form of diff between different kind of sides, i.e. an index and a working tree. This is the difference to gix-diff, which compares only similar items.

Feature Flags

Dependencies

~14–22MB
~482K SLoC