#git #gix #version-control #status #index

gix-status

A crate of the gitoxide project dealing with 'git status'-like functionality

17 breaking releases

0.18.0 Apr 4, 2025
0.17.0 Jan 18, 2025
0.16.0 Dec 22, 2024
0.15.0 Nov 24, 2024
0.2.0 Oct 12, 2023

#1728 in Development tools

Download history 4733/week @ 2024-12-23 4752/week @ 2024-12-30 6459/week @ 2025-01-06 5801/week @ 2025-01-13 6879/week @ 2025-01-20 5859/week @ 2025-01-27 6450/week @ 2025-02-03 11165/week @ 2025-02-10 10251/week @ 2025-02-17 14175/week @ 2025-02-24 22660/week @ 2025-03-03 19366/week @ 2025-03-10 11387/week @ 2025-03-17 11480/week @ 2025-03-24 188722/week @ 2025-03-31 221436/week @ 2025-04-07

434,913 downloads per month
Used in 48 crates (2 directly)

MIT/Apache

1MB
18K 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

~17–28MB
~494K SLoC