From 91d504c8561666b61de1c826c347b1f9e0fb4ad5 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Sat, 6 Dec 2025 22:42:03 -0500 Subject: [PATCH 01/19] Switched from interfacing to git2 to gitoxide for basic repostiory --- src/bin/main.rs | 4 ++-- src/lib/commit.rs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bin/main.rs b/src/bin/main.rs index d84204c..5c79e33 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -5,7 +5,6 @@ use anyhow::{Context, Result}; use clap::{CommandFactory, Parser, Subcommand}; use cocogitto::command::commit::CommitOptions; use conventional_commit_parser::parse; -use git2::Repository; use koji::answers::{get_extracted_answers, ExtractedAnswers}; use koji::commit::{commit, generate_commit_msg, write_commit_msg}; use koji::config::{Config, ConfigArgs}; @@ -115,6 +114,7 @@ enum SubCmds { #[cfg(not(tarpaulin_include))] fn main() -> Result<()> { // Get CLI args + let Args { command, autocomplete, @@ -145,7 +145,7 @@ fn main() -> Result<()> { }; // Find repo - let repo = Repository::discover(¤t_dir).context("could not find git repository")?; + let repo = gix::discover(¤t_dir).context("could not find git repository")?; // Get existing commit message (passed in via `-m`) let commit_editmsg = repo.path().join("COMMIT_EDITMSG"); diff --git a/src/lib/commit.rs b/src/lib/commit.rs index 191cac4..f4d0faa 100644 --- a/src/lib/commit.rs +++ b/src/lib/commit.rs @@ -3,7 +3,7 @@ use std::{fs::File, io::Write, path::PathBuf}; use anyhow::Result; use cocogitto::command::commit::CommitOptions; use cocogitto::CocoGitto; -use git2::Repository; +use gix::Repository; /// Generates the commit message pub fn generate_commit_msg( From 41d70f0491b14f6913d1370f93f7aea19bbd7f8a Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Sat, 6 Dec 2025 22:42:30 -0500 Subject: [PATCH 02/19] Switched to using gitoxide and converted logic to work within that interface --- src/lib/questions.rs | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/lib/questions.rs b/src/lib/questions.rs index 4d36426..6afe12d 100644 --- a/src/lib/questions.rs +++ b/src/lib/questions.rs @@ -1,7 +1,7 @@ use crate::config::{CommitType, Config}; use anyhow::{Context, Result}; use conventional_commit_parser::parse_summary; -use git2::Repository; +use gix::bstr::ByteSlice; use indexmap::IndexMap; use inquire::ui::{Attributes, Color, RenderConfig, StyleSheet}; use inquire::{ @@ -91,25 +91,38 @@ struct ScopeAutocompleter { impl ScopeAutocompleter { fn get_existing_scopes(&self) -> Result> { - let repo = - Repository::discover(&self.config.workdir).context("could not find git repository")?; + let repo = gix::discover(&self.config.workdir).context("could not find git repository")?; - let mut walk = repo.revwalk()?; + // Get HEAD commit as starting point + let head_id = repo.head_id().context("could not get HEAD")?; - walk.push_head()?; - walk.set_sorting(git2::Sort::TIME)?; + // Create a revision walk starting from HEAD + let walk = + repo.rev_walk([head_id.detach()]) + .sorting(gix::revision::walk::Sorting::ByCommitTime( + gix::traverse::commit::simple::CommitTimeOrder::NewestFirst, + )); let mut scopes: Vec = Vec::new(); - for id in walk { - if let Some(summary) = repo.find_commit(id?)?.summary() { - // We want to throw away any error from `parse_summary` since an - // invalid commit message should just be ignored - if let Ok(parsed) = parse_summary(summary) { - if let Some(scope) = parsed.scope { - if !scopes.contains(&scope) { - scopes.push(scope); - } + // Iterate through commits + for info in walk.all()? { + let info = info?; + + // Get the commit object + let commit = repo.find_commit(info.id)?; + + // Get the commit message + let message = commit.message()?; + + // Get the summary + let summary = message.summary(); + + // Parse the summary - ignore errors for invalid commit messages + if let Ok(parsed) = parse_summary(summary.to_str()?) { + if let Some(scope) = parsed.scope { + if !scopes.contains(&scope) { + scopes.push(scope); } } } From dd148709ac30f7c04b58ec2b2cfaa2c855b8cbd2 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Sat, 6 Dec 2025 22:42:40 -0500 Subject: [PATCH 03/19] Switched the integrations tests to make use of gitoxide --- tests/integration.rs | 104 +++++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 43 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index 92cdb26..eac8bd6 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,4 +1,5 @@ -use git2::{Commit, IndexAddOption, Oid, Repository, RepositoryInitOptions}; +use gix::bstr::ByteSlice; +use gix::Repository; #[cfg(not(target_os = "windows"))] use rexpect::{ process::wait, @@ -17,31 +18,51 @@ fn setup_config_home() -> Result> { fn setup_test_dir() -> Result<(PathBuf, TempDir, Repository), Box> { let bin_path = assert_cmd::cargo::cargo_bin!("koji").to_path_buf(); let temp_dir = tempfile::tempdir()?; - let mut init_options = RepositoryInitOptions::new(); - init_options.initial_head("main"); - let repo = Repository::init_opts(&temp_dir, &init_options)?; - let mut gitconfig = repo.config()?; - gitconfig.set_str("user.name", "test")?; - gitconfig.set_str("user.email", "test@example.org")?; + // Use git command to initialize repo with proper setup + Command::new("git") + .args(&["init", "-b", "main"]) + .current_dir(temp_dir.path()) + .output()?; + + Command::new("git") + .args(&["config", "user.name", "test"]) + .current_dir(temp_dir.path()) + .output()?; + + Command::new("git") + .args(&["config", "user.email", "test@example.org"]) + .current_dir(temp_dir.path()) + .output()?; + + let repo = gix::open(temp_dir.path())?; Ok((bin_path, temp_dir, repo)) } -fn get_last_commit(repo: &Repository) -> Result, git2::Error> { - let mut walk = repo.revwalk()?; - walk.push_head()?; - let oid = walk.next().expect("cannot get commit in revwalk")?; - - repo.find_commit(oid) +fn get_last_commit(repo: &Repository) -> Result, Box> { + let head_id = repo.head_id()?; + let commit = repo.find_commit(head_id)?; + Ok(commit) } -fn do_initial_commit(repo: &Repository, message: &'static str) -> Result { - let signature = repo.signature()?; - let oid = repo.index()?.write_tree()?; - let tree = repo.find_tree(oid)?; +fn do_initial_commit( + temp_dir: &std::path::Path, + message: &'static str, +) -> Result<(), Box> { + Command::new("git") + .args(&["commit", "-m", message]) + .current_dir(temp_dir) + .output()?; + Ok(()) +} - repo.commit(Some("HEAD"), &signature, &signature, message, &tree, &[]) +fn git_add(temp_dir: &std::path::Path, pattern: &str) -> Result<(), Box> { + Command::new("git") + .args(&["add", pattern]) + .current_dir(temp_dir) + .output()?; + Ok(()) } trait ExpectPromps { @@ -96,15 +117,12 @@ fn test_everything_correct() -> Result<(), Box> { let config_temp_dir = setup_config_home()?; fs::write(temp_dir.path().join("README.md"), "foo")?; - repo.index()? - .add_all(["."].iter(), IndexAddOption::default(), None)?; - do_initial_commit(&repo, "docs(readme): initial draft")?; + git_add(temp_dir.path(), ".")?; + do_initial_commit(temp_dir.path(), "docs(readme): initial draft")?; fs::write(temp_dir.path().join("config.json"), "bar")?; // TODO properly test "-a" - repo.index()? - .add_all(["."].iter(), IndexAddOption::default(), None)?; - repo.index()?.write()?; + git_add(temp_dir.path(), ".")?; let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") @@ -149,12 +167,13 @@ fn test_everything_correct() -> Result<(), Box> { } let commit = get_last_commit(&repo)?; + let message = commit.message()?; assert_eq!( - commit.summary(), + message.summary().to_str().ok(), Some("feat(config)!: refactor config pairs") ); assert_eq!( - commit.body(), + message.body.as_ref().and_then(|b| b.to_str().ok()), Some("Removed and added a config pair each\nNecessary for future compatibility.\n\ncloses #1\nBREAKING CHANGE: Something can't be configured anymore") ); @@ -166,13 +185,11 @@ fn test_everything_correct() -> Result<(), Box> { #[test] #[cfg(not(target_os = "windows"))] fn test_hook_correct() -> Result<(), Box> { - let (bin_path, temp_dir, repo) = setup_test_dir()?; + let (bin_path, temp_dir, _repo) = setup_test_dir()?; let config_temp_dir = setup_config_home()?; fs::write(temp_dir.path().join("config.json"), "abc")?; - repo.index()? - .add_all(["*"].iter(), IndexAddOption::default(), None)?; - repo.index()?.write()?; + git_add(temp_dir.path(), "*")?; fs::remove_file(temp_dir.path().join(".git").join("COMMIT_EDITMSG")).unwrap_or(()); let mut cmd = Command::new(bin_path); @@ -226,13 +243,11 @@ fn test_hook_correct() -> Result<(), Box> { #[test] #[cfg(not(target_os = "windows"))] fn test_stdout_correct() -> Result<(), Box> { - let (bin_path, temp_dir, repo) = setup_test_dir()?; + let (bin_path, temp_dir, _repo) = setup_test_dir()?; let config_temp_dir = setup_config_home()?; fs::write(temp_dir.path().join("config.json"), "abc")?; - repo.index()? - .add_all(["*"].iter(), IndexAddOption::default(), None)?; - repo.index()?.write()?; + git_add(temp_dir.path(), "*")?; fs::remove_file(temp_dir.path().join(".git").join("COMMIT_EDITMSG")).unwrap_or(()); let mut cmd = Command::new(bin_path); @@ -293,9 +308,7 @@ fn test_empty_breaking_text_correct() -> Result<(), Box> { let config_temp_dir = setup_config_home()?; fs::write(temp_dir.path().join("Cargo.toml"), "bar")?; - repo.index()? - .add_all(["."].iter(), IndexAddOption::default(), None)?; - repo.index()?.write()?; + git_add(temp_dir.path(), ".")?; let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") @@ -337,8 +350,15 @@ fn test_empty_breaking_text_correct() -> Result<(), Box> { } let commit = get_last_commit(&repo)?; - assert_eq!(commit.summary(), Some("docs(cargo)!: rename project")); - assert_eq!(commit.body(), Some("Renamed the project to a new name.")); + let message = commit.message()?; + assert_eq!( + message.summary().to_str().ok(), + Some("docs(cargo)!: rename project") + ); + assert_eq!( + message.body.as_ref().and_then(|b| b.to_str().ok()), + Some("Renamed the project to a new name.") + ); temp_dir.close()?; config_temp_dir.close()?; @@ -483,7 +503,7 @@ fn test_completion_scripts_success() -> Result<(), Box> { #[test] #[cfg(not(target_os = "windows"))] fn test_xdg_config() -> Result<(), Box> { - let (bin_path, temp_dir, repo) = setup_test_dir()?; + let (bin_path, temp_dir, _repo) = setup_test_dir()?; let config_temp_dir = setup_config_home()?; let xdg_cfg_home = tempfile::tempdir()?; @@ -494,9 +514,7 @@ fn test_xdg_config() -> Result<(), Box> { )?; fs::write(temp_dir.path().join("config.json"), "bar")?; - repo.index()? - .add_all(["."].iter(), IndexAddOption::default(), None)?; - repo.index()?.write()?; + git_add(temp_dir.path(), ".")?; let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") From 7c488ddf95ab7ca6871b596c9671d24441c351a2 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Sat, 6 Dec 2025 22:42:47 -0500 Subject: [PATCH 04/19] Added gix dependency --- Cargo.lock | 1462 +++++++++++++++++++++++++++++++++++++++++++++++++--- Cargo.toml | 5 +- 2 files changed, 1398 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4015c3f..7c6f9b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,6 +11,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -76,12 +82,24 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + [[package]] name = "arraydeque" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "assert_cmd" version = "2.1.1" @@ -149,6 +167,24 @@ version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" + +[[package]] +name = "bytesize" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" + [[package]] name = "cc" version = "1.2.48" @@ -209,6 +245,15 @@ dependencies = [ "phf_codegen", ] +[[package]] +name = "ci_info" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24f638c70e8c5753795cc9a8c07c44da91554a09e4cf11a7326e8161b0a3c45e" +dependencies = [ + "envmnt", +] + [[package]] name = "clap" version = "4.5.53" @@ -279,6 +324,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +[[package]] +name = "clru" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" + [[package]] name = "cocogitto" version = "6.5.0" @@ -293,7 +344,7 @@ dependencies = [ "edit", "git2", "globset", - "indexmap", + "indexmap 2.12.1", "itertools", "log", "maplit", @@ -427,6 +478,24 @@ dependencies = [ "libc", ] +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -495,6 +564,20 @@ dependencies = [ "typenum", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "derive_more" version = "2.0.1" @@ -588,6 +671,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "dyn-clone" version = "1.0.20" @@ -628,6 +717,16 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "envmnt" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2d328fc287c61314c4a61af7cfdcbd7e678e39778488c7cb13ec133ce0f4059" +dependencies = [ + "fsio", + "indexmap 1.9.3", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -655,12 +754,34 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "faster-hex" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7223ae2d2f179b803433d9c830478527e92b8117eab39460edae7f1614d9fb73" +dependencies = [ + "heapless", + "serde", +] + [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "filetime" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.60.2", +] + [[package]] name = "find-msvc-tools" version = "0.1.5" @@ -676,12 +797,24 @@ dependencies = [ "num-traits", ] +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "foldhash" version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -691,6 +824,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fsio" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1fd087255f739f4f1aeea69f11b72f8080e9c2e7645cd06955dad4a178a49e3" + [[package]] name = "fuzzy-matcher" version = "0.3.7" @@ -710,6 +849,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "getopts" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" +dependencies = [ + "unicode-width", +] + [[package]] name = "getrandom" version = "0.2.16" @@ -727,25 +875,904 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasip2", + "cfg-if", + "libc", + "r-efi", + "wasip2", +] + +[[package]] +name = "git2" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +dependencies = [ + "bitflags", + "libc", + "libgit2-sys", + "log", + "url", +] + +[[package]] +name = "gix" +version = "0.75.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60beff35667fb0ac935c4c45941868d9cf5025e4b85c58deb3c5a65113e22ce4" +dependencies = [ + "gix-actor", + "gix-archive", + "gix-attributes", + "gix-blame", + "gix-command", + "gix-commitgraph", + "gix-config", + "gix-credentials", + "gix-date", + "gix-diff", + "gix-dir", + "gix-discover", + "gix-features", + "gix-filter", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-hashtable", + "gix-ignore", + "gix-index", + "gix-lock", + "gix-mailmap", + "gix-negotiate", + "gix-object", + "gix-odb", + "gix-pack", + "gix-path", + "gix-pathspec", + "gix-prompt", + "gix-protocol", + "gix-ref", + "gix-refspec", + "gix-revision", + "gix-revwalk", + "gix-sec", + "gix-shallow", + "gix-status", + "gix-submodule", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-url", + "gix-utils", + "gix-validate", + "gix-worktree", + "gix-worktree-state", + "gix-worktree-stream", + "parking_lot", + "regex", + "signal-hook", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-actor" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "694f6c16eb88b16b00b1d811e4e4bda6f79e9eb467a1b04fd5b848da677baa81" +dependencies = [ + "bstr", + "gix-date", + "gix-utils", + "itoa", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-archive" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1573842ddcd6debcca7c19158ba473dfb5c096a280d3275f6050795528edd348" +dependencies = [ + "bstr", + "gix-date", + "gix-object", + "gix-worktree-stream", + "jiff", + "thiserror", +] + +[[package]] +name = "gix-attributes" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6591add69314fc43db078076a8da6f07957c65abb0b21c3e1b6a3cf50aa18d" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-quote", + "gix-trace", + "kstring", + "smallvec", + "thiserror", + "unicode-bom", +] + +[[package]] +name = "gix-bitmap" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e150161b8a75b5860521cb876b506879a3376d3adc857ec7a9d35e7c6a5e531" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-blame" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d7c62ee6ebdfe8a21d23609d7e73e45f13a0ec9308aec7d7303640d7bf80fbc" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-diff", + "gix-hash", + "gix-object", + "gix-revwalk", + "gix-trace", + "gix-traverse", + "gix-worktree", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-chunk" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c356b3825677cb6ff579551bb8311a81821e184453cbd105e2fc5311b288eeb" +dependencies = [ + "thiserror", +] + +[[package]] +name = "gix-command" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "095c8367c9dc4872a7706fbc39c7f34271b88b541120a4365ff0e36366f66e62" +dependencies = [ + "bstr", + "gix-path", + "gix-quote", + "gix-trace", + "shell-words", +] + +[[package]] +name = "gix-commitgraph" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826994ff6c01f1ff00d6a1844d7506717810a91ffed143da71e3bf39369751ef" +dependencies = [ + "bstr", + "gix-chunk", + "gix-hash", + "memmap2", + "thiserror", +] + +[[package]] +name = "gix-config" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9419284839421488b5ab9b9b88386bdc1e159a986c08e17ffa3e9a5cd2b139f5" +dependencies = [ + "bstr", + "gix-config-value", + "gix-features", + "gix-glob", + "gix-path", + "gix-ref", + "gix-sec", + "memchr", + "smallvec", + "thiserror", + "unicode-bom", + "winnow", +] + +[[package]] +name = "gix-config-value" +version = "0.15.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c489abb061c74b0c3ad790e24a606ef968cebab48ec673d6a891ece7d5aef64" +dependencies = [ + "bitflags", + "bstr", + "gix-path", + "libc", + "thiserror", +] + +[[package]] +name = "gix-credentials" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5576b03b6396d2df102c98a4bd639797f1922dd06599c92830dfc68fcff287" +dependencies = [ + "bstr", + "gix-command", + "gix-config-value", + "gix-date", + "gix-path", + "gix-prompt", + "gix-sec", + "gix-trace", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-date" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f94626a5bc591a57025361a3a890092469e47c7667e59fc143439cd6eaf47fe" +dependencies = [ + "bstr", + "itoa", + "jiff", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-diff" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfc7735ca267da78c37e916e9b32d67b0b0e3fc9401378920e9469b5d497dccf" +dependencies = [ + "bstr", + "gix-attributes", + "gix-command", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "gix-tempfile", + "gix-trace", + "gix-traverse", + "gix-worktree", + "imara-diff", + "thiserror", +] + +[[package]] +name = "gix-dir" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb9a55642e31c81d235e6ab2a7f00343c0f79e70973245a8a1e1d16c498e3e86" +dependencies = [ + "bstr", + "gix-discover", + "gix-fs", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "gix-trace", + "gix-utils", + "gix-worktree", + "thiserror", +] + +[[package]] +name = "gix-discover" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809f8dba9fbd7a054894ec222815742b96def1ca08e18c38b1dbc1f737dd213d" +dependencies = [ + "bstr", + "dunce", + "gix-fs", + "gix-hash", + "gix-path", + "gix-ref", + "gix-sec", + "thiserror", +] + +[[package]] +name = "gix-features" +version = "0.44.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfa64593d1586135102307fb57fb3a9d3868b6b1f45a4da1352cce5070f8916a" +dependencies = [ + "bytes", + "bytesize", + "crc32fast", + "crossbeam-channel", + "gix-path", + "gix-trace", + "gix-utils", + "libc", + "libz-rs-sys", + "once_cell", + "parking_lot", + "prodash", + "thiserror", + "walkdir", +] + +[[package]] +name = "gix-filter" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e137e7df1ae40fe2b49dcb2845c6bf7ac04cd53a320d72e761c598a6fd452ed" +dependencies = [ + "bstr", + "encoding_rs", + "gix-attributes", + "gix-command", + "gix-hash", + "gix-object", + "gix-packetline", + "gix-path", + "gix-quote", + "gix-trace", + "gix-utils", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-fs" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f1ecd896258cdc5ccd94d18386d17906b8de265ad2ecf68e3bea6b007f6a28f" +dependencies = [ + "bstr", + "fastrand", + "gix-features", + "gix-path", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-glob" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74254992150b0a88fdb3ad47635ab649512dff2cbbefca7916bb459894fc9d56" +dependencies = [ + "bitflags", + "bstr", + "gix-features", + "gix-path", +] + +[[package]] +name = "gix-hash" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "826036a9bee95945b0be1e2394c64cd4289916c34a639818f8fd5153906985c1" +dependencies = [ + "faster-hex", + "gix-features", + "sha1-checked", + "thiserror", +] + +[[package]] +name = "gix-hashtable" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a27d4a3ea9640da504a2657fef3419c517fd71f1767ad8935298bcc805edd195" +dependencies = [ + "gix-hash", + "hashbrown 0.16.1", + "parking_lot", +] + +[[package]] +name = "gix-ignore" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93b6a9679a1488123b7f2929684bacfd9cd2a24f286b52203b8752cbb8d7fc49" +dependencies = [ + "bstr", + "gix-glob", + "gix-path", + "gix-trace", + "unicode-bom", +] + +[[package]] +name = "gix-index" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab6410318b98750883eb3e35eb999abfb155b407eb0580726d4d868b60cde04" +dependencies = [ + "bitflags", + "bstr", + "filetime", + "fnv", + "gix-bitmap", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-traverse", + "gix-utils", + "gix-validate", + "hashbrown 0.16.1", + "itoa", + "libc", + "memmap2", + "rustix 1.1.2", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-lock" +version = "19.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "729d7857429a66023bc0c29d60fa21d0d6ae8862f33c1937ba89e0f74dd5c67f" +dependencies = [ + "gix-tempfile", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-mailmap" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a97041c66c8b6c2f34cf6b8585a36e28a07401a611a69d8a5d2cee0eea2aa72" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "thiserror", +] + +[[package]] +name = "gix-negotiate" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7ecfa02c9bddd371ec2cf938ee207fe242616386578f2bfc09d1f8f81d25f9" +dependencies = [ + "bitflags", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-object" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84743d1091c501a56f00d7f4c595cb30f20fcef6503b32ac0a1ff3817efd7b5d" +dependencies = [ + "bstr", + "gix-actor", + "gix-date", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-path", + "gix-utils", + "gix-validate", + "itoa", + "smallvec", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-odb" +version = "0.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f81b480252f3a4d55f87e6e358c4c6f7615f98b1742e1e70118c57282a92e82" +dependencies = [ + "arc-swap", + "gix-date", + "gix-features", + "gix-fs", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-pack", + "gix-path", + "gix-quote", + "parking_lot", + "tempfile", + "thiserror", +] + +[[package]] +name = "gix-pack" +version = "0.62.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e868463538731a0fd99f3950637957413bbfbe69143520c0b5c1e163303577" +dependencies = [ + "clru", + "gix-chunk", + "gix-features", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-path", + "memmap2", + "smallvec", + "thiserror", + "uluru", +] + +[[package]] +name = "gix-packetline" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fad0ffb982a289888087a165d3e849cbac724f2aa5431236b050dd2cb9c7de31" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-path" +version = "0.10.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cb06c3e4f8eed6e24fd915fa93145e28a511f4ea0e768bae16673e05ed3f366" +dependencies = [ + "bstr", + "gix-trace", + "gix-validate", + "thiserror", +] + +[[package]] +name = "gix-pathspec" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e28457dca7c65a2dbe118869aab922a5bd382b7bb10cff5354f366845c128" +dependencies = [ + "bitflags", + "bstr", + "gix-attributes", + "gix-config-value", + "gix-glob", + "gix-path", + "thiserror", +] + +[[package]] +name = "gix-prompt" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "868e6516dfa16fdcbc5f8c935167d085f2ae65ccd4c9476a4319579d12a69d8d" +dependencies = [ + "gix-command", + "gix-config-value", + "parking_lot", + "rustix 1.1.2", + "thiserror", +] + +[[package]] +name = "gix-protocol" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6947d3b919ec8d10738f4251905a8485366ffdd24942cdbe9c6b69376bf57d64" +dependencies = [ + "bstr", + "gix-date", + "gix-features", + "gix-hash", + "gix-ref", + "gix-shallow", + "gix-transport", + "gix-utils", + "maybe-async", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-quote" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e912ec04b7b1566a85ad486db0cab6b9955e3e32bcd3c3a734542ab3af084c5b" +dependencies = [ + "bstr", + "gix-utils", + "thiserror", +] + +[[package]] +name = "gix-ref" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51330a32f173c8e831731dfef8e93a748c23c057f4b028841f222564cad84cb" +dependencies = [ + "gix-actor", + "gix-features", + "gix-fs", + "gix-hash", + "gix-lock", + "gix-object", + "gix-path", + "gix-tempfile", + "gix-utils", + "gix-validate", + "memmap2", + "thiserror", + "winnow", +] + +[[package]] +name = "gix-refspec" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f88233214a302d61e60bb9d1387043c1759b761dba4a8704b341fecbf6b1266" +dependencies = [ + "bstr", + "gix-glob", + "gix-hash", + "gix-revision", + "gix-validate", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-revision" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe7f489bd27e7e388885210bc189088012db6062ccc75d713d1cef8eff56883" +dependencies = [ + "bitflags", + "bstr", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "gix-trace", + "thiserror", +] + +[[package]] +name = "gix-revwalk" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd2fae8449d97fb92078c46cb63544e0024955f43738a610d24277a3b01d5a00" +dependencies = [ + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-sec" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea9962ed6d9114f7f100efe038752f41283c225bb507a2888903ac593dffa6be" +dependencies = [ + "bitflags", + "gix-path", + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "gix-shallow" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2374692db1ee1ffa0eddcb9e86ec218f7c4cdceda800ebc5a9fdf73a8c08223" +dependencies = [ + "bstr", + "gix-hash", + "gix-lock", + "thiserror", +] + +[[package]] +name = "gix-status" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53c9ad16b4d9da73d527eb6d1be05de9e0641855b8084b362dd657255684f81f" +dependencies = [ + "bstr", + "filetime", + "gix-diff", + "gix-dir", + "gix-features", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-index", + "gix-object", + "gix-path", + "gix-pathspec", + "gix-worktree", + "portable-atomic", + "thiserror", +] + +[[package]] +name = "gix-submodule" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b79f64c669d8578f45046b3ffb8d4d9cc4beb798871ff638a7b5c1f59dbd2fc" +dependencies = [ + "bstr", + "gix-config", + "gix-path", + "gix-pathspec", + "gix-refspec", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-tempfile" +version = "19.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e265fc6b54e57693232a79d84038381ebfda7b1a3b1b8a9320d4d5fe6e820086" +dependencies = [ + "dashmap", + "gix-fs", + "libc", + "parking_lot", + "signal-hook", + "signal-hook-registry", + "tempfile", +] + +[[package]] +name = "gix-trace" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d3f59a8de2934f6391b6b3a1a7654eae18961fcb9f9c843533fed34ad0f3457" + +[[package]] +name = "gix-transport" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e058d6667165dba7642b3c293d7c355e2a964acef9bc9408604547d952943a8f" +dependencies = [ + "bstr", + "gix-command", + "gix-features", + "gix-packetline", + "gix-quote", + "gix-sec", + "gix-url", + "thiserror", +] + +[[package]] +name = "gix-traverse" +version = "0.49.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054c79f4c3f87e794ff7dc1fec8306a2bb563cfb38f6be2dc0e4c0fa82f74d59" +dependencies = [ + "bitflags", + "gix-commitgraph", + "gix-date", + "gix-hash", + "gix-hashtable", + "gix-object", + "gix-revwalk", + "smallvec", + "thiserror", +] + +[[package]] +name = "gix-url" +version = "0.33.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d995249a1cf1ad79ba10af6499d4bf37cb78035c0983eaa09ec5910da694957c" +dependencies = [ + "bstr", + "gix-features", + "gix-path", + "percent-encoding", + "thiserror", +] + +[[package]] +name = "gix-utils" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "befcdbdfb1238d2854591f760a48711bed85e72d80a10e8f2f93f656746ef7c5" +dependencies = [ + "bstr", + "fastrand", + "unicode-normalization", +] + +[[package]] +name = "gix-validate" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b1e63a5b516e970a594f870ed4571a8fdcb8a344e7bd407a20db8bd61dbfde4" +dependencies = [ + "bstr", + "thiserror", +] + +[[package]] +name = "gix-worktree" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428e8928e0e27341b58aa89e20adaf643efd6a8f863bc9cdf3ec6199c2110c96" +dependencies = [ + "bstr", + "gix-attributes", + "gix-features", + "gix-fs", + "gix-glob", + "gix-hash", + "gix-ignore", + "gix-index", + "gix-object", + "gix-path", + "gix-validate", +] + +[[package]] +name = "gix-worktree-state" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e12c7c67138e02717dd87d3cd63065cdd1b6abf8e2aca46f575dc6a99def48c" +dependencies = [ + "bstr", + "gix-features", + "gix-filter", + "gix-fs", + "gix-index", + "gix-object", + "gix-path", + "gix-worktree", + "io-close", + "thiserror", ] [[package]] -name = "git2" -version = "0.20.2" +name = "gix-worktree-stream" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +checksum = "ed2ccc885b308d918b7de0d7273377990f191706b5716eabb730baeea4d883c6" dependencies = [ - "bitflags", - "libc", - "libgit2-sys", - "log", - "openssl-probe", - "openssl-sys", - "url", + "gix-attributes", + "gix-features", + "gix-filter", + "gix-fs", + "gix-hash", + "gix-object", + "gix-path", + "gix-traverse", + "parking_lot", + "thiserror", ] [[package]] @@ -772,6 +1799,21 @@ dependencies = [ "walkdir", ] +[[package]] +name = "hash32" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" +dependencies = [ + "byteorder", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + [[package]] name = "hashbrown" version = "0.14.5" @@ -784,7 +1826,7 @@ version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ - "foldhash", + "foldhash 0.1.5", ] [[package]] @@ -792,6 +1834,11 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "hashlink" @@ -802,6 +1849,16 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "heapless" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" +dependencies = [ + "hash32", + "stable_deref_trait", +] + [[package]] name = "heck" version = "0.5.0" @@ -823,6 +1880,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "human_format" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c3b1f728c459d27b12448862017b96ad4767b1ec2ec5e6434e99f1577f085b8" + [[package]] name = "humansize" version = "2.1.3" @@ -974,6 +2037,25 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "imara-diff" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" +dependencies = [ + "hashbrown 0.15.5", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + [[package]] name = "indexmap" version = "2.12.1" @@ -1000,6 +2082,16 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "io-close" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadcf447f06744f8ce713d2d6239bb5bde2c357a452397a9ed90c625da390bc" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "is-terminal" version = "0.4.17" @@ -1032,6 +2124,47 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jiff" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +dependencies = [ + "jiff-static", + "jiff-tzdb-platform", + "log", + "portable-atomic", + "portable-atomic-util", + "serde_core", + "windows-sys 0.61.2", +] + +[[package]] +name = "jiff-static" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", +] + [[package]] name = "jobserver" version = "0.1.34" @@ -1076,16 +2209,26 @@ dependencies = [ "conventional_commit_parser", "dirs", "emojis", - "git2", - "indexmap", + "gix", + "indexmap 2.12.1", "inquire", "predicates", "rexpect", + "rusty-hook", "serde", "tempfile", "xdg", ] +[[package]] +name = "kstring" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "558bf9508a558512042d3095138b1f7b8fe90c5467d94f9f1da28b3731c5dbd1" +dependencies = [ + "static_assertions", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -1106,9 +2249,7 @@ checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" dependencies = [ "cc", "libc", - "libssh2-sys", "libz-sys", - "openssl-sys", "pkg-config", ] @@ -1126,20 +2267,16 @@ checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags", "libc", + "redox_syscall", ] [[package]] -name = "libssh2-sys" -version = "0.3.1" +name = "libz-rs-sys" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" +checksum = "8b484ba8d4f775eeca644c452a56650e544bf7e617f1d170fe7298122ead5222" dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", + "zlib-rs", ] [[package]] @@ -1199,12 +2336,32 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "memchr" version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +[[package]] +name = "memmap2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +dependencies = [ + "libc", +] + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -1223,6 +2380,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "nias" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab250442c86f1850815b5d268639dff018c0627022bc1940eb2d642ca1ce12f0" + [[package]] name = "nix" version = "0.30.1" @@ -1272,34 +2435,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.4+3.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507b3792995dae9b0df8a1c1e3771e8418b7c2d9f0baeba32e6fe8b06c7cb72" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.111" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - [[package]] name = "option-ext" version = "0.2.0" @@ -1465,6 +2600,21 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "portable-atomic-util" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +dependencies = [ + "portable-atomic", +] + [[package]] name = "potential_utf" version = "0.1.4" @@ -1522,6 +2672,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prodash" +version = "30.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6efc566849d3d9d737c5cb06cc50e48950ebe3d3f9d70631490fff3a07b139" +dependencies = [ + "bytesize", + "human_format", + "parking_lot", +] + [[package]] name = "quote" version = "1.0.42" @@ -1685,6 +2846,18 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +[[package]] +name = "rusty-hook" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96cee9be61be7e1cbadd851e58ed7449c29c620f00b23df937cb9cbc04ac21a3" +dependencies = [ + "ci_info", + "getopts", + "nias", + "toml 0.5.11", +] + [[package]] name = "ryu" version = "1.0.20" @@ -1785,6 +2958,27 @@ dependencies = [ "serde_core", ] +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1-checked" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89f599ac0c323ebb1c6082821a54962b839832b03984598375bff3975b804423" +dependencies = [ + "digest", + "sha1", +] + [[package]] name = "sha2" version = "0.10.9" @@ -1866,6 +3060,12 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "stderrlog" version = "0.6.0" @@ -2005,6 +3205,30 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + [[package]] name = "toml" version = "0.8.23" @@ -2054,7 +3278,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap", + "indexmap 2.12.1", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -2095,12 +3319,36 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" +[[package]] +name = "uluru" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c8a2469e56e6e5095c82ccd3afb98dad95f7af7929aab6d8ba8d6e0f73657da" +dependencies = [ + "arrayvec", +] + +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + [[package]] name = "unicode-ident" version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-normalization" +version = "0.1.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.12.0" @@ -2348,7 +3596,16 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", ] [[package]] @@ -2366,14 +3623,31 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", ] [[package]] @@ -2382,48 +3656,96 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + [[package]] name = "winnow" version = "0.7.14" @@ -2564,3 +3886,9 @@ dependencies = [ "quote", "syn", ] + +[[package]] +name = "zlib-rs" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36134c44663532e6519d7a6dfdbbe06f6f8192bde8ae9ed076e9b213f0e31df7" diff --git a/Cargo.toml b/Cargo.toml index 5741e30..bfef5c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,21 +26,22 @@ cocogitto = { version = "6.5", default-features = false } conventional_commit_parser = "0.9" dirs = "6.0" emojis = "0.8" -git2 = "0.20" indexmap = "2.10" serde = { version = "1.0", features = ["derive"] } inquire = "0.9" clap_complete_command = { version = "0.6", features = ["nushell"]} config = { version = "0.15", features = ["toml"] } xdg = "3.0" +gix = "0.75.0" [features] -vendored-openssl = ["git2/vendored-openssl"] +vendored-openssl = [] [dev-dependencies] assert_cmd = "2.0.16" predicates = "3.1.2" tempfile = "3.12.0" +rusty-hook = "^0.11.2" [target.'cfg(not(windows))'.dev-dependencies] rexpect = "0.6.2" From 9534ce92760b182990d006ebf50316a3cdb77eb6 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Wed, 4 Feb 2026 12:17:56 -0500 Subject: [PATCH 05/19] yo hi gix --- tests/integration.rs | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index eac8bd6..5dc1313 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,11 +1,13 @@ -use gix::bstr::ByteSlice; use gix::Repository; +use gix::{bstr::ByteSlice, config::File}; #[cfg(not(target_os = "windows"))] use rexpect::{ process::wait, session::{spawn_command, PtySession}, }; -use std::{error::Error, fs, path::PathBuf, process::Command}; +use std::fs; +use std::path::Path; +use std::{error::Error, path::PathBuf, process::Command}; use tempfile::TempDir; fn setup_config_home() -> Result> { @@ -15,27 +17,20 @@ fn setup_config_home() -> Result> { Ok(temp_dir) } -fn setup_test_dir() -> Result<(PathBuf, TempDir, Repository), Box> { +fn setup_test_dir() -> Result<(PathBuf, TempDir, Repository), Box> { let bin_path = assert_cmd::cargo::cargo_bin!("koji").to_path_buf(); let temp_dir = tempfile::tempdir()?; - // Use git command to initialize repo with proper setup - Command::new("git") - .args(&["init", "-b", "main"]) - .current_dir(temp_dir.path()) - .output()?; + // Should default to main + let repo = gix::init(temp_dir.path())?; - Command::new("git") - .args(&["config", "user.name", "test"]) - .current_dir(temp_dir.path()) - .output()?; + let config_path = temp_dir.path().join(".git/config"); + let mut config = File::from_path_no_includes(config_path.clone(), gix::config::Source::Local)?; - Command::new("git") - .args(&["config", "user.email", "test@example.org"]) - .current_dir(temp_dir.path()) - .output()?; + config.set_raw_value(&"user.name", "test")?; + config.set_raw_value(&"user.email", "test@example.org")?; - let repo = gix::open(temp_dir.path())?; + fs::write(&config_path, config.to_string())?; Ok((bin_path, temp_dir, repo)) } From 451614d7e6fe77952ed8457561472577c9dafa0c Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Wed, 4 Feb 2026 12:18:03 -0500 Subject: [PATCH 06/19] removed vendored openssl --- Cargo.toml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index bfef5c7..52c81ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,9 +34,6 @@ config = { version = "0.15", features = ["toml"] } xdg = "3.0" gix = "0.75.0" -[features] -vendored-openssl = [] - [dev-dependencies] assert_cmd = "2.0.16" predicates = "3.1.2" From 9107ecd93792d43c5929b4669749230feffaf07c Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Wed, 4 Feb 2026 12:50:13 -0500 Subject: [PATCH 07/19] gix update --- Cargo.lock | 313 ++++++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 164 insertions(+), 151 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7c6f9b2..39ed373 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,9 +84,12 @@ checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "arc-swap" -version = "1.7.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +checksum = "9ded5f9a03ac8f24d1b8a25101ee812cd32cdc8c50a4c50237de2c4915850e73" +dependencies = [ + "rustversion", +] [[package]] name = "arraydeque" @@ -533,8 +536,8 @@ dependencies = [ "document-features", "mio", "parking_lot", - "rustix 1.1.2", - "signal-hook", + "rustix 1.1.3", + "signal-hook 0.3.18", "signal-hook-mio", "winapi", ] @@ -896,9 +899,9 @@ dependencies = [ [[package]] name = "gix" -version = "0.75.0" +version = "0.78.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60beff35667fb0ac935c4c45941868d9cf5025e4b85c58deb3c5a65113e22ce4" +checksum = "3428a03ace494ae40308bd3df0b37e7eb7403e24389f27abdff30abf2b5adf17" dependencies = [ "gix-actor", "gix-archive", @@ -912,6 +915,7 @@ dependencies = [ "gix-diff", "gix-dir", "gix-discover", + "gix-error", "gix-features", "gix-filter", "gix-fs", @@ -949,16 +953,16 @@ dependencies = [ "gix-worktree-stream", "parking_lot", "regex", - "signal-hook", + "signal-hook 0.4.3", "smallvec", "thiserror", ] [[package]] name = "gix-actor" -version = "0.36.0" +version = "0.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "694f6c16eb88b16b00b1d811e4e4bda6f79e9eb467a1b04fd5b848da677baa81" +checksum = "b50ce5433eaa46187349e59089eea71b0397caa71991b2fa3e124120426d7d15" dependencies = [ "bstr", "gix-date", @@ -970,23 +974,22 @@ dependencies = [ [[package]] name = "gix-archive" -version = "0.24.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1573842ddcd6debcca7c19158ba473dfb5c096a280d3275f6050795528edd348" +checksum = "388d1d2e5ec852a3af138c0e11d73aa6800490c88eac94970a7b653beab0dcd0" dependencies = [ "bstr", "gix-date", "gix-object", "gix-worktree-stream", - "jiff", "thiserror", ] [[package]] name = "gix-attributes" -version = "0.28.1" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6591add69314fc43db078076a8da6f07957c65abb0b21c3e1b6a3cf50aa18d" +checksum = "f868f013fee0ebb5c85fae848c34a0b9ef7438acfbaec0c82a3cdbd5eac730a0" dependencies = [ "bstr", "gix-glob", @@ -1010,13 +1013,14 @@ dependencies = [ [[package]] name = "gix-blame" -version = "0.5.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7c62ee6ebdfe8a21d23609d7e73e45f13a0ec9308aec7d7303640d7bf80fbc" +checksum = "9e0bf0ff9a7ce3f34832565b5aa13ae923feacd1154e2fbbfa5de9b740e26288" dependencies = [ "gix-commitgraph", "gix-date", "gix-diff", + "gix-error", "gix-hash", "gix-object", "gix-revwalk", @@ -1029,18 +1033,18 @@ dependencies = [ [[package]] name = "gix-chunk" -version = "0.4.12" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c356b3825677cb6ff579551bb8311a81821e184453cbd105e2fc5311b288eeb" +checksum = "63e516efaac951ed21115b11d5514b120c26ccb493d0c0b9ea6cc10edf4fdf44" dependencies = [ - "thiserror", + "gix-error", ] [[package]] name = "gix-command" -version = "0.6.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "095c8367c9dc4872a7706fbc39c7f34271b88b541120a4365ff0e36366f66e62" +checksum = "745bc165b7da500acc26d24888379ae0dfd1ecabe3a47420cdcb92feefb0561d" dependencies = [ "bstr", "gix-path", @@ -1051,22 +1055,22 @@ dependencies = [ [[package]] name = "gix-commitgraph" -version = "0.30.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826994ff6c01f1ff00d6a1844d7506717810a91ffed143da71e3bf39369751ef" +checksum = "d0dda2e4d5a61d4a16a780f61f2b7e9406ad1f8da97c35c09ef501f3fdf74de0" dependencies = [ "bstr", "gix-chunk", + "gix-error", "gix-hash", "memmap2", - "thiserror", ] [[package]] name = "gix-config" -version = "0.48.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9419284839421488b5ab9b9b88386bdc1e159a986c08e17ffa3e9a5cd2b139f5" +checksum = "9a153dd4f5789fdf242e19e3f7105f2a114df198570225976fe4a108bac9dee4" dependencies = [ "bstr", "gix-config-value", @@ -1084,9 +1088,9 @@ dependencies = [ [[package]] name = "gix-config-value" -version = "0.15.3" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c489abb061c74b0c3ad790e24a606ef968cebab48ec673d6a891ece7d5aef64" +checksum = "563361198101cedc975fe5760c91ac2e4126eec22216e81b659b45289feaf1ea" dependencies = [ "bitflags", "bstr", @@ -1097,9 +1101,9 @@ dependencies = [ [[package]] name = "gix-credentials" -version = "0.32.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5576b03b6396d2df102c98a4bd639797f1922dd06599c92830dfc68fcff287" +checksum = "b6ef04ac6b0b9cb75b02afaab4045eafb7b59be41815fbfaaa184a2280af2146" dependencies = [ "bstr", "gix-command", @@ -1115,22 +1119,22 @@ dependencies = [ [[package]] name = "gix-date" -version = "0.11.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f94626a5bc591a57025361a3a890092469e47c7667e59fc143439cd6eaf47fe" +checksum = "12553b32d1da25671f31c0b084bf1e5cb6d5ef529254d04ec33cdc890bd7f687" dependencies = [ "bstr", + "gix-error", "itoa", "jiff", "smallvec", - "thiserror", ] [[package]] name = "gix-diff" -version = "0.55.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc7735ca267da78c37e916e9b32d67b0b0e3fc9401378920e9469b5d497dccf" +checksum = "26bcd367b2c5dbf6bec9ce02ca59eab179fc82cf39f15ec83549ee25c255c99f" dependencies = [ "bstr", "gix-attributes", @@ -1152,9 +1156,9 @@ dependencies = [ [[package]] name = "gix-dir" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb9a55642e31c81d235e6ab2a7f00343c0f79e70973245a8a1e1d16c498e3e86" +checksum = "004129e2c93798141d68ff08cb7f1b3d909c0212747fb8b05c8989635ba90a4e" dependencies = [ "bstr", "gix-discover", @@ -1172,25 +1176,33 @@ dependencies = [ [[package]] name = "gix-discover" -version = "0.43.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809f8dba9fbd7a054894ec222815742b96def1ca08e18c38b1dbc1f737dd213d" +checksum = "950b027b861c6863ddf1b075672ec1ef2006b95c4d12284fc1ec4cdb1ab6639e" dependencies = [ "bstr", "dunce", "gix-fs", - "gix-hash", "gix-path", "gix-ref", "gix-sec", "thiserror", ] +[[package]] +name = "gix-error" +version = "0.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dffc9ca4dfa4f519a3d2cf1c038919160544923577ac60f45bcb602a24d82c6" +dependencies = [ + "bstr", +] + [[package]] name = "gix-features" -version = "0.44.1" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa64593d1586135102307fb57fb3a9d3868b6b1f45a4da1352cce5070f8916a" +checksum = "6a407957e21dc5e6c87086e50e5114a2f9240f9cb11699588a6d900d53cb6c70" dependencies = [ "bytes", "bytesize", @@ -1200,19 +1212,19 @@ dependencies = [ "gix-trace", "gix-utils", "libc", - "libz-rs-sys", "once_cell", "parking_lot", "prodash", "thiserror", "walkdir", + "zlib-rs", ] [[package]] name = "gix-filter" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e137e7df1ae40fe2b49dcb2845c6bf7ac04cd53a320d72e761c598a6fd452ed" +checksum = "7240442915cdd74e1f889566695ce0d0c23c7185b13318a1232ce646af0d18ad" dependencies = [ "bstr", "encoding_rs", @@ -1231,9 +1243,9 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1ecd896258cdc5ccd94d18386d17906b8de265ad2ecf68e3bea6b007f6a28f" +checksum = "ba74fa163d3b2ba821d5cd207d55fe3daac3d1099613a8559c812d2b15b3c39a" dependencies = [ "bstr", "fastrand", @@ -1245,9 +1257,9 @@ dependencies = [ [[package]] name = "gix-glob" -version = "0.22.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74254992150b0a88fdb3ad47635ab649512dff2cbbefca7916bb459894fc9d56" +checksum = "b03e6cd88cc0dc1eafa1fddac0fb719e4e74b6ea58dd016e71125fde4a326bee" dependencies = [ "bitflags", "bstr", @@ -1257,9 +1269,9 @@ dependencies = [ [[package]] name = "gix-hash" -version = "0.20.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826036a9bee95945b0be1e2394c64cd4289916c34a639818f8fd5153906985c1" +checksum = "2b8e11ea6bbd0fd4ab4a1c66812dd3cc25921a41315b120f352997725a4c79d6" dependencies = [ "faster-hex", "gix-features", @@ -1269,9 +1281,9 @@ dependencies = [ [[package]] name = "gix-hashtable" -version = "0.10.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27d4a3ea9640da504a2657fef3419c517fd71f1767ad8935298bcc805edd195" +checksum = "52f1eecdd006390cbed81f105417dbf82a6fe40842022006550f2e32484101da" dependencies = [ "gix-hash", "hashbrown 0.16.1", @@ -1280,9 +1292,9 @@ dependencies = [ [[package]] name = "gix-ignore" -version = "0.17.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93b6a9679a1488123b7f2929684bacfd9cd2a24f286b52203b8752cbb8d7fc49" +checksum = "8953d87c13267e296d547f0fc7eaa8aa8fa5b2a9a34ab1cd5857f25240c7d299" dependencies = [ "bstr", "gix-glob", @@ -1293,9 +1305,9 @@ dependencies = [ [[package]] name = "gix-index" -version = "0.43.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6410318b98750883eb3e35eb999abfb155b407eb0580726d4d868b60cde04" +checksum = "e31c6b3664efe5916c539c50e610f9958f2993faf8e29fa5a40fb80b6ac8486a" dependencies = [ "bitflags", "bstr", @@ -1314,16 +1326,16 @@ dependencies = [ "itoa", "libc", "memmap2", - "rustix 1.1.2", + "rustix 1.1.3", "smallvec", "thiserror", ] [[package]] name = "gix-lock" -version = "19.0.0" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729d7857429a66023bc0c29d60fa21d0d6ae8862f33c1937ba89e0f74dd5c67f" +checksum = "e16d406220ef9df105645a9ddcaa42e8c882ba920344ace866d0403570aea599" dependencies = [ "gix-tempfile", "gix-utils", @@ -1332,9 +1344,9 @@ dependencies = [ [[package]] name = "gix-mailmap" -version = "0.28.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a97041c66c8b6c2f34cf6b8585a36e28a07401a611a69d8a5d2cee0eea2aa72" +checksum = "2e6fd521cb582620b7066b5b420ace1951cb84fe2241fa239b227e1a94fa25dc" dependencies = [ "bstr", "gix-actor", @@ -1344,9 +1356,9 @@ dependencies = [ [[package]] name = "gix-negotiate" -version = "0.23.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7ecfa02c9bddd371ec2cf938ee207fe242616386578f2bfc09d1f8f81d25f9" +checksum = "00dff6d49869f16b8900da7c27b886a45cbf641b1e45aab355d012afe4266b7f" dependencies = [ "bitflags", "gix-commitgraph", @@ -1360,9 +1372,9 @@ dependencies = [ [[package]] name = "gix-object" -version = "0.52.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84743d1091c501a56f00d7f4c595cb30f20fcef6503b32ac0a1ff3817efd7b5d" +checksum = "4d3f705c977d90ace597049252ae1d7fec907edc0fa7616cc91bf5508d0f4006" dependencies = [ "bstr", "gix-actor", @@ -1381,12 +1393,11 @@ dependencies = [ [[package]] name = "gix-odb" -version = "0.72.0" +version = "0.75.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f81b480252f3a4d55f87e6e358c4c6f7615f98b1742e1e70118c57282a92e82" +checksum = "1d59882d2fdab5e609b0c452a6ef9a3bd12ef6b694be4f82ab8f126ad0969864" dependencies = [ "arc-swap", - "gix-date", "gix-features", "gix-fs", "gix-hash", @@ -1402,12 +1413,13 @@ dependencies = [ [[package]] name = "gix-pack" -version = "0.62.0" +version = "0.65.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e868463538731a0fd99f3950637957413bbfbe69143520c0b5c1e163303577" +checksum = "8c44db57ebbbeaad9972c2a60662142660427a1f0a7529314d53fefb4fedad24" dependencies = [ "clru", "gix-chunk", + "gix-error", "gix-features", "gix-hash", "gix-hashtable", @@ -1421,9 +1433,9 @@ dependencies = [ [[package]] name = "gix-packetline" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad0ffb982a289888087a165d3e849cbac724f2aa5431236b050dd2cb9c7de31" +checksum = "6c333badf342e9c2392800a96b9f2cf5bcb33906d2577d6ec923756ff4008a3f" dependencies = [ "bstr", "faster-hex", @@ -1433,9 +1445,9 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.10.22" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cb06c3e4f8eed6e24fd915fa93145e28a511f4ea0e768bae16673e05ed3f366" +checksum = "c7c3cd795cad18c7acbc6bafe34bfb34ac7273ee81133793f9d1516dd9faf922" dependencies = [ "bstr", "gix-trace", @@ -1445,9 +1457,9 @@ dependencies = [ [[package]] name = "gix-pathspec" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e28457dca7c65a2dbe118869aab922a5bd382b7bb10cff5354f366845c128" +checksum = "3df6fd8e514d8b99ec5042ee17909a17750ccf54d0b8b30c850954209c800322" dependencies = [ "bitflags", "bstr", @@ -1460,22 +1472,22 @@ dependencies = [ [[package]] name = "gix-prompt" -version = "0.11.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868e6516dfa16fdcbc5f8c935167d085f2ae65ccd4c9476a4319579d12a69d8d" +checksum = "6d48536da48fa4ae9d99bf46479f37a19a58427711e1927c80790856d4a490f6" dependencies = [ "gix-command", "gix-config-value", "parking_lot", - "rustix 1.1.2", + "rustix 1.1.3", "thiserror", ] [[package]] name = "gix-protocol" -version = "0.53.0" +version = "0.56.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6947d3b919ec8d10738f4251905a8485366ffdd24942cdbe9c6b69376bf57d64" +checksum = "54f20837b0c70b65f6ac77886be033de3b69d5879f99128b47c42665ab0a17c2" dependencies = [ "bstr", "gix-date", @@ -1503,9 +1515,9 @@ dependencies = [ [[package]] name = "gix-ref" -version = "0.55.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51330a32f173c8e831731dfef8e93a748c23c057f4b028841f222564cad84cb" +checksum = "5cf780dcd9ac99fd3fcfc8523479a0e2ffd55f5e0be63e5e3248fb7e46cff966" dependencies = [ "gix-actor", "gix-features", @@ -1524,11 +1536,12 @@ dependencies = [ [[package]] name = "gix-refspec" -version = "0.33.0" +version = "0.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f88233214a302d61e60bb9d1387043c1759b761dba4a8704b341fecbf6b1266" +checksum = "60ce400a770a7952e45267803192cc2d1fe0afa08e2c08dde32e04c7908c6e61" dependencies = [ "bstr", + "gix-error", "gix-glob", "gix-hash", "gix-revision", @@ -1539,30 +1552,31 @@ dependencies = [ [[package]] name = "gix-revision" -version = "0.37.0" +version = "0.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe7f489bd27e7e388885210bc189088012db6062ccc75d713d1cef8eff56883" +checksum = "c719cf7d669439e1fca735bd1c4de54d43c5d30e8883fd6063c4924b213d70c9" dependencies = [ "bitflags", "bstr", "gix-commitgraph", "gix-date", + "gix-error", "gix-hash", "gix-hashtable", "gix-object", "gix-revwalk", "gix-trace", - "thiserror", ] [[package]] name = "gix-revwalk" -version = "0.23.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd2fae8449d97fb92078c46cb63544e0024955f43738a610d24277a3b01d5a00" +checksum = "194a50b30aa0c6e6de43c723359c5809a96275a3aa92d323ef7f58b1cdd60f16" dependencies = [ "gix-commitgraph", "gix-date", + "gix-error", "gix-hash", "gix-hashtable", "gix-object", @@ -1572,9 +1586,9 @@ dependencies = [ [[package]] name = "gix-sec" -version = "0.12.2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9962ed6d9114f7f100efe038752f41283c225bb507a2888903ac593dffa6be" +checksum = "beeb3bc63696cf7acb5747a361693ebdbcaf25b5d27d2308f38e9782983e7bce" dependencies = [ "bitflags", "gix-path", @@ -1584,9 +1598,9 @@ dependencies = [ [[package]] name = "gix-shallow" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2374692db1ee1ffa0eddcb9e86ec218f7c4cdceda800ebc5a9fdf73a8c08223" +checksum = "f4f4660fed3786d28e7e57d31b2de9ab3bf846068e187ccc52ee513de19a0073" dependencies = [ "bstr", "gix-hash", @@ -1596,9 +1610,9 @@ dependencies = [ [[package]] name = "gix-status" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c9ad16b4d9da73d527eb6d1be05de9e0641855b8084b362dd657255684f81f" +checksum = "b0c994dbca7f038cfcde6337673523bab6e6b4f544b5046f5120a02bdeafff33" dependencies = [ "bstr", "filetime", @@ -1619,9 +1633,9 @@ dependencies = [ [[package]] name = "gix-submodule" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b79f64c669d8578f45046b3ffb8d4d9cc4beb798871ff638a7b5c1f59dbd2fc" +checksum = "db1840fe723c6264ee596e5a179e1b9a2df59351f09bae9cea570a472a790bc0" dependencies = [ "bstr", "gix-config", @@ -1634,30 +1648,30 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "19.0.1" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e265fc6b54e57693232a79d84038381ebfda7b1a3b1b8a9320d4d5fe6e820086" +checksum = "d280bba7c547170e42d5228fc6e76c191fb5a7c88808ff61af06460404d1fd91" dependencies = [ "dashmap", "gix-fs", "libc", "parking_lot", - "signal-hook", + "signal-hook 0.4.3", "signal-hook-registry", "tempfile", ] [[package]] name = "gix-trace" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d3f59a8de2934f6391b6b3a1a7654eae18961fcb9f9c843533fed34ad0f3457" +checksum = "6e42a4c2583357721ba2d887916e78df504980f22f1182df06997ce197b89504" [[package]] name = "gix-transport" -version = "0.50.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e058d6667165dba7642b3c293d7c355e2a964acef9bc9408604547d952943a8f" +checksum = "de1064c7ffa5a915014a6a5b71fbc5299462ae655348bed23e083b4a735076c3" dependencies = [ "bstr", "gix-command", @@ -1671,9 +1685,9 @@ dependencies = [ [[package]] name = "gix-traverse" -version = "0.49.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054c79f4c3f87e794ff7dc1fec8306a2bb563cfb38f6be2dc0e4c0fa82f74d59" +checksum = "37f8b53b4c56b01c43a4491c4edfe2ce66c654eb86232205172ceb1650d21c55" dependencies = [ "bitflags", "gix-commitgraph", @@ -1688,12 +1702,11 @@ dependencies = [ [[package]] name = "gix-url" -version = "0.33.2" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d995249a1cf1ad79ba10af6499d4bf37cb78035c0983eaa09ec5910da694957c" +checksum = "1ca2e50308a8373069e71970939f43ea4a1b5f422cf807d048ebcf07dcc02b2c" dependencies = [ "bstr", - "gix-features", "gix-path", "percent-encoding", "thiserror", @@ -1712,23 +1725,21 @@ dependencies = [ [[package]] name = "gix-validate" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1e63a5b516e970a594f870ed4571a8fdcb8a344e7bd407a20db8bd61dbfde4" +checksum = "0ec1eff98d91941f47766367cba1be746bab662bad761d9891ae6f7882f7840b" dependencies = [ "bstr", - "thiserror", ] [[package]] name = "gix-worktree" -version = "0.44.0" +version = "0.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "428e8928e0e27341b58aa89e20adaf643efd6a8f863bc9cdf3ec6199c2110c96" +checksum = "ef2ad658586ec0039b03e96c664f08b7cb7a2b7cca6947a9c856c9ed59b807b1" dependencies = [ "bstr", "gix-attributes", - "gix-features", "gix-fs", "gix-glob", "gix-hash", @@ -1741,9 +1752,9 @@ dependencies = [ [[package]] name = "gix-worktree-state" -version = "0.22.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e12c7c67138e02717dd87d3cd63065cdd1b6abf8e2aca46f575dc6a99def48c" +checksum = "9895abc7654cbd8e102d6a765d3bdfa1567fcd5d2849b8e3d3da6405d64913c9" dependencies = [ "bstr", "gix-features", @@ -1759,9 +1770,9 @@ dependencies = [ [[package]] name = "gix-worktree-stream" -version = "0.24.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2ccc885b308d918b7de0d7273377990f191706b5716eabb730baeea4d883c6" +checksum = "2339a1339413500263052a9feb866ad1847885088ed44a411b33a235dd9110c5" dependencies = [ "gix-attributes", "gix-features", @@ -2120,15 +2131,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49cce2b81f2098e7e3efc35bc2e0a6b7abec9d34128283d7a26fa8f32a6dbb35" +checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -2141,9 +2152,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "980af8b43c3ad5d8d349ace167ec8170839f753a42d233ba19e08afe1850fa69" +checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" dependencies = [ "proc-macro2", "quote", @@ -2237,9 +2248,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libgit2-sys" @@ -2270,15 +2281,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b484ba8d4f775eeca644c452a56650e544bf7e617f1d170fe7298122ead5222" -dependencies = [ - "zlib-rs", -] - [[package]] name = "libz-sys" version = "1.1.23" @@ -2674,9 +2676,9 @@ dependencies = [ [[package]] name = "prodash" -version = "30.0.1" +version = "31.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6efc566849d3d9d737c5cb06cc50e48950ebe3d3f9d70631490fff3a07b139" +checksum = "962200e2d7d551451297d9fdce85138374019ada198e30ea9ede38034e27604c" dependencies = [ "bytesize", "human_format", @@ -2829,9 +2831,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags", "errno", @@ -3012,6 +3014,16 @@ dependencies = [ "signal-hook-registry", ] +[[package]] +name = "signal-hook" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b57709da74f9ff9f4a27dce9526eec25ca8407c45a7887243b031a58935fb8e" +dependencies = [ + "libc", + "signal-hook-registry", +] + [[package]] name = "signal-hook-mio" version = "0.2.5" @@ -3020,15 +3032,16 @@ checksum = "b75a19a7a740b25bc7944bdee6172368f988763b744e3d4dfe753f6b4ece40cc" dependencies = [ "libc", "mio", - "signal-hook", + "signal-hook 0.3.18", ] [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] @@ -3109,14 +3122,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] @@ -3889,6 +3902,6 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36134c44663532e6519d7a6dfdbbe06f6f8192bde8ae9ed076e9b213f0e31df7" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" diff --git a/Cargo.toml b/Cargo.toml index 52c81ea..cb17b7a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -32,7 +32,7 @@ inquire = "0.9" clap_complete_command = { version = "0.6", features = ["nushell"]} config = { version = "0.15", features = ["toml"] } xdg = "3.0" -gix = "0.75.0" +gix = "0.78.0" [dev-dependencies] assert_cmd = "2.0.16" From a72c60034fb7b4eeaa9a0bbb62636b840f785c5d Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Fri, 20 Feb 2026 23:19:26 -0500 Subject: [PATCH 08/19] added scoping here --- src/lib/config.rs | 60 ++++++++++++++++++++++++++++++++++++++++++++ src/lib/questions.rs | 27 +++++++++++++++----- 2 files changed, 81 insertions(+), 6 deletions(-) diff --git a/src/lib/config.rs b/src/lib/config.rs index 0ca30c6..22d4ad3 100644 --- a/src/lib/config.rs +++ b/src/lib/config.rs @@ -13,6 +13,7 @@ pub struct Config { pub autocomplete: bool, pub breaking_changes: bool, pub commit_types: IndexMap, + pub commit_scopes: IndexMap, pub emoji: bool, pub issues: bool, pub sign: bool, @@ -26,12 +27,20 @@ pub struct CommitType { pub name: String, } +#[derive(Clone, Debug, Deserialize, PartialEq, Eq)] +pub struct CommitScope { + pub name: String, + pub description: Option, +} + #[derive(Clone, Debug, Deserialize)] struct ConfigTOML { pub autocomplete: bool, pub breaking_changes: bool, #[serde(default)] commit_types: Vec, + #[serde(default)] + commit_scopes: Vec, pub emoji: bool, pub issues: bool, pub sign: bool, @@ -101,10 +110,17 @@ impl Config { commit_types.insert(commit_type.name.clone(), commit_type.to_owned()); } + // Gather up commit scopes + let mut commit_scopes = IndexMap::new(); + for commit_scope in config.commit_scopes.iter() { + commit_scopes.insert(commit_scope.name.clone(), commit_scope.to_owned()); + } + Ok(Config { autocomplete: autocomplete.unwrap_or(config.autocomplete), breaking_changes: breaking_changes.unwrap_or(config.breaking_changes), commit_types, + commit_scopes, emoji: emoji.unwrap_or(config.emoji), issues: issues.unwrap_or(config.issues), sign: sign.unwrap_or(config.sign), @@ -285,4 +301,48 @@ mod tests { Ok(()) } + + #[test] + fn test_commit_scopes() -> Result<(), Box> { + let tempdir = tempfile::tempdir()?; + std::fs::write( + tempdir.path().join(".koji.toml"), + "[[commit_scopes]]\nname=\"app\"\ndescription=\"Application code\"", + )?; + let config = Config::new(Some(ConfigArgs { + _current_dir: Some(tempdir.path().to_path_buf()), + ..Default::default() + }))?; + assert!(config.commit_scopes.get("app").is_some()); + assert_eq!( + config.commit_scopes.get("app"), + Some(&CommitScope { + name: "app".into(), + description: Some("Application code".into()) + }) + ); + tempdir.close()?; + Ok(()) + } + #[test] + fn test_commit_scopes_from_config() -> Result<(), Box> { + let tempdir_config = tempfile::tempdir()?; + std::fs::create_dir(tempdir_config.path().join("koji"))?; + std::fs::write( + tempdir_config.path().join("koji").join("config.toml"), + "[[commit_scopes]]\nname=\"server\"\ndescription=\"Server code\"\n[[commit_scopes]]\nname=\"shared\"", + )?; + let tempdir_current = tempfile::tempdir()?; + let config = Config::new(Some(ConfigArgs { + _user_config_path: Some(tempdir_config.path().to_path_buf()), + _current_dir: Some(tempdir_current.path().to_path_buf()), + ..Default::default() + }))?; + assert!(config.commit_scopes.get("server").is_some()); + assert!(config.commit_scopes.get("shared").is_some()); + assert_eq!(config.commit_scopes.len(), 2); + tempdir_current.close()?; + tempdir_config.close()?; + Ok(()) + } } diff --git a/src/lib/questions.rs b/src/lib/questions.rs index 6afe12d..6f1858e 100644 --- a/src/lib/questions.rs +++ b/src/lib/questions.rs @@ -85,12 +85,12 @@ fn prompt_type(config: &Config) -> Result { } #[derive(Debug, Clone)] -struct ScopeAutocompleter { - config: Config, +pub struct ScopeAutocompleter { + pub config: Config, } impl ScopeAutocompleter { - fn get_existing_scopes(&self) -> Result> { + pub fn get_existing_scopes(&self) -> Result> { let repo = gix::discover(&self.config.workdir).context("could not find git repository")?; // Get HEAD commit as starting point @@ -130,13 +130,28 @@ impl ScopeAutocompleter { Ok(scopes) } + + pub fn get_config_scopes(&self) -> Vec { + self.config.commit_scopes.keys().cloned().collect() + } + + pub fn get_all_scopes(&self) -> Vec { + let mut scopes = self.get_config_scopes(); + let existing_scopes = self.get_existing_scopes().unwrap_or_default(); + // Add existing scopes that aren't already in the config scopes + for scope in existing_scopes { + if !scopes.contains(&scope) { + scopes.push(scope); + } + } + scopes + } } impl Autocomplete for ScopeAutocompleter { fn get_suggestions(&mut self, input: &str) -> Result, CustomUserError> { - let existing_scopes = self.get_existing_scopes().unwrap_or_default(); - - Ok(existing_scopes + let all_scopes = self.get_all_scopes(); + Ok(all_scopes .iter() .filter(|s| s.contains(input)) .cloned() From f5a758f99714b5712db3e93f6907243420b92a0a Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Fri, 20 Feb 2026 23:20:13 -0500 Subject: [PATCH 09/19] added testing for scoping --- tests/integration.rs | 84 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) diff --git a/tests/integration.rs b/tests/integration.rs index 5dc1313..74cf1c7 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,12 +1,15 @@ use gix::Repository; use gix::{bstr::ByteSlice, config::File}; +use indexmap::IndexMap; +use inquire::autocompletion::Autocomplete; +use koji::config::{CommitScope, Config}; +use koji::questions::ScopeAutocompleter; #[cfg(not(target_os = "windows"))] use rexpect::{ process::wait, session::{spawn_command, PtySession}, }; use std::fs; -use std::path::Path; use std::{error::Error, path::PathBuf, process::Command}; use tempfile::TempDir; @@ -560,3 +563,82 @@ fn test_xdg_config() -> Result<(), Box> { xdg_cfg_home.close()?; Ok(()) } + +#[test] +fn test_scope_autocompletion() -> Result<(), Box> { + let tempdir = tempfile::tempdir()?; + let workdir = tempdir.path(); + + // Init git repo and commit using git2 + let repo = git2::Repository::init(workdir)?; + + // Create a commit with a scope + let mut index = repo.index()?; + let tree_id = index.write_tree()?; + let tree = repo.find_tree(tree_id)?; + let sig = git2::Signature::now("Tester", "test@example.com")?; + + repo.commit( + Some("HEAD"), + &sig, + &sig, + "feat(database): initial db schema", + &tree, + &[], + )?; + + // Create another commit with a different scope + let head = repo.head()?.peel_to_commit()?; + repo.commit( + Some("HEAD"), + &sig, + &sig, + "fix(api): fix login endpoint", + &tree, + &[&head], + )?; + + // Setup config with a configured scope + let mut commit_scopes = IndexMap::new(); + commit_scopes.insert( + "frontend".into(), + CommitScope { + name: "frontend".into(), + description: Some("Frontend code".into()), + }, + ); + + let config = Config { + commit_scopes, + workdir: workdir.to_path_buf(), + autocomplete: true, + breaking_changes: false, + commit_types: IndexMap::new(), + emoji: false, + issues: false, + sign: false, + }; + + let mut autocompleter = ScopeAutocompleter { config }; + + // Test get_all_scopes + let scopes = autocompleter.get_all_scopes(); + + assert!(scopes.contains(&"database".to_string())); + assert!(scopes.contains(&"api".to_string())); + assert!(scopes.contains(&"frontend".to_string())); + + // Test get_suggestions (Autocomplete trait) + let suggestions = autocompleter + .get_suggestions("data") + .expect("Failed to get suggestions"); + assert!(suggestions.contains(&"database".to_string())); + assert!(!suggestions.contains(&"api".to_string())); + + let suggestions = autocompleter + .get_suggestions("front") + .expect("Failed to get suggestions"); + assert!(suggestions.contains(&"frontend".to_string())); + + Ok(()) +} From 168645e5d9015bd75d0c99f1305e100deb8544d6 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Fri, 20 Feb 2026 23:20:27 -0500 Subject: [PATCH 10/19] git2 for testing --- Cargo.lock | 45 +++++++++++++++++++++++++++++++++++++++++---- Cargo.toml | 3 ++- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 39ed373..44d53a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -886,14 +886,16 @@ dependencies = [ [[package]] name = "git2" -version = "0.20.2" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2deb07a133b1520dc1a5690e9bd08950108873d7ed5de38dcc74d3b5ebffa110" +checksum = "7b88256088d75a56f8ecfa070513a775dd9107f6530ef14919dac831af9cfe2b" dependencies = [ "bitflags", "libc", "libgit2-sys", "log", + "openssl-probe", + "openssl-sys", "url", ] @@ -2220,6 +2222,7 @@ dependencies = [ "conventional_commit_parser", "dirs", "emojis", + "git2", "gix", "indexmap 2.12.1", "inquire", @@ -2254,13 +2257,15 @@ checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libgit2-sys" -version = "0.18.2+1.9.1" +version = "0.18.3+1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c42fe03df2bd3c53a3a9c7317ad91d80c81cd1fb0caec8d7cc4cd2bfa10c222" +checksum = "c9b3acc4b91781bb0b3386669d325163746af5f6e4f73e6d2d630e09a35f3487" dependencies = [ "cc", "libc", + "libssh2-sys", "libz-sys", + "openssl-sys", "pkg-config", ] @@ -2281,6 +2286,20 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "libssh2-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.23" @@ -2437,6 +2456,24 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "openssl-sys" +version = "0.9.111" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "option-ext" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index cb17b7a..e95216e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,8 @@ authors = [ "Finley Thomalla ", "Danny Tatom ", ] -description = "An interactive CLI for creating conventional commits." documentation = "https://docs.rs/koji" +description = "An interactive CLI for creating conventional commits." repository = "https://github.com/cococonscious/koji" license = "MIT" @@ -35,6 +35,7 @@ xdg = "3.0" gix = "0.78.0" [dev-dependencies] +git2 = "0.20.4" assert_cmd = "2.0.16" predicates = "3.1.2" tempfile = "3.12.0" From c2aeff3d1e204ee3ca7b8122756611a5afb0f017 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:35:00 +0100 Subject: [PATCH 11/19] ci(deps): update actions/cache action to v5 (#166) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/cache](https://redirect.github.com/actions/cache) | action | major | `v4.3.0` -> `v5.0.1` | --- ### Release Notes
actions/cache (actions/cache) ### [`v5.0.1`](https://redirect.github.com/actions/cache/compare/v5.0.0...v5.0.1) [Compare Source](https://redirect.github.com/actions/cache/compare/v5.0.0...v5.0.1) ### [`v5.0.0`](https://redirect.github.com/actions/cache/compare/v4.3.0...v5.0.0) [Compare Source](https://redirect.github.com/actions/cache/compare/v4.3.0...v5.0.0)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cococonscious/koji). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/call-build-upload.yml | 2 +- .github/workflows/push-pr-lint-test.yml | 6 +++--- .github/workflows/push-release-plz.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/call-build-upload.yml b/.github/workflows/call-build-upload.yml index 2075a1a..cb050cb 100644 --- a/.github/workflows/call-build-upload.yml +++ b/.github/workflows/call-build-upload.yml @@ -66,7 +66,7 @@ jobs: - uses: actions/checkout@v6.0.0 with: ref: ${{ inputs.tag_ref }} - - uses: actions/cache@v4.3.0 + - uses: actions/cache@v5.0.1 with: path: | ~/.cargo/bin/ diff --git a/.github/workflows/push-pr-lint-test.yml b/.github/workflows/push-pr-lint-test.yml index 8217ec2..adb7aae 100644 --- a/.github/workflows/push-pr-lint-test.yml +++ b/.github/workflows/push-pr-lint-test.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.0 - - uses: actions/cache@v4.3.0 + - uses: actions/cache@v5.0.1 with: path: | ~/.cargo/bin/ @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.0 - - uses: actions/cache@v4.3.0 + - uses: actions/cache@v5.0.1 with: path: | ~/.cargo/bin/ @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v6.0.0 - - uses: actions/cache@v4.3.0 + - uses: actions/cache@v5.0.1 with: path: | ~/.cargo/bin/ diff --git a/.github/workflows/push-release-plz.yml b/.github/workflows/push-release-plz.yml index 8835578..d9cd2bd 100644 --- a/.github/workflows/push-release-plz.yml +++ b/.github/workflows/push-release-plz.yml @@ -20,7 +20,7 @@ jobs: uses: actions/checkout@v6.0.0 with: fetch-depth: 0 - - uses: actions/cache@v4.3.0 + - uses: actions/cache@v5.0.1 with: path: | ~/.cargo/bin/ From 1bc60bb2f710ea61e30c3129ecb277ce7fd8f796 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 11:38:08 +0000 Subject: [PATCH 12/19] ci(deps): update codecov/codecov-action action to v5.5.2 (#165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [codecov/codecov-action](https://redirect.github.com/codecov/codecov-action) | action | patch | `v5.5.1` -> `v5.5.2` | --- ### Release Notes
codecov/codecov-action (codecov/codecov-action) ### [`v5.5.2`](https://redirect.github.com/codecov/codecov-action/blob/HEAD/CHANGELOG.md#v552) [Compare Source](https://redirect.github.com/codecov/codecov-action/compare/v5.5.1...v5.5.2) ##### What's Changed **Full Changelog**:
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cococonscious/koji). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/push-pr-lint-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-pr-lint-test.yml b/.github/workflows/push-pr-lint-test.yml index adb7aae..08c3b5c 100644 --- a/.github/workflows/push-pr-lint-test.yml +++ b/.github/workflows/push-pr-lint-test.yml @@ -48,7 +48,7 @@ jobs: - uses: taiki-e/install-action@cargo-tarpaulin - run: git config --global user.name "tests" && git config --global user.email "tests@example.org" - run: cargo tarpaulin --out Xml --engine llvm - - uses: codecov/codecov-action@v5.5.1 + - uses: codecov/codecov-action@v5.5.2 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: true From 499989632764f516c33ac07d6c7b57812735c3e9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Dec 2025 12:46:20 +0100 Subject: [PATCH 13/19] ci(deps): update actions/checkout action to v6.0.1 (#163) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v6.0.0` -> `v6.0.1` | --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.1`](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1) [Compare Source](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1)
--- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/cococonscious/koji). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/call-build-upload.yml | 2 +- .github/workflows/push-pr-lint-test.yml | 6 +++--- .github/workflows/push-release-plz.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/call-build-upload.yml b/.github/workflows/call-build-upload.yml index cb050cb..5f0b465 100644 --- a/.github/workflows/call-build-upload.yml +++ b/.github/workflows/call-build-upload.yml @@ -63,7 +63,7 @@ jobs: os: windows-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v6.0.0 + - uses: actions/checkout@v6.0.1 with: ref: ${{ inputs.tag_ref }} - uses: actions/cache@v5.0.1 diff --git a/.github/workflows/push-pr-lint-test.yml b/.github/workflows/push-pr-lint-test.yml index 08c3b5c..a52c12c 100644 --- a/.github/workflows/push-pr-lint-test.yml +++ b/.github/workflows/push-pr-lint-test.yml @@ -18,7 +18,7 @@ jobs: name: cargo test runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6.0.0 + - uses: actions/checkout@v6.0.1 - uses: actions/cache@v5.0.1 with: path: | @@ -35,7 +35,7 @@ jobs: name: cargo tarpaulin & codecov runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6.0.0 + - uses: actions/checkout@v6.0.1 - uses: actions/cache@v5.0.1 with: path: | @@ -58,7 +58,7 @@ jobs: name: cargo clippy & fmt runs-on: ubuntu-latest steps: - - uses: actions/checkout@v6.0.0 + - uses: actions/checkout@v6.0.1 - uses: actions/cache@v5.0.1 with: path: | diff --git a/.github/workflows/push-release-plz.yml b/.github/workflows/push-release-plz.yml index d9cd2bd..6aa7efd 100644 --- a/.github/workflows/push-release-plz.yml +++ b/.github/workflows/push-release-plz.yml @@ -17,7 +17,7 @@ jobs: releases: ${{ steps.release-plz.outputs.releases }} steps: - name: Checkout repository - uses: actions/checkout@v6.0.0 + uses: actions/checkout@v6.0.1 with: fetch-depth: 0 - uses: actions/cache@v5.0.1 From 4f0b43fa4cbea41e1ebf291786474d8af5c470e5 Mon Sep 17 00:00:00 2001 From: Finley Thomalla Date: Mon, 15 Dec 2025 16:45:10 +0100 Subject: [PATCH 14/19] test: fix rexpect windows failures, more in ci (#168) Multiple macOS versions as a requirement to eventually have koji in homebrew-core --- .github/workflows/push-pr-lint-test.yml | 24 +++++++++++++++++++++--- tests/integration.rs | 3 +++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.github/workflows/push-pr-lint-test.yml b/.github/workflows/push-pr-lint-test.yml index a52c12c..c1f1d5b 100644 --- a/.github/workflows/push-pr-lint-test.yml +++ b/.github/workflows/push-pr-lint-test.yml @@ -15,8 +15,24 @@ env: jobs: test: - name: cargo test - runs-on: ubuntu-latest + name: cargo test (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + # Linux + - ubuntu-latest + # macOS ARM64 - Tahoe (macOS 26 beta) + - macos-26 + # macOS ARM64 - Sequoia (macOS 15) + - macos-15 + # macOS ARM64 - Sonoma (macOS 14) + - macos-14 + # macOS Intel - Sonoma (macOS 15 Intel) + - macos-15-intel + # Windows Server + - windows-latest steps: - uses: actions/checkout@v6.0.1 - uses: actions/cache@v5.0.1 @@ -26,7 +42,9 @@ jobs: ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + key: ${{ matrix.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ matrix.os }}-cargo- - uses: dtolnay/rust-toolchain@stable - run: git config --global user.name "tests" && git config --global user.email "tests@example.org" - run: cargo test --all-features diff --git a/tests/integration.rs b/tests/integration.rs index 74cf1c7..3d9c508 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -63,6 +63,7 @@ fn git_add(temp_dir: &std::path::Path, pattern: &str) -> Result<(), Box Result; fn expect_scope(&mut self) -> Result; @@ -74,6 +75,7 @@ trait ExpectPromps { fn expect_issues_details(&mut self) -> Result; } +#[cfg(not(target_os = "windows"))] impl ExpectPromps for PtySession { fn expect_commit_type(&mut self) -> Result { self.exp_string("are you committing?") @@ -382,6 +384,7 @@ fn test_non_repository_error() -> Result<(), Box> { } #[test] +#[cfg(not(target_os = "windows"))] fn test_empty_repository_error() -> Result<(), Box> { let (bin_path, temp_dir, _) = setup_test_dir()?; From ebab035907d4d340b3e5302d4e719503995b6a00 Mon Sep 17 00:00:00 2001 From: Miles Wirht <114884788+philocalyst@users.noreply.github.com> Date: Wed, 18 Feb 2026 04:35:53 -0500 Subject: [PATCH 15/19] feat: replace git2 with gix (#174) Keeping cocogitto for the commits for now but uses Gix for traversal, etc., and at some point, when Gix is ready, replace cocogitto with it. --- Cargo.lock | 756 ++++++++++++++++++++++--------------------- Cargo.toml | 1 - src/lib/questions.rs | 8 +- 3 files changed, 395 insertions(+), 370 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44d53a1..c74bac7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -78,15 +78,15 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "arc-swap" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ded5f9a03ac8f24d1b8a25101ee812cd32cdc8c50a4c50237de2c4915850e73" +checksum = "f9f3647c145568cec02c42054e07bdf9a5a698e15b466fb2341bfc393cd24aa5" dependencies = [ "rustversion", ] @@ -105,9 +105,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "assert_cmd" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbb6924530aa9e0432442af08bbcafdad182db80d2e560da42a6d442535bf85" +checksum = "9c5bcfa8749ac45dd12cb11055aeeb6b27a3895560d60d71e3c23bf979e60514" dependencies = [ "anstyle", "bstr", @@ -137,9 +137,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "bitflags" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" dependencies = [ "serde_core", ] @@ -166,9 +166,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "byteorder" @@ -178,9 +178,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "bytesize" @@ -190,9 +190,9 @@ checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" [[package]] name = "cc" -version = "1.2.48" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", "jobserver", @@ -214,9 +214,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" +checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118" dependencies = [ "iana-time-zone", "js-sys", @@ -248,20 +248,11 @@ dependencies = [ "phf_codegen", ] -[[package]] -name = "ci_info" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f638c70e8c5753795cc9a8c07c44da91554a09e4cf11a7326e8161b0a3c45e" -dependencies = [ - "envmnt", -] - [[package]] name = "clap" -version = "4.5.53" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" +checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a" dependencies = [ "clap_builder", "clap_derive", @@ -269,9 +260,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.53" +version = "4.5.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" +checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876" dependencies = [ "anstream", "anstyle", @@ -281,9 +272,9 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.61" +version = "4.5.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" +checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031" dependencies = [ "clap", ] @@ -311,9 +302,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.49" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" +checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ "heck", "proc-macro2", @@ -323,9 +314,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" +checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831" [[package]] name = "clru" @@ -347,7 +338,7 @@ dependencies = [ "edit", "git2", "globset", - "indexmap 2.12.1", + "indexmap", "itertools", "log", "maplit", @@ -413,7 +404,7 @@ dependencies = [ "serde-untagged", "serde_core", "serde_json", - "toml 0.9.8", + "toml 0.9.12+spec-1.1.0", "winnow", "yaml-rust2", ] @@ -433,7 +424,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "tiny-keccak", ] @@ -459,9 +450,9 @@ dependencies = [ [[package]] name = "convert_case" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb402b8d4c85569410425650ce3eddc7d698ed96d39a73f941b08fb63082f1e7" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" dependencies = [ "unicode-segmentation", ] @@ -583,22 +574,23 @@ dependencies = [ [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "convert_case 0.7.1", + "convert_case 0.10.0", "proc-macro2", "quote", + "rustc_version", "syn", ] @@ -720,16 +712,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "envmnt" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2d328fc287c61314c4a61af7cfdcbd7e678e39778488c7cb13ec133ce0f4059" -dependencies = [ - "fsio", - "indexmap 1.9.3", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -775,21 +757,20 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" -version = "0.2.26" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" +checksum = "f98844151eee8917efc50bd9e8318cb963ae8b297431495d3f758616ea5c57db" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.60.2", ] [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" [[package]] name = "float-cmp" @@ -827,12 +808,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fsio" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fd087255f739f4f1aeea69f11b72f8080e9c2e7645cd06955dad4a178a49e3" - [[package]] name = "fuzzy-matcher" version = "0.3.7" @@ -853,35 +828,39 @@ dependencies = [ ] [[package]] -name = "getopts" -version = "0.2.24" +name = "getrandom" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe4fbac503b8d1f88e6676011885f34b7174f46e59956bba534ba83abded4df" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ - "unicode-width", + "cfg-if", + "libc", + "wasi", ] [[package]] name = "getrandom" -version = "0.2.16" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "wasi", + "r-efi", + "wasip2", ] [[package]] name = "getrandom" -version = "0.3.4" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" dependencies = [ "cfg-if", "libc", "r-efi", "wasip2", + "wasip3", ] [[package]] @@ -989,9 +968,9 @@ dependencies = [ [[package]] name = "gix-attributes" -version = "0.30.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f868f013fee0ebb5c85fae848c34a0b9ef7438acfbaec0c82a3cdbd5eac730a0" +checksum = "9e72da5a1c35c9a129be0c60ab9968779981ca50835dd98650ecd8b0ea4d721e" dependencies = [ "bstr", "gix-glob", @@ -1006,9 +985,9 @@ dependencies = [ [[package]] name = "gix-bitmap" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e150161b8a75b5860521cb876b506879a3376d3adc857ec7a9d35e7c6a5e531" +checksum = "d982fc7ef0608e669851d0d2a6141dae74c60d5a27e8daa451f2a4857bbf41e2" dependencies = [ "thiserror", ] @@ -1044,9 +1023,9 @@ dependencies = [ [[package]] name = "gix-command" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745bc165b7da500acc26d24888379ae0dfd1ecabe3a47420cdcb92feefb0561d" +checksum = "2962172c6f78731e2b7773bf762f7b8d1746a342a4c0a8914a612206e1295953" dependencies = [ "bstr", "gix-path", @@ -1090,9 +1069,9 @@ dependencies = [ [[package]] name = "gix-config-value" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "563361198101cedc975fe5760c91ac2e4126eec22216e81b659b45289feaf1ea" +checksum = "441a300bc3645a1f45cba495b9175f90f47256ce43f2ee161da0031e3ac77c92" dependencies = [ "bitflags", "bstr", @@ -1202,9 +1181,9 @@ dependencies = [ [[package]] name = "gix-features" -version = "0.46.0" +version = "0.46.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a407957e21dc5e6c87086e50e5114a2f9240f9cb11699588a6d900d53cb6c70" +checksum = "a83a5fe8927de3bb02b0cfb87165dbfb49f04d4c297767443f2e1011ecc15bdd" dependencies = [ "bytes", "bytesize", @@ -1245,9 +1224,9 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba74fa163d3b2ba821d5cd207d55fe3daac3d1099613a8559c812d2b15b3c39a" +checksum = "de4bd0d8e6c6ef03485205f8eecc0359042a866d26dba569075db1ebcc005970" dependencies = [ "bstr", "fastrand", @@ -1271,9 +1250,9 @@ dependencies = [ [[package]] name = "gix-hash" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b8e11ea6bbd0fd4ab4a1c66812dd3cc25921a41315b120f352997725a4c79d6" +checksum = "d8ced05d2d7b13bff08b2f7eb4e47cfeaf00b974c2ddce08377c4fe1f706b3eb" dependencies = [ "faster-hex", "gix-features", @@ -1335,9 +1314,9 @@ dependencies = [ [[package]] name = "gix-lock" -version = "21.0.0" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d406220ef9df105645a9ddcaa42e8c882ba920344ace866d0403570aea599" +checksum = "cbe09cf05ba7c679bba189acc29eeea137f643e7fff1b5dff879dfd45248be31" dependencies = [ "gix-tempfile", "gix-utils", @@ -1435,9 +1414,9 @@ dependencies = [ [[package]] name = "gix-packetline" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c333badf342e9c2392800a96b9f2cf5bcb33906d2577d6ec923756ff4008a3f" +checksum = "25429ee1ef792d9b653ee5de09bb525489fc8e6908334cfd5d5824269f0b7073" dependencies = [ "bstr", "faster-hex", @@ -1447,9 +1426,9 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7c3cd795cad18c7acbc6bafe34bfb34ac7273ee81133793f9d1516dd9faf922" +checksum = "7163b1633d35846a52ef8093f390cec240e2d55da99b60151883035e5169cd85" dependencies = [ "bstr", "gix-trace", @@ -1459,9 +1438,9 @@ dependencies = [ [[package]] name = "gix-pathspec" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6fd8e514d8b99ec5042ee17909a17750ccf54d0b8b30c850954209c800322" +checksum = "c7f4cc23f55ca7c190bf243f1a4e2139d4522022f724fb0dfc06c93f65a01ef6" dependencies = [ "bitflags", "bstr", @@ -1474,9 +1453,9 @@ dependencies = [ [[package]] name = "gix-prompt" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d48536da48fa4ae9d99bf46479f37a19a58427711e1927c80790856d4a490f6" +checksum = "4806f1ebf969cd54d178ccd975911ef1829aeccea0b27630e63c9d26c8347d7f" dependencies = [ "gix-command", "gix-config-value", @@ -1506,9 +1485,9 @@ dependencies = [ [[package]] name = "gix-quote" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e912ec04b7b1566a85ad486db0cab6b9955e3e32bcd3c3a734542ab3af084c5b" +checksum = "96fc2ff2ec8cc0c92807f02eab1f00eb02619fc2810d13dc42679492fcc36757" dependencies = [ "bstr", "gix-utils", @@ -1588,9 +1567,9 @@ dependencies = [ [[package]] name = "gix-sec" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beeb3bc63696cf7acb5747a361693ebdbcaf25b5d27d2308f38e9782983e7bce" +checksum = "e014df75f3d7f5c98b18b45c202422da6236a1c0c0a50997c3f41e601f3ad511" dependencies = [ "bitflags", "gix-path", @@ -1600,9 +1579,9 @@ dependencies = [ [[package]] name = "gix-shallow" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f4660fed3786d28e7e57d31b2de9ab3bf846068e187ccc52ee513de19a0073" +checksum = "189386b5da5285216cc0ede89eff5a943d5261fc794241ee6ec5360b77df15ad" dependencies = [ "bstr", "gix-hash", @@ -1650,9 +1629,9 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "21.0.0" +version = "21.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d280bba7c547170e42d5228fc6e76c191fb5a7c88808ff61af06460404d1fd91" +checksum = "9d9ab2c89fe4bfd4f1d8700aa4516534c170d8a21ae2c554167374607c2eaf16" dependencies = [ "dashmap", "gix-fs", @@ -1665,9 +1644,9 @@ dependencies = [ [[package]] name = "gix-trace" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e42a4c2583357721ba2d887916e78df504980f22f1182df06997ce197b89504" +checksum = "f69a13643b8437d4ca6845e08143e847a36ca82903eed13303475d0ae8b162e0" [[package]] name = "gix-transport" @@ -1704,9 +1683,9 @@ dependencies = [ [[package]] name = "gix-url" -version = "0.35.0" +version = "0.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca2e50308a8373069e71970939f43ea4a1b5f422cf807d048ebcf07dcc02b2c" +checksum = "507752d41afcdf5961ab494eb062c3bf21f68b2ee67e45568e9028cccdd00c34" dependencies = [ "bstr", "gix-path", @@ -1821,12 +1800,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -1895,9 +1868,9 @@ dependencies = [ [[package]] name = "human_format" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3b1f728c459d27b12448862017b96ad4767b1ec2ec5e6434e99f1577f085b8" +checksum = "eaec953f16e5bcf6b8a3cb3aa959b17e5577dbd2693e94554c462c08be22624b" [[package]] name = "humansize" @@ -1910,9 +1883,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.64" +version = "0.1.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1980,9 +1953,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ "icu_collections", "icu_locale_core", @@ -1994,9 +1967,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -2013,6 +1986,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "idna" version = "1.1.0" @@ -2061,19 +2040,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -2083,9 +2052,9 @@ dependencies = [ [[package]] name = "inquire" -version = "0.9.1" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2628910d0114e9139056161d8644a2026be7b117f8498943f9437748b04c9e0a" +checksum = "979f5ab9760427ada4fa5762b2d905e5b12704fb1fada07b6bfa66aeaa586f87" dependencies = [ "bitflags", "crossterm", @@ -2139,9 +2108,9 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jiff" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67e8da4c49d6d9909fe03361f9b620f58898859f5c7aded68351e85e71ecf50" +checksum = "c867c356cc096b33f4981825ab281ecba3db0acefe60329f044c1789d94c6543" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -2154,9 +2123,9 @@ dependencies = [ [[package]] name = "jiff-static" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" +checksum = "f7946b4325269738f270bb55b3c19ab5c5040525f83fd625259422a9d25d9be5" dependencies = [ "proc-macro2", "quote", @@ -2165,9 +2134,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1283705eb0a21404d2bfd6eef2a7593d240bc42a0bdb39db0ad6fa2ec026524" +checksum = "68971ebff725b9e2ca27a601c5eb38a4c5d64422c4cbab0c535f248087eda5c2" [[package]] name = "jiff-tzdb-platform" @@ -2190,9 +2159,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "93f0862381daaec758576dcc22eb7bbf4d7efd67328553f3b45a412a51a3fb21" dependencies = [ "once_cell", "wasm-bindgen", @@ -2224,11 +2193,10 @@ dependencies = [ "emojis", "git2", "gix", - "indexmap 2.12.1", + "indexmap", "inquire", "predicates", "rexpect", - "rusty-hook", "serde", "tempfile", "xdg", @@ -2249,11 +2217,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" -version = "0.2.180" +version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "libgit2-sys" @@ -2271,19 +2245,19 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags", "libc", - "redox_syscall", + "redox_syscall 0.7.1", ] [[package]] @@ -2347,9 +2321,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "maplit" @@ -2370,15 +2344,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.6" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "memmap2" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490" +checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3" dependencies = [ "libc", ] @@ -2391,9 +2365,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "log", @@ -2401,12 +2375,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "nias" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab250442c86f1850815b5d268639dff018c0627022bc1940eb2d642ca1ce12f0" - [[package]] name = "nix" version = "0.30.1" @@ -2508,7 +2476,7 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.18", "smallvec", "windows-link", ] @@ -2536,9 +2504,9 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.8.4" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22" +checksum = "e0848c601009d37dfa3430c4666e147e49cdcf1b92ecd3e63657d8a5f19da662" dependencies = [ "memchr", "ucd-trie", @@ -2546,9 +2514,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.8.4" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f" +checksum = "11f486f1ea21e6c10ed15d5a7c77165d0ee443402f0780849d1768e7d9d6fe77" dependencies = [ "pest", "pest_generator", @@ -2556,9 +2524,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.8.4" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625" +checksum = "8040c4647b13b210a963c1ed407c1ff4fdfa01c31d6d2a098218702e6664f94f" dependencies = [ "pest", "pest_meta", @@ -2569,9 +2537,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.8.4" +version = "2.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82" +checksum = "89815c69d36021a140146f26659a81d6c2afa33d216d736dd4be5381a7362220" dependencies = [ "pest", "sha2", @@ -2641,15 +2609,15 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" [[package]] name = "portable-atomic-util" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507" +checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5" dependencies = [ "portable-atomic", ] @@ -2674,9 +2642,9 @@ dependencies = [ [[package]] name = "predicates" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" +checksum = "ada8f2932f28a27ee7b70dd6c1c39ea0675c55a36879ab92f3a715eaa1e63cfe" dependencies = [ "anstyle", "difflib", @@ -2688,25 +2656,35 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" +checksum = "cad38746f3166b4031b1a0d39ad9f954dd291e7854fcc0eed52ee41a0b50d144" [[package]] name = "predicates-tree" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" +checksum = "d0de1b847b39c8131db0467e9df1ff60e6d0562ab8e9a16e568ad0fdb372e2f2" dependencies = [ "predicates-core", "termtree", ] +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn", +] + [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -2724,9 +2702,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.42" +version = "1.0.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4" dependencies = [ "proc-macro2", ] @@ -2764,7 +2742,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] @@ -2776,22 +2754,31 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35985aa610addc02e24fc232012c86fd11f14111180f902b67e2d5331f8ebf2b" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.12.2" +version = "1.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" dependencies = [ "aho-corasick", "memchr", @@ -2801,9 +2788,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" dependencies = [ "aho-corasick", "memchr", @@ -2812,15 +2799,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c" [[package]] name = "rexpect" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1bcd4ac488e9d2d726d147031cceff5cff6425011ff1914049739770fa4726" +checksum = "a0fad980333eb2bc260e0ceb42b356f3e559f95106d14e5b22c631e6b0aef380" dependencies = [ "comma", "nix", @@ -2853,6 +2840,15 @@ dependencies = [ "ordered-multimap", ] +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + [[package]] name = "rustix" version = "0.38.44" @@ -2885,24 +2881,6 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" -[[package]] -name = "rusty-hook" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96cee9be61be7e1cbadd851e58ed7449c29c620f00b23df937cb9cbc04ac21a3" -dependencies = [ - "ci_info", - "getopts", - "nias", - "toml 0.5.11", -] - -[[package]] -name = "ryu" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" - [[package]] name = "same-file" version = "1.0.6" @@ -2968,15 +2946,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -2990,9 +2968,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -3031,9 +3009,9 @@ dependencies = [ [[package]] name = "shell-words" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" +checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" [[package]] name = "shlex" @@ -3084,9 +3062,9 @@ dependencies = [ [[package]] name = "siphasher" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" [[package]] name = "slug" @@ -3137,9 +3115,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.111" +version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ "proc-macro2", "quote", @@ -3159,12 +3137,12 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.24.0" +version = "3.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" +checksum = "0136791f7c95b1f6dd99f9cc786b91bb81c3800b639b3478e561ddb7be95e5f1" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.1", "once_cell", "rustix 1.1.3", "windows-sys 0.61.2", @@ -3209,18 +3187,18 @@ checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "thiserror" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.17" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", @@ -3270,15 +3248,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.23" @@ -3293,13 +3262,13 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "0.9.12+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" dependencies = [ "serde_core", - "serde_spanned 1.0.3", - "toml_datetime 0.7.3", + "serde_spanned 1.0.4", + "toml_datetime 0.7.5+spec-1.1.0", "toml_parser", "winnow", ] @@ -3315,9 +3284,9 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] @@ -3328,7 +3297,7 @@ version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.12.1", + "indexmap", "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", @@ -3338,9 +3307,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.9+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4" dependencies = [ "winnow", ] @@ -3386,9 +3355,9 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.22" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-normalization" @@ -3411,11 +3380,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -3474,18 +3449,27 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "1de241cdc66a9d91bd84f097039eb140cdc6eec47e0cdbaf9d932a1dd6c35866" dependencies = [ "cfg-if", "once_cell", @@ -3496,9 +3480,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "e12fdf6649048f2e3de6d7d5ff3ced779cdedee0e0baffd7dff5cdfa3abc8a52" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3506,9 +3490,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "0e63d1795c565ac3462334c1e396fd46dbf481c40f51f5072c310717bc4fb309" dependencies = [ "bumpalo", "proc-macro2", @@ -3519,13 +3503,47 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "e9f9cdac23a5ce71f6bf9f8824898a501e511892791ea2a0c6b8568c68b9cb53" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "which" version = "4.4.2" @@ -3646,16 +3664,7 @@ version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", + "windows-targets", ] [[package]] @@ -3673,31 +3682,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -3706,96 +3698,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" version = "0.7.14" @@ -3813,9 +3757,91 @@ checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] [[package]] name = "writeable" @@ -3865,18 +3891,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.30" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea879c944afe8a2b25fef16bb4ba234f47c694565e97383b36f3a878219065c" +checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.30" +version = "0.8.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf955aa904d6040f70dc8e9384444cb1030aed272ba3cb09bbc4ab9e7c1f34f5" +checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517" dependencies = [ "proc-macro2", "quote", @@ -3939,6 +3965,12 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.5.5" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c745c48e1007337ed136dc99df34128b9faa6ed542d80a1c673cf55a6d7236c8" + +[[package]] +name = "zmij" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/Cargo.toml b/Cargo.toml index e95216e..4260bbc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,7 +39,6 @@ git2 = "0.20.4" assert_cmd = "2.0.16" predicates = "3.1.2" tempfile = "3.12.0" -rusty-hook = "^0.11.2" [target.'cfg(not(windows))'.dev-dependencies] rexpect = "0.6.2" diff --git a/src/lib/questions.rs b/src/lib/questions.rs index 6f1858e..32451f9 100644 --- a/src/lib/questions.rs +++ b/src/lib/questions.rs @@ -90,13 +90,11 @@ pub struct ScopeAutocompleter { } impl ScopeAutocompleter { - pub fn get_existing_scopes(&self) -> Result> { + fn get_existing_scopes(&self) -> Result> { let repo = gix::discover(&self.config.workdir).context("could not find git repository")?; - // Get HEAD commit as starting point let head_id = repo.head_id().context("could not get HEAD")?; - // Create a revision walk starting from HEAD let walk = repo.rev_walk([head_id.detach()]) .sorting(gix::revision::walk::Sorting::ByCommitTime( @@ -105,17 +103,13 @@ impl ScopeAutocompleter { let mut scopes: Vec = Vec::new(); - // Iterate through commits for info in walk.all()? { let info = info?; - // Get the commit object let commit = repo.find_commit(info.id)?; - // Get the commit message let message = commit.message()?; - // Get the summary let summary = message.summary(); // Parse the summary - ignore errors for invalid commit messages From 14cdf12868dabe4319347020df15d79b6c3333b3 Mon Sep 17 00:00:00 2001 From: Finley Thomalla Date: Fri, 20 Feb 2026 13:09:39 +0100 Subject: [PATCH 16/19] ci: replace release-plz with release-please (#176) --- .github/workflows/call-cargo-publish.yml | 38 +++++++++++++++++ .github/workflows/push-pr-lint-test.yml | 10 +++++ .github/workflows/push-release-please.yml | 41 ++++++++++++++++++ .github/workflows/push-release-plz.yml | 51 ----------------------- .pre-commit-config.yaml | 4 ++ .release-please-manifest.json | 3 ++ release-please-config.json | 8 ++++ 7 files changed, 104 insertions(+), 51 deletions(-) create mode 100644 .github/workflows/call-cargo-publish.yml create mode 100644 .github/workflows/push-release-please.yml delete mode 100644 .github/workflows/push-release-plz.yml create mode 100644 .release-please-manifest.json create mode 100644 release-please-config.json diff --git a/.github/workflows/call-cargo-publish.yml b/.github/workflows/call-cargo-publish.yml new file mode 100644 index 0000000..768740d --- /dev/null +++ b/.github/workflows/call-cargo-publish.yml @@ -0,0 +1,38 @@ +name: cargo-publish + +permissions: + contents: read + +on: + workflow_call: + inputs: + tag_ref: + required: true + type: string + workflow_dispatch: + inputs: + tag_ref: + description: The tag reference (e.g. 'refs/tags/v3.4.0') + required: true + type: string + +jobs: + publish: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6.0.1 + with: + ref: ${{ inputs.tag_ref }} + - uses: actions/cache@v5.0.1 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} + - uses: dtolnay/rust-toolchain@stable + - name: Publish to crates.io + run: cargo publish + env: + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} diff --git a/.github/workflows/push-pr-lint-test.yml b/.github/workflows/push-pr-lint-test.yml index c1f1d5b..3614f2e 100644 --- a/.github/workflows/push-pr-lint-test.yml +++ b/.github/workflows/push-pr-lint-test.yml @@ -89,3 +89,13 @@ jobs: - run: rustup component add rustfmt clippy - run: cargo clippy --all-targets --all-features -- -D warnings - run: cargo fmt --all -- --check + + actionlint: + name: actionlint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6.0.1 + - uses: reviewdog/action-actionlint@v1.71.0 + with: + reporter: github-pr-check + fail_level: warning diff --git a/.github/workflows/push-release-please.yml b/.github/workflows/push-release-please.yml new file mode 100644 index 0000000..9401862 --- /dev/null +++ b/.github/workflows/push-release-please.yml @@ -0,0 +1,41 @@ +name: push-release-please + +permissions: + pull-requests: write + contents: write + +on: + push: + branches: + - main + +jobs: + release-please: + runs-on: ubuntu-latest + outputs: + release_created: ${{ steps.release-please.outputs.release_created }} + tag_name: ${{ steps.release-please.outputs.tag_name }} + steps: + - uses: googleapis/release-please-action@v4.4.0 + id: release-please + with: + token: ${{ secrets.GITHUB_TOKEN }} + + upload-assets: + name: Assets for koji/${{ needs.release-please.outputs.tag_name }} + needs: release-please + if: ${{ needs.release-please.outputs.release_created == 'true' }} + uses: ./.github/workflows/call-build-upload.yml + secrets: inherit + with: + package_name: koji + tag_ref: refs/tags/${{ needs.release-please.outputs.tag_name }} + + publish-crate: + name: Publish to crates.io + needs: [release-please, upload-assets] + if: ${{ needs.release-please.outputs.release_created == 'true' }} + uses: ./.github/workflows/call-cargo-publish.yml + secrets: inherit + with: + tag_ref: refs/tags/${{ needs.release-please.outputs.tag_name }} diff --git a/.github/workflows/push-release-plz.yml b/.github/workflows/push-release-plz.yml deleted file mode 100644 index 6aa7efd..0000000 --- a/.github/workflows/push-release-plz.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: push-release-plz - -permissions: - pull-requests: write - contents: write - -on: - push: - branches: - - main - -jobs: - release-plz: - runs-on: ubuntu-latest - outputs: - releases_created: ${{ steps.release-plz.outputs.releases_created }} - releases: ${{ steps.release-plz.outputs.releases }} - steps: - - name: Checkout repository - uses: actions/checkout@v6.0.1 - with: - fetch-depth: 0 - - uses: actions/cache@v5.0.1 - with: - path: | - ~/.cargo/bin/ - ~/.cargo/registry/index/ - ~/.cargo/registry/cache/ - ~/.cargo/git/db/ - key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - - name: Run release-plz - id: release-plz - uses: MarcoIeni/release-plz-action@v0.5 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} - upload-assets: - name: Assets for ${{ matrix.release.package_name }}/${{ matrix.release.version }} - needs: release-plz - if: ${{ fromJson(needs.release-plz.outputs.releases_created) == true }} - uses: ./.github/workflows/call-build-upload.yml - secrets: inherit - with: - package_name: ${{ matrix.release.package_name }} - tag_ref: refs/tags/${{ matrix.release.tag }} - strategy: - fail-fast: false - matrix: - release: ${{ fromJson(needs.release-plz.outputs.releases) }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a198f0e..48a92a1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,3 +33,7 @@ repos: language: system stages: [prepare-commit-msg] require_serial: false + - repo: https://github.com/rhysd/actionlint + rev: v1.7.11 + hooks: + - id: actionlint diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..85b7cfb --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "3.3.1" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..0f0655e --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "rust", + "include-v-in-tag": true, + "packages": { + ".": {} + } +} From 2143b9f912c4d5d950a529829da7138fd89ba3dc Mon Sep 17 00:00:00 2001 From: Finley Thomalla Date: Fri, 20 Feb 2026 13:16:35 +0100 Subject: [PATCH 17/19] ci(release-please): don't include component in tag (#178) --- release-please-config.json | 1 + 1 file changed, 1 insertion(+) diff --git a/release-please-config.json b/release-please-config.json index 0f0655e..b492e19 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -2,6 +2,7 @@ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", "release-type": "rust", "include-v-in-tag": true, + "include-component-in-tag": false, "packages": { ".": {} } From 2e766da78cd691ed5c9de8e94bc09cb9617a90fe Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Fri, 20 Feb 2026 23:19:26 -0500 Subject: [PATCH 18/19] added scoping here --- src/lib/questions.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/questions.rs b/src/lib/questions.rs index 32451f9..73c608e 100644 --- a/src/lib/questions.rs +++ b/src/lib/questions.rs @@ -90,7 +90,7 @@ pub struct ScopeAutocompleter { } impl ScopeAutocompleter { - fn get_existing_scopes(&self) -> Result> { + pub fn get_existing_scopes(&self) -> Result> { let repo = gix::discover(&self.config.workdir).context("could not find git repository")?; let head_id = repo.head_id().context("could not get HEAD")?; From ebdec6e67808998f59b1f11cce6f3fcedbfb40e0 Mon Sep 17 00:00:00 2001 From: Myles Wirth Date: Fri, 27 Feb 2026 23:54:01 -0500 Subject: [PATCH 19/19] test: cleanup and add integration tests --- tests/integration.rs | 81 +++++++++----------------------------------- 1 file changed, 16 insertions(+), 65 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index 7cedc7b..b4bbaa2 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -1,5 +1,4 @@ use git2::{IndexAddOption, Repository}; -use gix::bstr::ByteSlice; use indexmap::IndexMap; use inquire::autocompletion::Autocomplete; use koji::config::{CommitScope, Config}; @@ -43,10 +42,7 @@ fn get_last_commit(repo: &Repository) -> Result, git2::Error> { repo.find_commit(oid) } -fn do_initial_commit( - repo: &Repository, - message: &'static str, -) -> Result<(), Box> { +fn do_initial_commit(repo: &Repository, message: &'static str) -> Result<(), Box> { let mut index = repo.index()?; let tree_id = index.write_tree()?; let tree = repo.find_tree(tree_id)?; @@ -62,7 +58,6 @@ fn git_add(repo: &Repository, pattern: &str) -> Result<(), Box> { Ok(()) } - #[cfg(not(target_os = "windows"))] trait ExpectPromps { fn expect_commit_type(&mut self) -> Result; @@ -129,7 +124,6 @@ fn test_everything_correct() -> Result<(), Box> { // TODO properly test "-a" git_add(&repo, ".")?; - let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") .arg("-C") @@ -318,7 +312,6 @@ fn test_empty_breaking_text_correct() -> Result<(), Box> { fs::write(temp_dir.path().join("Cargo.toml"), "bar")?; git_add(&repo, ".")?; - let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") .arg("-C") @@ -361,14 +354,8 @@ fn test_empty_breaking_text_correct() -> Result<(), Box> { } let commit = get_last_commit(&repo)?; - assert_eq!( - commit.summary(), - Some("docs(cargo)!: rename project") - ); - assert_eq!( - commit.body(), - Some("Renamed the project to a new name.") - ); + assert_eq!(commit.summary(), Some("docs(cargo)!: rename project")); + assert_eq!(commit.body(), Some("Renamed the project to a new name.")); temp_dir.close()?; config_temp_dir.close()?; @@ -505,7 +492,6 @@ fn test_xdg_config() -> Result<(), Box> { fs::write(temp_dir.path().join("config.json"), "bar")?; git_add(&repo, ".")?; - let mut cmd = Command::new(bin_path); cmd.env("NO_COLOR", "1") .env("XDG_CONFIG_HOME", xdg_cfg_home.path().as_os_str()) @@ -862,53 +848,16 @@ fn test_scope_autocompletion() -> Result<(), Box> { Ok(()) } -#[test] -fn test_force_scope() -> Result<(), Box> { - let tempdir = tempfile::tempdir()?; - let workdir = tempdir.path(); - - // Init git repo - let _repo = git2::Repository::init(workdir)?; - - // Setup config with a configured scope and force_scope = true - let mut commit_scopes = IndexMap::new(); - commit_scopes.insert( - "app".into(), - CommitScope { - name: "app".into(), - description: Some("App code".into()), - }, - ); - - let config = Config { - commit_scopes, - workdir: workdir.to_path_buf(), - autocomplete: true, - breaking_changes: false, - commit_types: IndexMap::new(), - emoji: false, - issues: false, - sign: false, - force_scope: true, - allow_empty_scope: true, - }; - - // We can't easily test the interactive prompt here without rexpect, - // but we can test that the logic in ScopeAutocompleter only returns configured scopes - // IF we were to use it. - // Wait, the logic for force_scope is in prompt_scope, not in ScopeAutocompleter. - - // Let's add an integration test with rexpect for force_scope - Ok(()) -} - #[test] #[cfg(not(target_os = "windows"))] fn test_force_scope_integration() -> Result<(), Box> { let (bin_path, temp_dir, repo) = setup_test_dir()?; let config_temp_dir = setup_config_home()?; - fs::write(temp_dir.path().join(".koji.toml"), "force_scope = true\n[[commit_scopes]]\nname = \"app\"")?; + fs::write( + temp_dir.path().join(".koji.toml"), + "force_scope = true\n[[commit_scopes]]\nname = \"app\"", + )?; fs::write(temp_dir.path().join("a.txt"), "foo")?; git_add(&repo, ".")?; @@ -925,9 +874,9 @@ fn test_force_scope_integration() -> Result<(), Box> { process.send_line("feat")?; process.flush()?; process.expect_scope()?; - // In Select mode, "app" should be the first and only option. + // In Select mode, "app" should be the first and only option. // Pressing enter should select "app". - process.send_line("")?; + process.send_line("")?; process.flush()?; process.expect_summary()?; process.send_line("test force scope")?; @@ -956,7 +905,10 @@ fn test_require_scope_integration() -> Result<(), Box> { let (bin_path, temp_dir, repo) = setup_test_dir()?; let config_temp_dir = setup_config_home()?; - fs::write(temp_dir.path().join(".koji.toml"), "allow_empty_scope = false")?; + fs::write( + temp_dir.path().join(".koji.toml"), + "allow_empty_scope = false", + )?; fs::write(temp_dir.path().join("a.txt"), "foo")?; git_add(&repo, ".")?; @@ -974,13 +926,13 @@ fn test_require_scope_integration() -> Result<(), Box> { process.flush()?; process.expect_scope()?; // Try to skip by sending empty line - process.send_line("")?; + process.send_line("")?; process.flush()?; - + // It should NOT proceed to summary, but show error. // Inquire shows error message "A scope is required" process.exp_string("A scope is required")?; - + // Now provide a scope process.send_line("required-scope")?; process.flush()?; @@ -1005,4 +957,3 @@ fn test_require_scope_integration() -> Result<(), Box> { config_temp_dir.close()?; Ok(()) } -