gitgrip 0.17.1

Multi-repo workflow tool - manage multiple git repositories as one
Documentation
[package]
name = "gitgrip"
version = "0.17.1"
edition = "2021"
rust-version = "1.80"
description = "Multi-repo workflow tool - manage multiple git repositories as one"
license = "MIT"
authors = ["Layne Penney"]
repository = "https://github.com/laynepenney/gitgrip"
homepage = "https://github.com/laynepenney/gitgrip"
documentation = "https://docs.rs/gitgrip"
readme = "README.md"
keywords = ["git", "monorepo", "workflow", "multi-repo", "cli"]
categories = ["development-tools", "command-line-utilities"]

[[bin]]
name = "gr"
path = "src/main.rs"

[[bin]]
name = "gitgrip"
path = "src/main.rs"

[lib]
name = "gitgrip"
path = "src/lib.rs"

[features]
default = ["telemetry"]
# Use gitoxide (gix) instead of git2 for git operations (experimental)
gitoxide = ["gix"]
# Enable integration tests that require platform authentication
# Run with: cargo test --features integration-tests -- --ignored
integration-tests = []
# Telemetry and tracing support
telemetry = []
# Strip debug/trace logs at compile time for production
release-logs = ["tracing/release_max_level_info"]
# Maximum performance - disable all tracing overhead
max-perf = ["tracing/max_level_off"]

[dependencies]
# Async runtime
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "time"] }
async-trait = "0.1"

# CLI
clap = { version = "4", features = ["derive", "env"] }
colored = "2"
indicatif = "0.17"
dialoguer = "0.11"

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml = "0.9"

# HTTP client
reqwest = { version = "0.12", features = ["json"] }

# Git operations - git2 is the default (stable, mature)
git2 = "0.19"
# gitoxide (gix) - pure Rust, async-capable (optional, experimental)
gix = { version = "0.68", default-features = false, features = ["blocking-network-client", "blocking-http-transport-reqwest-rust-tls"], optional = true }

# GitHub API — use webpki (Mozilla) roots instead of native TLS roots to avoid
# macOS Security framework failures in CI / sandboxed environments.
octocrab = { version = "0.41", features = ["rustls-webpki-tokio"] }

# Error handling
anyhow = "1"
thiserror = "1"

# Date/time
chrono = { version = "0.4", features = ["serde"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# XML parsing (git-repo manifest support)
quick-xml = { version = "0.37", features = ["serialize"] }

# Misc
once_cell = "1"
regex = "1"
url = "2"
urlencoding = "2"
base64 = "0.22"
futures = "0.3"
which = "7"
clap_complete = "4.5.65"

[dev-dependencies]
tempfile = "3"
tokio-test = "0.4"
wiremock = "0.6"
assert_cmd = "2"
predicates = "3"
criterion = { version = "0.5", features = ["html_reports"] }

[[bench]]
name = "benchmarks"
harness = false

[profile.release]
lto = true
codegen-units = 1
strip = true