Gitoxide is a pure Rust implementation of Git that provides both a library and command-line tools for building applications that need Git functionality with a focus on correctness and performance.
The project solves the problem of integrating Git operations into Rust applications by offering an idiomatic, memory-safe alternative to existing Git libraries. It is structured as a collection of modular crates, with the `gix` crate serving as the primary entry point for application developers, while lower-level plumbing crates like `gix-config` handle specific Git operations. The implementation prioritizes safety guarantees that come from Rust's type system while maintaining performance comparable to native Git implementations.
Developers should choose this tool if they are building Rust applications that require Git integration and want to avoid C dependencies or unsafe code. The project suits applications where correctness and long-term maintainability matter more than immediate feature completeness. The library is particularly useful for developers migrating from `git2`, as the documentation provides mappings between equivalent method calls. The crate status document explicitly lists both implemented and planned features, allowing prospective users to verify whether specific Git operations they need are supported. Some core functionality like push, merge, hooks, and rebase remain unimplemented, so projects requiring these features should evaluate alternatives. Several crates have reached production grade, with `gix-lock` at Stability Tier 1 and `gix-tempfile` at Stability Tier 2, while others are stabilization candidates with complete documentation.
The project maintains a detailed crate status document that tracks implementation progress across its modular components. Development follows semantic versioning and a published stability guide for all crates. The command-line tools `gix` and `ein` are explicitly marked as potentially unstable and unsuitable for script dependencies, indicating a clear separation between experimental tooling and production library code.