From 81297cf2b85072ad13824f9821a0102dc6497f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Mon, 9 Jun 2025 18:23:33 +0200 Subject: [PATCH 001/296] feat!: add `debug_track_path` and `blame_path` --- gix-blame/src/file/function.rs | 73 +++++++++++++++++++++++++++++++--- gix-blame/src/lib.rs | 2 +- gix-blame/src/types.rs | 26 ++++++++++++ gix-blame/tests/blame.rs | 7 ++++ 4 files changed, 102 insertions(+), 6 deletions(-) diff --git a/gix-blame/src/file/function.rs b/gix-blame/src/file/function.rs index b69780ae244..df52850f35c 100644 --- a/gix-blame/src/file/function.rs +++ b/gix-blame/src/file/function.rs @@ -10,7 +10,7 @@ use gix_traverse::commit::find as find_commit; use smallvec::SmallVec; use super::{process_changes, Change, UnblamedHunk}; -use crate::{BlameEntry, Error, Options, Outcome, Statistics}; +use crate::{types::BlamePathEntry, BlameEntry, Error, Options, Outcome, Statistics}; /// Produce a list of consecutive [`BlameEntry`] instances to indicate in which commits the ranges of the file /// at `suspect:` originated in. @@ -115,6 +115,12 @@ pub fn file( let mut out = Vec::new(); let mut diff_state = gix_diff::tree::State::default(); let mut previous_entry: Option<(ObjectId, ObjectId)> = None; + let mut blame_path = if options.debug_track_path { + Some(Vec::new()) + } else { + None + }; + 'outer: while let Some(suspect) = queue.pop_value() { stats.commits_traversed += 1; if hunks_to_blame.is_empty() { @@ -156,6 +162,22 @@ pub fn file( // true here. We could perhaps use diff-tree-to-tree to compare `suspect` against // an empty tree to validate this assumption. if unblamed_to_out_is_done(&mut hunks_to_blame, &mut out, suspect) { + if let Some(ref mut blame_path) = blame_path { + let entry = previous_entry + .take() + .filter(|(id, _)| *id == suspect) + .map(|(_, entry)| entry); + + let blame_path_entry = BlamePathEntry { + source_file_path: current_file_path.clone(), + previous_source_file_path: None, + commit_id: suspect, + blob_id: entry.unwrap_or(ObjectId::null(gix_hash::Kind::Sha1)), + previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), + }; + blame_path.push(blame_path_entry); + } + break 'outer; } } @@ -271,12 +293,23 @@ pub fn file( }; match modification { - TreeDiffChange::Addition => { + TreeDiffChange::Addition { id } => { if more_than_one_parent { // Do nothing under the assumption that this always (or almost always) // implies that the file comes from a different parent, compared to which // it was modified, not added. } else if unblamed_to_out_is_done(&mut hunks_to_blame, &mut out, suspect) { + if let Some(ref mut blame_path) = blame_path { + let blame_path_entry = BlamePathEntry { + source_file_path: current_file_path.clone(), + previous_source_file_path: None, + commit_id: suspect, + blob_id: id, + previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), + }; + blame_path.push(blame_path_entry); + } + break 'outer; } } @@ -295,6 +328,16 @@ pub fn file( &mut stats, )?; hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, parent_id); + if let Some(ref mut blame_path) = blame_path { + let blame_path_entry = BlamePathEntry { + source_file_path: current_file_path.clone(), + previous_source_file_path: Some(current_file_path.clone()), + commit_id: suspect, + blob_id: id, + previous_blob_id: previous_id, + }; + blame_path.push(blame_path_entry); + } } TreeDiffChange::Rewrite { source_location, @@ -313,9 +356,26 @@ pub fn file( )?; hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, parent_id); + let mut has_blame_been_passed = false; + for hunk in hunks_to_blame.iter_mut() { if hunk.has_suspect(&parent_id) { hunk.source_file_name = Some(source_location.clone()); + + has_blame_been_passed = true; + } + } + + if has_blame_been_passed { + if let Some(ref mut blame_path) = blame_path { + let blame_path_entry = BlamePathEntry { + source_file_path: current_file_path.clone(), + previous_source_file_path: Some(source_location.clone()), + commit_id: suspect, + blob_id: id, + previous_blob_id: source_id, + }; + blame_path.push(blame_path_entry); } } } @@ -351,6 +411,7 @@ pub fn file( entries: coalesce_blame_entries(out), blob: blamed_file_blob, statistics: stats, + blame_path, }) } @@ -435,7 +496,9 @@ fn coalesce_blame_entries(lines_blamed: Vec) -> Vec { /// The union of [`gix_diff::tree::recorder::Change`] and [`gix_diff::tree_with_rewrites::Change`], /// keeping only the blame-relevant information. enum TreeDiffChange { - Addition, + Addition { + id: ObjectId, + }, Deletion, Modification { previous_id: ObjectId, @@ -453,7 +516,7 @@ impl From for TreeDiffChange { use gix_diff::tree::recorder::Change; match value { - Change::Addition { .. } => Self::Addition, + Change::Addition { oid, .. } => Self::Addition { id: oid }, Change::Deletion { .. } => Self::Deletion, Change::Modification { previous_oid, oid, .. } => Self::Modification { previous_id: previous_oid, @@ -468,7 +531,7 @@ impl From for TreeDiffChange { use gix_diff::tree_with_rewrites::Change; match value { - Change::Addition { .. } => Self::Addition, + Change::Addition { id, .. } => Self::Addition { id }, Change::Deletion { .. } => Self::Deletion, Change::Modification { previous_id, id, .. } => Self::Modification { previous_id, id }, Change::Rewrite { diff --git a/gix-blame/src/lib.rs b/gix-blame/src/lib.rs index e811ab88ddb..2a31c874f8f 100644 --- a/gix-blame/src/lib.rs +++ b/gix-blame/src/lib.rs @@ -17,7 +17,7 @@ mod error; pub use error::Error; mod types; -pub use types::{BlameEntry, BlameRanges, Options, Outcome, Statistics}; +pub use types::{BlameEntry, BlamePathEntry, BlameRanges, Options, Outcome, Statistics}; mod file; pub use file::function::file; diff --git a/gix-blame/src/types.rs b/gix-blame/src/types.rs index 5672eaf679d..8cf94a23d33 100644 --- a/gix-blame/src/types.rs +++ b/gix-blame/src/types.rs @@ -149,6 +149,30 @@ pub struct Options { pub since: Option, /// Determine if rename tracking should be performed, and how. pub rewrites: Option, + /// Collect debug information whenever there's a diff or rename that affects the outcome of a + /// blame. + pub debug_track_path: bool, +} + +/// Represents a change during history traversal for blame. It is supposed to capture enough +/// information to allow reconstruction of the way a blame was performed, i. e. the path the +/// history traversal, combined with repeated diffing of two subsequent states in this history, has +/// taken. +/// +/// This is intended for debugging purposes. +#[derive(Clone, Debug)] +pub struct BlamePathEntry { + /// The path to the *Source File* in the blob after the change. + pub source_file_path: BString, + /// The path to the *Source File* in the blob before the change. Allows + /// detection of renames. `None` for root commits. + pub previous_source_file_path: Option, + /// The commit id associated with the state after the change. + pub commit_id: ObjectId, + /// The blob id associated with the state after the change. + pub blob_id: ObjectId, + /// The blob id associated with the state before the change. + pub previous_blob_id: ObjectId, } /// The outcome of [`file()`](crate::file()). @@ -161,6 +185,8 @@ pub struct Outcome { pub blob: Vec, /// Additional information about the amount of work performed to produce the blame. pub statistics: Statistics, + /// Contains a log of all changes that affected the outcome of this blame. + pub blame_path: Option>, } /// Additional information about the performed operations. diff --git a/gix-blame/tests/blame.rs b/gix-blame/tests/blame.rs index bec002c6dd7..cdd91f852a9 100644 --- a/gix-blame/tests/blame.rs +++ b/gix-blame/tests/blame.rs @@ -232,6 +232,7 @@ macro_rules! mktest { range: BlameRanges::default(), since: None, rewrites: Some(gix_diff::Rewrites::default()), + debug_track_path: false, }, )? .entries; @@ -317,6 +318,7 @@ fn diff_disparity() { range: BlameRanges::default(), since: None, rewrites: Some(gix_diff::Rewrites::default()), + debug_track_path: false, }, ) .unwrap() @@ -352,6 +354,7 @@ fn since() -> gix_testtools::Result { range: BlameRanges::default(), since: Some(gix_date::parse("2025-01-31", None)?), rewrites: Some(gix_diff::Rewrites::default()), + debug_track_path: false, }, )? .entries; @@ -391,6 +394,7 @@ mod blame_ranges { range: BlameRanges::from_range(1..=2), since: None, rewrites: Some(gix_diff::Rewrites::default()), + debug_track_path: false, }, )? .entries; @@ -431,6 +435,7 @@ mod blame_ranges { range: ranges, since: None, rewrites: None, + debug_track_path: false, }, )? .entries; @@ -471,6 +476,7 @@ mod blame_ranges { range: ranges, since: None, rewrites: None, + debug_track_path: false, }, )? .entries; @@ -516,6 +522,7 @@ mod rename_tracking { range: BlameRanges::default(), since: None, rewrites: Some(gix_diff::Rewrites::default()), + debug_track_path: false, }, )? .entries; From 4afc51d4ba669ad3c4b26f1c4222442d1dab1695 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Mon, 9 Jun 2025 18:42:10 +0200 Subject: [PATCH 002/296] Adapt to changes in `gix-blame` --- src/plumbing/main.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plumbing/main.rs b/src/plumbing/main.rs index aedee5cc052..8db7d3603be 100644 --- a/src/plumbing/main.rs +++ b/src/plumbing/main.rs @@ -1591,6 +1591,7 @@ pub fn main() -> Result<()> { range: gix::blame::BlameRanges::from_ranges(ranges), since, rewrites: Some(gix::diff::Rewrites::default()), + debug_track_path: false, }, out, statistics.then_some(err), From b01d624ee48f9131ac622173ba18bb07326b2ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Mon, 9 Jun 2025 18:24:36 +0200 Subject: [PATCH 003/296] Add `it blame-copy-royal` --- tests/it/Cargo.toml | 2 +- tests/it/src/args.rs | 24 ++ tests/it/src/commands/blame_copy_royal.rs | 302 ++++++++++++++++++++++ tests/it/src/commands/mod.rs | 3 + tests/it/src/main.rs | 13 + 5 files changed, 343 insertions(+), 1 deletion(-) create mode 100644 tests/it/src/commands/blame_copy_royal.rs diff --git a/tests/it/Cargo.toml b/tests/it/Cargo.toml index 5895ee5dab8..197d37a2179 100644 --- a/tests/it/Cargo.toml +++ b/tests/it/Cargo.toml @@ -17,6 +17,6 @@ path = "src/main.rs" [dependencies] anyhow = "1.0.98" clap = { version = "4.5.39", features = ["derive"] } -gix = { version = "^0.72.1", path = "../../gix", default-features = false, features = ["attributes", "revision"] } +gix = { version = "^0.72.1", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "revision"] } once_cell = "1.21.3" regex = { version = "1.11.1", default-features = false, features = ["std"] } diff --git a/tests/it/src/args.rs b/tests/it/src/args.rs index 85c95d92648..28f023bb480 100644 --- a/tests/it/src/args.rs +++ b/tests/it/src/args.rs @@ -14,6 +14,30 @@ pub struct Args { #[derive(Debug, clap::Subcommand)] pub enum Subcommands { + /// Extract a file’s history so that its blame shows the same characteristics, in particular + /// bugs, as the original, but in a way that can't be traced back uniquely to its source. + /// + /// The idea is that we don't want to deal with licensing, it's more about patterns in order to + /// reproduce cases for tests. + #[clap(visible_alias = "bcr")] + BlameCopyRoyal { + /// Don't really copy anything. + #[clap(long, short = 'n')] + dry_run: bool, + /// The git root whose history to extract the blame-relevant parts from. + worktree_dir: PathBuf, + /// The directory into which to copy the files. + destination_dir: PathBuf, + /// The file to extract the history for. + file: std::ffi::OsString, + /// Do not use `copy-royal` to obfuscate the content of blobs, but copy it verbatim. + /// + /// Note that this should only be done if the source repository only contains information + /// you’re willing to share. Also note that the obfuscation leaves the structure of the + /// source intact, so a few of its properties can still be inferred. + #[clap(long)] + verbatim: bool, + }, /// Copy a tree so that it diffs the same but can't be traced back uniquely to its source. /// /// The idea is that we don't want to deal with licensing, it's more about patterns in order to diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs new file mode 100644 index 00000000000..72b4204b1bb --- /dev/null +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -0,0 +1,302 @@ +pub struct Options { + pub verbatim: bool, +} + +pub(super) mod function { + use anyhow::Context; + use gix::{ + blame::BlamePathEntry, + bstr::{BStr, ByteSlice}, + objs::FindExt, + ObjectId, + }; + use std::{ + collections::BTreeSet, + ffi::OsStr, + path::{Path, PathBuf}, + }; + + use super::Options; + + pub fn blame_copy_royal( + dry_run: bool, + worktree_dir: &Path, + destination_dir: PathBuf, + file: &OsStr, + Options { verbatim }: Options, + ) -> anyhow::Result<()> { + let prefix = if dry_run { "WOULD" } else { "Will" }; + let repo = gix::open(worktree_dir)?; + + let suspect: gix::ObjectId = repo.head()?.into_peeled_id()?.into(); + let cache: Option = repo.commit_graph_if_enabled()?; + let mut resource_cache = repo.diff_resource_cache_for_tree_diff()?; + let diff_algorithm = repo.diff_algorithm()?; + + let options = gix::blame::Options { + diff_algorithm, + range: gix::blame::BlameRanges::default(), + since: None, + rewrites: Some(gix::diff::Rewrites::default()), + debug_track_path: true, + }; + + let index = repo.index_or_empty()?; + + // The following block, including the `TODO` comment, comes from + // `gitoxide_core::repository::blame`. + let file = gix::path::os_str_into_bstr(file)?; + let specs = repo.pathspec( + false, + [file], + true, + &index, + gix::worktree::stack::state::attributes::Source::WorktreeThenIdMapping.adjust_for_bare(repo.is_bare()), + )?; + // TODO: there should be a way to normalize paths without going through patterns, at least in this case maybe? + // `Search` actually sorts patterns by excluding or not, all that can lead to strange results. + let file = specs + .search() + .patterns() + .map(|p| p.path().to_owned()) + .next() + .expect("exactly one pattern"); + + let outcome = gix::blame::file( + &repo.objects, + suspect, + cache, + &mut resource_cache, + file.as_bstr(), + options, + )?; + + let blame_path = outcome + .blame_path + .expect("blame path to be present as `debug_track_path == true`"); + + // TODO + // Potentially make `"assets"` configurable (it is in `git_to_sh`). + let assets = destination_dir.join("assets"); + + eprintln!("{prefix} create directory '{assets}'", assets = assets.display()); + + if !dry_run { + std::fs::create_dir_all(&assets)?; + } + + let mut buf = Vec::new(); + + for blame_path_entry in &blame_path { + let src: &BStr = blame_path_entry.source_file_path.as_bstr(); + let dst = assets.join(format!("{}.commit", blame_path_entry.commit_id)); + + eprintln!( + "{prefix} copy file '{}' at commit {} to '{dst}'", + src, + blame_path_entry.commit_id, + dst = dst.display() + ); + + if !dry_run { + let blob = repo.objects.find_blob(&blame_path_entry.blob_id, &mut buf)?.data; + + if verbatim { + std::fs::write(dst, blob)?; + } else { + let blob = std::str::from_utf8(blob).with_context(|| { + format!( + "Entry in blob '{blob_id}' was not valid UTF8 and can't be remapped", + blob_id = blame_path_entry.blob_id + ) + })?; + + let blob = crate::commands::copy_royal::remapped(blob); + + std::fs::write(dst, blob)?; + } + } + } + + let mut blame_script = BlameScript::new(blame_path, Options { verbatim }); + + blame_script.generate()?; + + let script_file = destination_dir.join("create-history.sh"); + + eprintln!( + "{prefix} write script file at '{script_file}'", + script_file = script_file.display() + ); + + if !dry_run { + std::fs::write(script_file, blame_script.script)?; + } + + Ok(()) + } + + struct BlameScript { + blame_path: Vec, + seen: BTreeSet, + script: String, + options: Options, + } + + impl BlameScript { + fn new(blame_path: Vec, options: Options) -> Self { + let mut script = String::new(); + + script.push_str( + r"#!/bin/sh + +set -e + +git init +echo .gitignore >> .gitignore +echo assets/ >> .gitignore +echo create-history.sh >> .gitignore + +", + ); + + Self { + blame_path, + seen: BTreeSet::default(), + script, + options, + } + } + + fn generate(&mut self) -> anyhow::Result<()> { + // `self.blame_path`, before calling `reverse`, has parents before children, with the + // history’s root being the last element. We reverse the order in place so that all + // methods can rely on the assumption that the root comes first, followed by its + // descendants. That way, we can use a simple `for` loop to iterate through + // `self.blame_path` below. + self.blame_path.reverse(); + + for blame_path_entry in self.blame_path.clone() { + if !self.seen.contains(&blame_path_entry.commit_id) { + self.process_entry(&blame_path_entry)?; + } + + self.seen.insert(blame_path_entry.commit_id); + } + + Ok(()) + } + + fn process_entry(&mut self, blame_path_entry: &BlamePathEntry) -> anyhow::Result<()> { + let source_file_path = blame_path_entry.source_file_path.clone(); + let parents = self.parents_of(blame_path_entry); + + let src = if self.options.verbatim { + source_file_path.clone() + } else { + let source_file_path = std::str::from_utf8(source_file_path.as_slice()).with_context(|| { + format!("Source file path '{source_file_path}' was not valid UTF8 and can't be remapped",) + })?; + + crate::commands::copy_royal::remapped(source_file_path).into() + }; + let commit_id = blame_path_entry.commit_id; + + let delete_previous_file_script = match &blame_path_entry.previous_source_file_path { + Some(previous_source_file_path) if source_file_path != *previous_source_file_path => { + let src = if self.options.verbatim { + previous_source_file_path.to_string() + } else { + let source_file_path = + std::str::from_utf8(previous_source_file_path.as_slice()).with_context(|| { + format!("Source file path '{previous_source_file_path}' was not valid UTF8 and can't be remapped",) + })?; + + crate::commands::copy_royal::remapped(source_file_path) + }; + + format!( + r"# delete previous version of file +git rm {src} +" + ) + } + _ => String::new(), + }; + + let script = format!( + r"# make file {src} contain content at commit {commit_id} +mkdir -p $(dirname {src}) +cp ./assets/{commit_id}.commit ./{src} +# create commit +git add {src} +git commit -m {commit_id} +" + ); + + if parents.is_empty() { + self.script.push_str(delete_previous_file_script.as_str()); + self.script.push_str(script.as_str()); + } else { + let ([first], rest) = parents.split_at(1) else { + unreachable!(); + }; + + self.script + .push_str(format!("git checkout tag-{}\n", first.commit_id).as_str()); + + if rest.is_empty() { + self.script.push_str(delete_previous_file_script.as_str()); + self.script.push_str(script.as_str()); + } else { + self.script.push_str( + format!( + "git merge --no-commit {} || true\n", + rest.iter() + .map(|blame_path_entry| format!("tag-{}", blame_path_entry.commit_id)) + .collect::>() + .join(" ") + ) + .as_str(), + ); + + self.script.push_str(delete_previous_file_script.as_str()); + self.script.push_str(script.as_str()); + } + } + + self.script.push_str(format!("git tag tag-{commit_id}\n\n").as_str()); + + Ok(()) + } + + fn parents_of(&self, child: &BlamePathEntry) -> Vec { + // In almost all cases, `children` will only have one element. The exception are merge + // commits where there’s changes against each parent. Each of these changes would + // produce a diff that’s represented in `self.blame_path`. + let children = self + .blame_path + .iter() + .enumerate() + .filter(|(_, x)| x.commit_id == child.commit_id); + + let parents = children + .filter_map(|(index, child)| { + let parent_blob_id = child.previous_blob_id; + let parent_source_file_path = &child.previous_source_file_path; + + // When we search for a parent we only have to consider entries up to and + // excluding `index` as anything after `index` can only be a child. + self.blame_path[..index] + .iter() + .rfind(|&x| { + x.blob_id == parent_blob_id && Some(&x.source_file_path) == parent_source_file_path.as_ref() + }) + .cloned() + }) + .collect(); + + parents + } + } +} diff --git a/tests/it/src/commands/mod.rs b/tests/it/src/commands/mod.rs index ae00a26a8d7..6bec01671df 100644 --- a/tests/it/src/commands/mod.rs +++ b/tests/it/src/commands/mod.rs @@ -1,3 +1,6 @@ +pub mod blame_copy_royal; +pub use blame_copy_royal::function::blame_copy_royal; + pub mod copy_royal; pub use copy_royal::function::copy_royal; diff --git a/tests/it/src/main.rs b/tests/it/src/main.rs index f18dd3450be..d2799b99cb4 100644 --- a/tests/it/src/main.rs +++ b/tests/it/src/main.rs @@ -25,6 +25,19 @@ fn main() -> anyhow::Result<()> { max_count: count, }, ), + Subcommands::BlameCopyRoyal { + dry_run, + worktree_dir: worktree_root, + destination_dir, + file, + verbatim, + } => commands::blame_copy_royal( + dry_run, + &worktree_root, + destination_dir, + &file, + commands::blame_copy_royal::Options { verbatim }, + ), Subcommands::CopyRoyal { dry_run, worktree_dir: worktree_root, From 6f569cea08297501f332f4d7114065df38fa98f7 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 15 Jun 2025 20:51:52 +0200 Subject: [PATCH 004/296] update `hashbrown` to 0.15. --- gix-index/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gix-index/Cargo.toml b/gix-index/Cargo.toml index cf34775d764..6c443032833 100644 --- a/gix-index/Cargo.toml +++ b/gix-index/Cargo.toml @@ -34,7 +34,7 @@ gix-lock = { version = "^17.1.0", path = "../gix-lock" } gix-fs = { version = "^0.15.0", path = "../gix-fs" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } -hashbrown = "0.14.3" +hashbrown = "0.15.4" fnv = "1.0.7" thiserror = "2.0.0" memmap2 = "0.9.0" From c1d0868c331c2f8ca8b22d22ff68744926a907b3 Mon Sep 17 00:00:00 2001 From: blinxen Date: Sun, 15 Jun 2025 20:23:09 +0200 Subject: [PATCH 005/296] chore!: Update hashbrown to the latest version This updates re-exports, removing `raw` and adding `hash_table`. --- Cargo.lock | 60 ++++++++-------------------------------- gix-hashtable/Cargo.toml | 5 +--- gix-hashtable/src/lib.rs | 2 +- 3 files changed, 14 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b04d4447a1..2cc5787b025 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,18 +17,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy 0.7.35", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -1841,7 +1829,7 @@ name = "gix-hashtable" version = "0.8.1" dependencies = [ "gix-hash", - "hashbrown 0.14.5", + "hashbrown 0.15.4", "parking_lot", ] @@ -1879,7 +1867,7 @@ dependencies = [ "gix-traverse", "gix-utils", "gix-validate", - "hashbrown 0.14.5", + "hashbrown 0.15.4", "itoa", "libc", "memmap2", @@ -2702,16 +2690,12 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -2724,7 +2708,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", ] [[package]] @@ -2996,7 +2980,7 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17d34b7d42178945f775e84bc4c36dde7c1c6cdfea656d3354d009056f2bb3d2" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", ] [[package]] @@ -3006,7 +2990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.4", ] [[package]] @@ -3282,7 +3266,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.53.0", ] [[package]] @@ -3377,7 +3361,7 @@ version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", ] [[package]] @@ -3831,7 +3815,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.8.23", + "zerocopy", ] [[package]] @@ -5375,7 +5359,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -5866,33 +5850,13 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" -dependencies = [ - "zerocopy-derive 0.7.35", -] - [[package]] name = "zerocopy" version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" dependencies = [ - "zerocopy-derive 0.8.23", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.101", + "zerocopy-derive", ] [[package]] diff --git a/gix-hashtable/Cargo.toml b/gix-hashtable/Cargo.toml index 31fadc49451..3b84f51cac2 100644 --- a/gix-hashtable/Cargo.toml +++ b/gix-hashtable/Cargo.toml @@ -16,8 +16,5 @@ doctest = false [dependencies] parking_lot = "0.12.4" -hashbrown = { version = "0.14.0", default-features = false, features = [ - "inline-more", - "raw" -] } +hashbrown = { version = "0.15.4", default-features = false, features = ["inline-more"] } gix-hash = { version = "^0.18.0", path = "../gix-hash" } diff --git a/gix-hashtable/src/lib.rs b/gix-hashtable/src/lib.rs index 54935bcbca7..dab18be0f06 100644 --- a/gix-hashtable/src/lib.rs +++ b/gix-hashtable/src/lib.rs @@ -5,7 +5,7 @@ #![forbid(unsafe_code)] use gix_hash::ObjectId; -pub use hashbrown::{hash_map, hash_set, raw, Equivalent}; +pub use hashbrown::{hash_map, hash_set, hash_table, Equivalent}; /// thread-safe types pub mod sync { From 62e4bab024ee1cdefe4026e35098da8fff18fb0d Mon Sep 17 00:00:00 2001 From: ralphmodales Date: Mon, 16 Jun 2025 14:11:54 +0800 Subject: [PATCH 006/296] add committer fallback for fetch --- gix/src/clone/fetch/mod.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gix/src/clone/fetch/mod.rs b/gix/src/clone/fetch/mod.rs index 65210022c2e..86a07b8523d 100644 --- a/gix/src/clone/fetch/mod.rs +++ b/gix/src/clone/fetch/mod.rs @@ -1,6 +1,7 @@ use crate::{ bstr::{BString, ByteSlice}, clone::PrepareFetch, + config::tree::gitoxide, }; /// The error returned by [`PrepareFetch::fetch_only()`]. @@ -80,6 +81,19 @@ impl PrepareFetch { .as_mut() .expect("user error: multiple calls are allowed only until it succeeds"); + if repo.committer().is_none() { + let mut config = gix_config::File::new(gix_config::file::Metadata::api()); + config + .set_raw_value(&gitoxide::Committer::NAME_FALLBACK, "no name configured during fetch") + .expect("works - statically known"); + config + .set_raw_value(&gitoxide::Committer::EMAIL_FALLBACK, "noEmailAvailable@example.com") + .expect("works - statically known"); + let mut repo_config = repo.config_snapshot_mut(); + repo_config.append(config); + repo_config.commit().expect("configuration is still valid"); + } + if !self.config_overrides.is_empty() { let mut snapshot = repo.config_snapshot_mut(); snapshot.append_config(&self.config_overrides, gix_config::Source::Api)?; From 90c2bb8701beb21a07f7dcf41401b863c638824a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Tue, 17 Jun 2025 18:11:45 +0200 Subject: [PATCH 007/296] Add `index` to `BlamePathEntry` --- gix-blame/src/file/function.rs | 18 +++++++++++------- gix-blame/src/types.rs | 3 +++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/gix-blame/src/file/function.rs b/gix-blame/src/file/function.rs index df52850f35c..d78777ac984 100644 --- a/gix-blame/src/file/function.rs +++ b/gix-blame/src/file/function.rs @@ -174,6 +174,7 @@ pub fn file( commit_id: suspect, blob_id: entry.unwrap_or(ObjectId::null(gix_hash::Kind::Sha1)), previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), + index: 0, }; blame_path.push(blame_path_entry); } @@ -263,13 +264,13 @@ pub fn file( } let more_than_one_parent = parent_ids.len() > 1; - for (parent_id, parent_commit_time) in parent_ids { - queue.insert(parent_commit_time, parent_id); + for (index, (parent_id, parent_commit_time)) in parent_ids.iter().enumerate() { + queue.insert(*parent_commit_time, *parent_id); let changes_for_file_path = tree_diff_at_file_path( &odb, current_file_path.as_ref(), suspect, - parent_id, + *parent_id, cache.as_ref(), &mut stats, &mut diff_state, @@ -284,10 +285,10 @@ pub fn file( // None of the changes affected the file we’re currently blaming. // Copy blame to parent. for unblamed_hunk in &mut hunks_to_blame { - unblamed_hunk.clone_blame(suspect, parent_id); + unblamed_hunk.clone_blame(suspect, *parent_id); } } else { - pass_blame_from_to(suspect, parent_id, &mut hunks_to_blame); + pass_blame_from_to(suspect, *parent_id, &mut hunks_to_blame); } continue; }; @@ -306,6 +307,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), + index, }; blame_path.push(blame_path_entry); } @@ -327,7 +329,7 @@ pub fn file( options.diff_algorithm, &mut stats, )?; - hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, parent_id); + hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, *parent_id); if let Some(ref mut blame_path) = blame_path { let blame_path_entry = BlamePathEntry { source_file_path: current_file_path.clone(), @@ -335,6 +337,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: previous_id, + index, }; blame_path.push(blame_path_entry); } @@ -354,7 +357,7 @@ pub fn file( options.diff_algorithm, &mut stats, )?; - hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, parent_id); + hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, *parent_id); let mut has_blame_been_passed = false; @@ -374,6 +377,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: source_id, + index, }; blame_path.push(blame_path_entry); } diff --git a/gix-blame/src/types.rs b/gix-blame/src/types.rs index 8cf94a23d33..bd3502ef993 100644 --- a/gix-blame/src/types.rs +++ b/gix-blame/src/types.rs @@ -173,6 +173,9 @@ pub struct BlamePathEntry { pub blob_id: ObjectId, /// The blob id associated with the state before the change. pub previous_blob_id: ObjectId, + /// When there is more than one `BlamePathEntry` for a commit, this indicates to which parent + /// commit the change is related. + pub index: usize, } /// The outcome of [`file()`](crate::file()). From 952c577b7b84725c49e3273eb10f235d1dd9e2ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Tue, 17 Jun 2025 18:12:11 +0200 Subject: [PATCH 008/296] Sort parents by `index` --- tests/it/src/commands/blame_copy_royal.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index 72b4204b1bb..1f9188288e5 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -274,20 +274,24 @@ git commit -m {commit_id} // In almost all cases, `children` will only have one element. The exception are merge // commits where there’s changes against each parent. Each of these changes would // produce a diff that’s represented in `self.blame_path`. - let children = self + let mut children: Vec<_> = self .blame_path .iter() .enumerate() - .filter(|(_, x)| x.commit_id == child.commit_id); + .filter(|(_, x)| x.commit_id == child.commit_id) + .collect(); + + children.sort_by_key(|(_, x)| x.index); let parents = children + .iter() .filter_map(|(index, child)| { let parent_blob_id = child.previous_blob_id; let parent_source_file_path = &child.previous_source_file_path; // When we search for a parent we only have to consider entries up to and // excluding `index` as anything after `index` can only be a child. - self.blame_path[..index] + self.blame_path[..(*index)] .iter() .rfind(|&x| { x.blob_id == parent_blob_id && Some(&x.source_file_path) == parent_source_file_path.as_ref() From e768c94b9035fc7a026efcafee8023faa0886d4e Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Tue, 17 Jun 2025 20:47:57 -0700 Subject: [PATCH 009/296] Upgrade to zip 4, which uses zlib-rs by default --- Cargo.lock | 111 ++++++++++++++++----------------------- gix-archive/Cargo.toml | 5 +- gix-archive/src/write.rs | 2 +- 3 files changed, 49 insertions(+), 69 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2cc5787b025..c4b6e45c433 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -274,7 +274,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -352,7 +352,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.101", + "syn 2.0.103", "which", ] @@ -486,9 +486,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -574,7 +574,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -912,7 +912,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -939,7 +939,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -1097,9 +1097,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ced92e76e966ca2fd84c8f7aa01a4aea65b0eb6648d72f7c8f3e2764a67fece" +checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", "libz-rs-sys", @@ -1911,7 +1911,7 @@ version = "0.1.5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "trybuild", ] @@ -3139,7 +3139,7 @@ checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -3293,9 +3293,9 @@ dependencies = [ [[package]] name = "libz-rs-sys" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6489ca9bd760fe9642d7644e827b0c9add07df89857b0416ee15c1cc1a3b8c5a" +checksum = "172a788537a2221661b480fee8dc5f96c580eb34fa88764d3205dc356c7e4221" dependencies = [ "zlib-rs", ] @@ -3395,14 +3395,14 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" @@ -3436,9 +3436,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -3633,7 +3633,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -3835,7 +3835,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" dependencies = [ "proc-macro2", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4381,7 +4381,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4439,7 +4439,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4514,12 +4514,6 @@ dependencies = [ "libc", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - [[package]] name = "similar" version = "2.7.0" @@ -4561,7 +4555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4601,7 +4595,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4629,9 +4623,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.101" +version = "2.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" dependencies = [ "proc-macro2", "quote", @@ -4655,7 +4649,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4774,7 +4768,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4785,7 +4779,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -4986,7 +4980,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -5238,7 +5232,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "wasm-bindgen-shared", ] @@ -5273,7 +5267,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5430,7 +5424,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -5441,7 +5435,7 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -5769,9 +5763,9 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -5846,7 +5840,7 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "synstructure", ] @@ -5867,7 +5861,7 @@ checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] @@ -5887,7 +5881,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", "synstructure", ] @@ -5927,37 +5921,24 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.101", + "syn 2.0.103", ] [[package]] name = "zip" -version = "4.0.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "153a6fff49d264c4babdcfa6b4d534747f520e56e8f0f384f3b808c4b64cc1fd" +checksum = "af7dcdb4229c0e79c2531a24de7726a0e980417a74fb4d030a35f535665439a0" dependencies = [ "arbitrary", "crc32fast", "flate2", "indexmap", "memchr", - "zopfli", ] [[package]] name = "zlib-rs" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "868b928d7949e09af2f6086dfc1e01936064cc7a819253bce650d4e2a2d63ba8" - -[[package]] -name = "zopfli" -version = "0.8.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfc5ee405f504cd4984ecc6f14d02d55cfda60fa4b689434ef4102aae150cd7" -dependencies = [ - "bumpalo", - "crc32fast", - "log", - "simd-adler32", -] +checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index d45d86888b2..945bdf5cae1 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -23,8 +23,7 @@ tar = ["dep:tar", "dep:gix-path"] tar_gz = ["tar", "dep:flate2"] ## Enable the `zip` archive format. -## This also enables the `flate2` dependency in order to enable `zlib-rs` on it. -zip = ["dep:flate2", "dep:zip"] +zip = ["dep:zip"] [dependencies] @@ -34,7 +33,7 @@ gix-path = { version = "^0.10.18", path = "../gix-path", optional = true } gix-date = { version = "^0.10.2", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } -zip = { version = "4.0.0", optional = true, default-features = false, features = ["deflate"] } +zip = { version = "4.0.0", optional = true, default-features = false, features = ["deflate-flate2"] } jiff = { version = "0.2.14", default-features = false, features = ["std"] } thiserror = "2.0.0" diff --git a/gix-archive/src/write.rs b/gix-archive/src/write.rs index a801cc2d2d2..bd5d4decaff 100644 --- a/gix-archive/src/write.rs +++ b/gix-archive/src/write.rs @@ -176,7 +176,7 @@ fn append_zip_entry( compression_level: Option, tree_prefix: Option<&bstr::BString>, ) -> Result<(), Error> { - let file_opts = zip::write::FileOptions::<'_, ()>::default() + let file_opts = zip::write::SimpleFileOptions::default() .compression_method(zip::CompressionMethod::Deflated) .compression_level(compression_level) .large_file(entry.bytes_remaining().map_or(true, |len| len > u32::MAX as usize)) From 5d748af0f956ee62c7327c4bf6361c6817d04fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Thu, 19 Jun 2025 09:01:12 +0200 Subject: [PATCH 010/296] Only add entry when blame was passed --- gix-blame/src/file/function.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/gix-blame/src/file/function.rs b/gix-blame/src/file/function.rs index d78777ac984..fdbeb7c996f 100644 --- a/gix-blame/src/file/function.rs +++ b/gix-blame/src/file/function.rs @@ -329,17 +329,21 @@ pub fn file( options.diff_algorithm, &mut stats, )?; - hunks_to_blame = process_changes(hunks_to_blame, changes, suspect, *parent_id); + hunks_to_blame = process_changes(hunks_to_blame, changes.clone(), suspect, *parent_id); if let Some(ref mut blame_path) = blame_path { - let blame_path_entry = BlamePathEntry { - source_file_path: current_file_path.clone(), - previous_source_file_path: Some(current_file_path.clone()), - commit_id: suspect, - blob_id: id, - previous_blob_id: previous_id, - index, - }; - blame_path.push(blame_path_entry); + let has_blame_been_passed = hunks_to_blame.iter().any(|hunk| hunk.has_suspect(parent_id)); + + if has_blame_been_passed { + let blame_path_entry = BlamePathEntry { + source_file_path: current_file_path.clone(), + previous_source_file_path: Some(current_file_path.clone()), + commit_id: suspect, + blob_id: id, + previous_blob_id: previous_id, + index, + }; + blame_path.push(blame_path_entry); + } } } TreeDiffChange::Rewrite { From ab52a49a555ab25e6cf632cb0b080eab72958a7d Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 19 Jun 2025 09:31:10 +0200 Subject: [PATCH 011/296] feat: `gix revision list --long-hashes` for faster iteration. The performance of the short-hash generation was improved as well. --- .../src/repository/commitgraph/list.rs | 21 +------- gitoxide-core/src/repository/mod.rs | 48 +++++++++++++------ gitoxide-core/src/repository/revision/list.rs | 10 ++-- src/plumbing/main.rs | 8 +++- src/plumbing/options/mod.rs | 5 +- 5 files changed, 53 insertions(+), 39 deletions(-) diff --git a/gitoxide-core/src/repository/commitgraph/list.rs b/gitoxide-core/src/repository/commitgraph/list.rs index c0d1182b819..aa203388cee 100644 --- a/gitoxide-core/src/repository/commitgraph/list.rs +++ b/gitoxide-core/src/repository/commitgraph/list.rs @@ -1,10 +1,10 @@ pub(crate) mod function { + use crate::repository::HexId; use crate::OutputFormat; use anyhow::{bail, Context}; use gix::odb::store::RefreshMode; use gix::revision::plumbing::Spec; use gix::{prelude::ObjectIdExt, revision::walk::Sorting}; - use std::fmt::Formatter; use std::{borrow::Cow, ffi::OsString}; pub fn list( @@ -70,23 +70,4 @@ pub(crate) mod function { .context("Need committish as starting point")? .id()) } - - struct HexId<'a>(gix::Id<'a>, bool); - - impl<'a> HexId<'a> { - pub fn new(id: gix::Id<'a>, long_hex: bool) -> Self { - HexId(id, long_hex) - } - } - - impl std::fmt::Display for HexId<'_> { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - let HexId(id, long_hex) = self; - if *long_hex { - id.fmt(f) - } else { - id.shorten_or_id().fmt(f) - } - } - } } diff --git a/gitoxide-core/src/repository/mod.rs b/gitoxide-core/src/repository/mod.rs index 5b51e5c1ac3..8158f7cf0b6 100644 --- a/gitoxide-core/src/repository/mod.rs +++ b/gitoxide-core/src/repository/mod.rs @@ -1,22 +1,9 @@ +use std::fmt::Formatter; use std::path::PathBuf; use anyhow::{Context as AnyhowContext, Result}; use gix::bstr::BString; -pub fn init(directory: Option) -> Result { - gix::create::into( - directory.unwrap_or_default(), - gix::create::Kind::WithWorktree, - gix::create::Options::default(), - ) - .with_context(|| "Repository initialization failed") -} - -pub enum PathsOrPatterns { - Paths(Box>), - Patterns(Vec), -} - #[cfg(feature = "archive")] pub mod archive; pub mod cat; @@ -60,3 +47,36 @@ pub mod submodule; pub mod tree; pub mod verify; pub mod worktree; + +pub fn init(directory: Option) -> Result { + gix::create::into( + directory.unwrap_or_default(), + gix::create::Kind::WithWorktree, + gix::create::Options::default(), + ) + .with_context(|| "Repository initialization failed") +} + +pub enum PathsOrPatterns { + Paths(Box>), + Patterns(Vec), +} + +struct HexId<'a>(gix::Id<'a>, bool); + +impl<'a> HexId<'a> { + pub fn new(id: gix::Id<'a>, long_hex: bool) -> Self { + HexId(id, long_hex) + } +} + +impl std::fmt::Display for HexId<'_> { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + let HexId(id, long_hex) = self; + if *long_hex { + id.fmt(f) + } else { + id.shorten_or_id().fmt(f) + } + } +} diff --git a/gitoxide-core/src/repository/revision/list.rs b/gitoxide-core/src/repository/revision/list.rs index c47f1bc3b27..87997f41f27 100644 --- a/gitoxide-core/src/repository/revision/list.rs +++ b/gitoxide-core/src/repository/revision/list.rs @@ -7,6 +7,7 @@ pub struct Context { pub spec: OsString, pub format: OutputFormat, pub text: Format, + pub long_hashes: bool, } pub enum Format { @@ -16,7 +17,10 @@ pub enum Format { pub const PROGRESS_RANGE: std::ops::RangeInclusive = 0..=2; pub(crate) mod function { + use crate::repository::HexId; + use crate::{repository::revision::list::Format, OutputFormat}; use anyhow::{bail, Context}; + use gix::odb::store::RefreshMode; use gix::{hashtable::HashMap, revision::walk::Sorting, Progress}; use layout::{ backends::svg::SVGWriter, @@ -24,8 +28,6 @@ pub(crate) mod function { std_shapes::shapes::{Arrow, Element, ShapeKind}, }; - use crate::{repository::revision::list::Format, OutputFormat}; - pub fn list( mut repo: gix::Repository, mut progress: impl Progress, @@ -35,12 +37,14 @@ pub(crate) mod function { format, text, limit, + long_hashes, }: super::Context, ) -> anyhow::Result<()> { if format != OutputFormat::Human { bail!("Only human output is currently supported"); } repo.object_cache_size_if_unset(4 * 1024 * 1024); + repo.objects.refresh = RefreshMode::Never; let spec = gix::path::os_str_into_bstr(&spec)?; let id = repo @@ -101,7 +105,7 @@ pub(crate) mod function { writeln!( out, "{} {} {}", - commit.id().shorten_or_id(), + HexId::new(commit.id(), long_hashes), commit.commit_time.expect("traversal with date"), commit.parent_ids.len() )?; diff --git a/src/plumbing/main.rs b/src/plumbing/main.rs index aedee5cc052..fd88efa87a5 100644 --- a/src/plumbing/main.rs +++ b/src/plumbing/main.rs @@ -1148,7 +1148,12 @@ pub fn main() -> Result<()> { }, ), Subcommands::Revision(cmd) => match cmd { - revision::Subcommands::List { spec, svg, limit } => prepare_and_run( + revision::Subcommands::List { + spec, + svg, + limit, + long_hashes, + } => prepare_and_run( "revision-list", trace, auto_verbose, @@ -1164,6 +1169,7 @@ pub fn main() -> Result<()> { limit, spec, format, + long_hashes, text: svg.map_or(core::repository::revision::list::Format::Text, |path| { core::repository::revision::list::Format::Svg { path } }), diff --git a/src/plumbing/options/mod.rs b/src/plumbing/options/mod.rs index f0d02c2c6bc..fcefffba26a 100644 --- a/src/plumbing/options/mod.rs +++ b/src/plumbing/options/mod.rs @@ -996,8 +996,11 @@ pub mod revision { /// List all commits reachable from the given rev-spec. #[clap(visible_alias = "l")] List { - /// How many commits to list at most. + /// Display long hashes, instead of expensively shortened versions for best performance. #[clap(long, short = 'l')] + long_hashes: bool, + /// How many commits to list at most. + #[clap(long)] limit: Option, /// Write the graph as SVG file to the given path. #[clap(long, short = 's')] From 54af5abe9c38976b56c6b8d75198e2c206aff925 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 22 Jun 2025 08:39:35 +0200 Subject: [PATCH 012/296] Report for June 2025 --- etc/reports/25-06.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 etc/reports/25-06.md diff --git a/etc/reports/25-06.md b/etc/reports/25-06.md new file mode 100644 index 00000000000..8f43a800b2d --- /dev/null +++ b/etc/reports/25-06.md @@ -0,0 +1,37 @@ +I have been busy, just not in `gitoxide` directly. Yet, there is one related topic I am very excited to share! + +### Hide… + +Ominous, isn't it? What the title is referring to is a long-absent feature which is absolutely critical for commit-graph traversals of the sort +`this..that`, including all of `that` without any of `this`. +Previously, we would only support traversals with a `boundary()` condition, which just says that if you run over `that`, do not continue in that direction. However, this would also mean that one could easily get past the boundary by finding other paths to the history of `that`, leading to longer-than-wanted traversals. This made `boundary()` quite useless outside of traversals on well-known graphs. + +Now with `hide()`, we can finally assure that we see none of the commits reachable by hidden tips in the traversal. Of course, this means that the traversal is a little more costly when hidden tips are involved, but it's the price to pay for this extremely relevant feature. + +You can try it yourself with the likes of `gix commit-graph list main~10..origin/main`. + +### GitButler - The Graph + +Most of my time went into working on the foundations of the new GitButler, a Butler which is able to act more like a normal Git client without forcing the user into the `gitbutler/workspace` branch. + +For this to work, one will need to be able to express any starting point in terms of stacks with segments. +My initial attempt to do that failed as I started out with the 'quick' version that is just a more flexible variant of the code that existed before, i.e. code that fiddles with merge-bases and linear single-parent traversals to synthesize stacks from a graph. It just wouldn't work right and admittedly, I stopped being able to understand it well enough to get it right, discarding it as impossible. After all, stacks with segments are an oversimplification which cannot represent the underlying commit-graph, how is one supposed to be able to have algorithms making reliable decisions on top of that? + +Thus, "The Graph" was born, as a simplified, but not over-simplified, representation of the underlying commit-graph which can tell GitButler all it needs to know, concisely, and in a data structure that is easy to traverse both backwards and forwards. From there, stacks and branches are merely a mapping for the sole purpose of being viewed by the user. + +Now the traversal of the graph is completed, and it seems to work well *and* fast even in the toughest repositories I could find. + +Next up is to generate the mapping of the graph to stacks, which will enable GitButler to see the world from any starting point, making it a 'normal' Git client that can show whatever you throw at it. + +## Community + +### Gix in Cargo + +Now it has already been more than 4 weeks since [the PR](https://github.com/rust-lang/cargo/pull/15534) to use `gitoxide` for `cargo package` was opened. Since then, it was decided that the `git2` version of it can be removed entirely, bringing the benefits of the new implementation to everyone soon. + +However, I didn't get to work on it since (despite wanting to today) but plan to do it in one of the coming weekends. + +Cheers +Sebastian + +PS: The latest timesheets can be found [here (2025)](https://github.com/Byron/byron/blob/main/timesheets/2025.csv). \ No newline at end of file From d7db360d5b42ec9d2b4d9977f7b7bee0f6cc4d58 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 23 Jun 2025 09:01:35 +0200 Subject: [PATCH 013/296] feat: add `Repository::committer_or_set_generic_fallback()`. That way one can always obtain a committer, even though it might not represent the entity actually committing. --- gix/src/clone/fetch/mod.rs | 17 +++-------------- gix/src/clone/mod.rs | 17 ++++------------- gix/src/repository/identity.rs | 18 ++++++++++++++++++ gix/tests/gix-init.rs | 2 +- gix/tests/gix/clone.rs | 2 +- gix/tests/gix/object/tree/diff.rs | 2 +- 6 files changed, 28 insertions(+), 30 deletions(-) diff --git a/gix/src/clone/fetch/mod.rs b/gix/src/clone/fetch/mod.rs index 86a07b8523d..34641a89fb1 100644 --- a/gix/src/clone/fetch/mod.rs +++ b/gix/src/clone/fetch/mod.rs @@ -1,7 +1,6 @@ use crate::{ bstr::{BString, ByteSlice}, clone::PrepareFetch, - config::tree::gitoxide, }; /// The error returned by [`PrepareFetch::fetch_only()`]. @@ -46,6 +45,8 @@ pub enum Error { wanted: gix_ref::PartialName, candidates: Vec, }, + #[error(transparent)] + CommitterOrFallback(#[from] crate::config::time::Error), } /// Modification @@ -81,23 +82,11 @@ impl PrepareFetch { .as_mut() .expect("user error: multiple calls are allowed only until it succeeds"); - if repo.committer().is_none() { - let mut config = gix_config::File::new(gix_config::file::Metadata::api()); - config - .set_raw_value(&gitoxide::Committer::NAME_FALLBACK, "no name configured during fetch") - .expect("works - statically known"); - config - .set_raw_value(&gitoxide::Committer::EMAIL_FALLBACK, "noEmailAvailable@example.com") - .expect("works - statically known"); - let mut repo_config = repo.config_snapshot_mut(); - repo_config.append(config); - repo_config.commit().expect("configuration is still valid"); - } + repo.committer_or_set_generic_fallback()?; if !self.config_overrides.is_empty() { let mut snapshot = repo.config_snapshot_mut(); snapshot.append_config(&self.config_overrides, gix_config::Source::Api)?; - snapshot.commit()?; } let remote_name = match self.remote_name.as_ref() { diff --git a/gix/src/clone/mod.rs b/gix/src/clone/mod.rs index 920214d3f20..23903943724 100644 --- a/gix/src/clone/mod.rs +++ b/gix/src/clone/mod.rs @@ -1,5 +1,5 @@ #![allow(clippy::result_large_err)] -use crate::{bstr::BString, config::tree::gitoxide, remote}; +use crate::{bstr::BString, remote}; type ConfigureRemoteFn = Box) -> Result, Box>>; @@ -46,6 +46,8 @@ pub enum Error { #[error(transparent)] Init(#[from] crate::init::Error), #[error(transparent)] + CommitterOrFallback(#[from] crate::config::time::Error), + #[error(transparent)] UrlParse(#[from] gix_url::parse::Error), #[error("Failed to turn a the relative file url \"{}\" into an absolute one", url.to_bstring())] CanonicalizeUrl { @@ -102,18 +104,7 @@ impl PrepareFetch { url: url.clone(), source: err, })?; - if repo.committer().is_none() { - let mut config = gix_config::File::new(gix_config::file::Metadata::api()); - config - .set_raw_value(&gitoxide::Committer::NAME_FALLBACK, "no name configured during clone") - .expect("works - statically known"); - config - .set_raw_value(&gitoxide::Committer::EMAIL_FALLBACK, "noEmailAvailable@example.com") - .expect("works - statically known"); - let mut repo_config = repo.config_snapshot_mut(); - repo_config.append(config); - repo_config.commit().expect("configuration is still valid"); - } + repo.committer_or_set_generic_fallback()?; Ok(PrepareFetch { url, #[cfg(any(feature = "async-network-client", feature = "blocking-network-client"))] diff --git a/gix/src/repository/identity.rs b/gix/src/repository/identity.rs index c3385746753..7837e9f2d65 100644 --- a/gix/src/repository/identity.rs +++ b/gix/src/repository/identity.rs @@ -43,6 +43,24 @@ impl crate::Repository { .into() } + /// Return the committer or its fallback just like [`committer()`](Self::committer()), but if *not* set generate a + /// possibly arbitrary fallback and configure it in memory on this instance. That fallback is then returned and future + /// calls to [`committer()`](Self::committer()) will return it as well. + pub fn committer_or_set_generic_fallback(&mut self) -> Result, config::time::Error> { + if self.committer().is_none() { + let mut config = gix_config::File::new(gix_config::file::Metadata::api()); + config + .set_raw_value(&gitoxide::Committer::NAME_FALLBACK, "no name configured") + .expect("works - statically known"); + config + .set_raw_value(&gitoxide::Committer::EMAIL_FALLBACK, "noEmailAvailable@example.com") + .expect("works - statically known"); + let mut repo_config = self.config_snapshot_mut(); + repo_config.append(config); + } + self.committer().expect("committer was just set") + } + /// Return the author as configured by this repository, which is determined by… /// /// * …the git configuration `author.name|email`… diff --git a/gix/tests/gix-init.rs b/gix/tests/gix-init.rs index 6a63c719c55..6a116b6d293 100644 --- a/gix/tests/gix-init.rs +++ b/gix/tests/gix-init.rs @@ -268,7 +268,7 @@ mod with_overrides { Ok(()) } - fn cow_bstr(s: &str) -> Cow { + fn cow_bstr(s: &str) -> Cow<'_, BStr> { Cow::Borrowed(s.into()) } } diff --git a/gix/tests/gix/clone.rs b/gix/tests/gix/clone.rs index ce9d47de3a5..573a8e3ddfe 100644 --- a/gix/tests/gix/clone.rs +++ b/gix/tests/gix/clone.rs @@ -334,7 +334,7 @@ mod blocking_io { .expect("one line")? .signature .to_owned()?; - assert_eq!(sig.name, "no name configured during clone"); + assert_eq!(sig.name, "no name configured"); assert_eq!(sig.email, "noEmailAvailable@example.com"); match out.status { diff --git a/gix/tests/gix/object/tree/diff.rs b/gix/tests/gix/object/tree/diff.rs index 6a260ce403a..225dc3148db 100644 --- a/gix/tests/gix/object/tree/diff.rs +++ b/gix/tests/gix/object/tree/diff.rs @@ -879,7 +879,7 @@ mod track_rewrites { } } -fn tree_named(repo: &gix::Repository, rev_spec: impl AsRef) -> gix::Tree { +fn tree_named(repo: &gix::Repository, rev_spec: impl AsRef) -> gix::Tree<'_> { repo.rev_parse_single(rev_spec.as_ref()) .unwrap() .object() From a75b4a2bc0cc602da336421ebcfda11dd36545b7 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 23 Jun 2025 17:31:08 +0200 Subject: [PATCH 014/296] fix: `Repository::branch_remote_ref_name()` won't fail on short names anymore. Instead, these partial names are turned into branch names, which seems more in line with what Git can do. --- gix/src/repository/config/branch.rs | 11 +++++++- gix/tests/gix/repository/config/remote.rs | 31 +++++++++++++---------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/gix/src/repository/config/branch.rs b/gix/src/repository/config/branch.rs index eadc480861d..1d8a6d3af57 100644 --- a/gix/src/repository/config/branch.rs +++ b/gix/src/repository/config/branch.rs @@ -52,7 +52,16 @@ impl crate::Repository { self.config .resolved .string_by("branch", Some(short_name), Branch::MERGE.name) - .map(|name| crate::config::tree::branch::Merge::try_into_fullrefname(name).map_err(Into::into)) + .map(|name| { + if name.starts_with(b"refs/") { + crate::config::tree::branch::Merge::try_into_fullrefname(name) + } else { + gix_ref::Category::LocalBranch + .to_full_name(name.as_ref()) + .map(Cow::Owned) + } + .map_err(Into::into) + }) } remote::Direction::Push => { let remote = match self.branch_remote(name.shorten(), direction)? { diff --git a/gix/tests/gix/repository/config/remote.rs b/gix/tests/gix/repository/config/remote.rs index fd09592f289..14f586bb8b2 100644 --- a/gix/tests/gix/repository/config/remote.rs +++ b/gix/tests/gix/repository/config/remote.rs @@ -131,15 +131,21 @@ mod branch_remote { .as_ref(), "remote_repo" ); + assert_eq!( + repo.branch_remote_name("broken", direction) + .expect("Remote name exists") + .as_ref(), + "remote_repo" + ); } - let merge_branch_invalid_msg = "The configured name of the remote ref to merge wasn't valid"; assert_eq!( repo.branch_remote_ref_name("refs/heads/broken".try_into()?, remote::Direction::Fetch) .expect("Remote Merge ref exists") - .unwrap_err() - .to_string(), - merge_branch_invalid_msg + .expect("merge ref is turned into a full-name") + .as_bstr(), + "refs/heads/not_a_valid_merge_ref", + "short names are simply turned into branch names - this doesn't always work, but sometimes." ); assert!(repo .branch_remote_ref_name("refs/heads/missing".try_into()?, remote::Direction::Fetch) @@ -152,11 +158,11 @@ mod branch_remote { } assert_eq!( repo.branch_remote_tracking_ref_name("refs/heads/broken".try_into()?, remote::Direction::Fetch) - .expect("err") - .unwrap_err() - .to_string(), - "Could not get the remote reference to translate into the local tracking branch", - "the merge ref is broken, hence there can't be a tracking ref", + .expect("no error") + .expect("valid result") + .as_bstr(), + "refs/remotes/remote_repo/not_a_valid_merge_ref", + "the merge ref is broken, but we turned it into a full ref name from which everything else was derived", ); Ok(()) @@ -219,10 +225,9 @@ mod branch_remote { ); } - assert_eq!( - repo.branch_remote_tracking_ref_name("refs/heads/broken".try_into()?, remote::Direction::Push).expect("has err").unwrap_err().to_string(), - "Could not get the remote reference to translate into the local tracking branch", - "push.default = simple, hence we need to verify the merge-branch is the same as us, but retrieving it fails", + assert!( + repo.branch_remote_tracking_ref_name("refs/heads/broken".try_into()?, remote::Direction::Push).is_none(), + "push.default = simple, hence we need to verify the merge-branch is the same as us, and retrieving it succeeds due to auto-fullnamification but then it doesn't match", ); Ok(()) From 427274bdf64d30e3bcd330e849ea067e359588fe Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 24 Jun 2025 08:25:00 +0200 Subject: [PATCH 015/296] fix: don't panic if `remote::Connection::ref_map()` doesn't finish the handshake (#2055) --- gix/src/remote/connection/ref_map.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gix/src/remote/connection/ref_map.rs b/gix/src/remote/connection/ref_map.rs index 95d92a40ad5..47b46b6cbdf 100644 --- a/gix/src/remote/connection/ref_map.rs +++ b/gix/src/remote/connection/ref_map.rs @@ -90,9 +90,11 @@ where progress: impl Progress, options: Options, ) -> Result<(fetch::RefMap, gix_protocol::handshake::Outcome), Error> { - let refmap = self.ref_map_by_ref(progress, options).await; - let handshake = self.handshake.expect("refmap always performs handshake"); - refmap.map(|map| (map, handshake)) + let refmap = self.ref_map_by_ref(progress, options).await?; + let handshake = self + .handshake + .expect("refmap always performs handshake and stores it if it succeeds"); + Ok((refmap, handshake)) } #[allow(clippy::result_large_err)] From c614970bd47ca27ec7ba890b463ea7eba3ea46ac Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 24 Jun 2025 08:37:51 +0200 Subject: [PATCH 016/296] Use structured format for blame script Also provide more context in comment --- tests/it/src/args.rs | 36 ++++-- tests/it/src/commands/blame_copy_royal.rs | 132 +++++++++++++--------- 2 files changed, 109 insertions(+), 59 deletions(-) diff --git a/tests/it/src/args.rs b/tests/it/src/args.rs index 28f023bb480..d3b1bf75131 100644 --- a/tests/it/src/args.rs +++ b/tests/it/src/args.rs @@ -14,11 +14,34 @@ pub struct Args { #[derive(Debug, clap::Subcommand)] pub enum Subcommands { - /// Extract a file’s history so that its blame shows the same characteristics, in particular - /// bugs, as the original, but in a way that can't be traced back uniquely to its source. + /// Generate a shell script that creates a git repository containing all commits that are + /// traversed when a blame is generated. /// - /// The idea is that we don't want to deal with licensing, it's more about patterns in order to - /// reproduce cases for tests. + /// This command extracts the file’s history so that blame, when run on the repository created + /// by the script, shows the same characteristics, in particular bugs, as the original, but in + /// a way that the original source file's content cannot be reconstructed. + /// + /// The idea is that by obfuscating the file's content we make it easier for people to share + /// the subset of data that's required for debugging purposes from repositories that are not + /// public. + /// + /// Note that the obfuscation leaves certain properties of the source intact, so they can still + /// be inferred from the extracted history. Among these properties are directory structure + /// (though not the directories' names), renames, number of lines, and whitespace. + /// + /// This command can also be helpful in debugging the blame algorithm itself. + /// + /// ### Terminology + /// + /// A **blame history** is the set of commits that the blame algorithm, at some point, treated + /// as potential suspects for any line in a file. It is a subset of all commits that ever + /// changed a file in its history. + /// + /// With respect to branches and merge commits, the **blame history** will not necessarily be + /// identical to the file's history in the source repository. This is because the blame + /// algorithm will stop following a file's history for branches that only touch lines for which + /// the source has already been found. The **blame history**, thus, looks likely "cleaner" and + /// "simpler" than the source history. #[clap(visible_alias = "bcr")] BlameCopyRoyal { /// Don't really copy anything. @@ -32,9 +55,8 @@ pub enum Subcommands { file: std::ffi::OsString, /// Do not use `copy-royal` to obfuscate the content of blobs, but copy it verbatim. /// - /// Note that this should only be done if the source repository only contains information - /// you’re willing to share. Also note that the obfuscation leaves the structure of the - /// source intact, so a few of its properties can still be inferred. + /// Note that this should only be done if the source history does not contain information + /// you're not willing to share. #[clap(long)] verbatim: bool, }, diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index 1f9188288e5..2f1f0c6e44d 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -6,7 +6,7 @@ pub(super) mod function { use anyhow::Context; use gix::{ blame::BlamePathEntry, - bstr::{BStr, ByteSlice}, + bstr::{BStr, BString, ByteSlice}, objs::FindExt, ObjectId, }; @@ -130,25 +130,31 @@ pub(super) mod function { ); if !dry_run { - std::fs::write(script_file, blame_script.script)?; + let blocks: Vec<_> = blame_script + .script + .iter() + .map(|operation| operation.to_string()) + .collect(); + + std::fs::write(script_file, blocks.join(""))?; } Ok(()) } - struct BlameScript { - blame_path: Vec, - seen: BTreeSet, - script: String, - options: Options, + enum BlameScriptOperation { + InitRepository, + RemoveFile(String), + CommitFile(BString, ObjectId), + CheckoutTag(ObjectId), + PrepareMerge(Vec), + CreateTag(ObjectId), } - impl BlameScript { - fn new(blame_path: Vec, options: Options) -> Self { - let mut script = String::new(); - - script.push_str( - r"#!/bin/sh + impl BlameScriptOperation { + fn to_string(&self) -> String { + match self { + BlameScriptOperation::InitRepository => r"#!/bin/sh set -e @@ -157,8 +163,46 @@ echo .gitignore >> .gitignore echo assets/ >> .gitignore echo create-history.sh >> .gitignore -", - ); +" + .into(), + BlameScriptOperation::RemoveFile(src) => format!( + r"# delete previous version of file +git rm {src} +" + ), + BlameScriptOperation::CommitFile(src, commit_id) => format!( + r"# make file {src} contain content at commit {commit_id} +mkdir -p $(dirname {src}) +cp ./assets/{commit_id}.commit ./{src} +# create commit +git add {src} +git commit -m {commit_id} +" + ), + BlameScriptOperation::CheckoutTag(commit_id) => format!("git checkout tag-{}\n", commit_id), + BlameScriptOperation::PrepareMerge(commit_ids) => format!( + "git merge --no-commit {} || true\n", + commit_ids + .iter() + .map(|commit_id| format!("tag-{commit_id}")) + .collect::>() + .join(" ") + ), + BlameScriptOperation::CreateTag(commit_id) => format!("git tag tag-{commit_id}\n\n"), + } + } + } + + struct BlameScript { + blame_path: Vec, + seen: BTreeSet, + script: Vec, + options: Options, + } + + impl BlameScript { + fn new(blame_path: Vec, options: Options) -> Self { + let script = vec![BlameScriptOperation::InitRepository]; Self { blame_path, @@ -202,7 +246,7 @@ echo create-history.sh >> .gitignore }; let commit_id = blame_path_entry.commit_id; - let delete_previous_file_script = match &blame_path_entry.previous_source_file_path { + let delete_previous_file_operation = match &blame_path_entry.previous_source_file_path { Some(previous_source_file_path) if source_file_path != *previous_source_file_path => { let src = if self.options.verbatim { previous_source_file_path.to_string() @@ -215,57 +259,41 @@ echo create-history.sh >> .gitignore crate::commands::copy_royal::remapped(source_file_path) }; - format!( - r"# delete previous version of file -git rm {src} -" - ) + Some(BlameScriptOperation::RemoveFile(src)) } - _ => String::new(), + _ => None, }; - let script = format!( - r"# make file {src} contain content at commit {commit_id} -mkdir -p $(dirname {src}) -cp ./assets/{commit_id}.commit ./{src} -# create commit -git add {src} -git commit -m {commit_id} -" - ); - if parents.is_empty() { - self.script.push_str(delete_previous_file_script.as_str()); - self.script.push_str(script.as_str()); + if let Some(delete_previous_file_operation) = delete_previous_file_operation { + self.script.push(delete_previous_file_operation); + } + self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); } else { let ([first], rest) = parents.split_at(1) else { unreachable!(); }; - self.script - .push_str(format!("git checkout tag-{}\n", first.commit_id).as_str()); + self.script.push(BlameScriptOperation::CheckoutTag(first.commit_id)); if rest.is_empty() { - self.script.push_str(delete_previous_file_script.as_str()); - self.script.push_str(script.as_str()); + if let Some(delete_previous_file_operation) = delete_previous_file_operation { + self.script.push(delete_previous_file_operation); + } + self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); } else { - self.script.push_str( - format!( - "git merge --no-commit {} || true\n", - rest.iter() - .map(|blame_path_entry| format!("tag-{}", blame_path_entry.commit_id)) - .collect::>() - .join(" ") - ) - .as_str(), - ); - - self.script.push_str(delete_previous_file_script.as_str()); - self.script.push_str(script.as_str()); + self.script.push(BlameScriptOperation::PrepareMerge( + rest.iter().map(|blame_path_entry| blame_path_entry.commit_id).collect(), + )); + + if let Some(delete_previous_file_operation) = delete_previous_file_operation { + self.script.push(delete_previous_file_operation); + } + self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); } } - self.script.push_str(format!("git tag tag-{commit_id}\n\n").as_str()); + self.script.push(BlameScriptOperation::CreateTag(commit_id)); Ok(()) } From c7a2e802215ec2c2512262b9d54e580297964e8c Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 24 Jun 2025 08:36:37 +0200 Subject: [PATCH 017/296] Thanks clippy --- gix-blame/src/file/function.rs | 2 +- tests/it/src/commands/blame_copy_royal.rs | 28 ++++++++++++++--------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gix-blame/src/file/function.rs b/gix-blame/src/file/function.rs index fdbeb7c996f..b5a4067171c 100644 --- a/gix-blame/src/file/function.rs +++ b/gix-blame/src/file/function.rs @@ -366,7 +366,7 @@ pub fn file( let mut has_blame_been_passed = false; for hunk in hunks_to_blame.iter_mut() { - if hunk.has_suspect(&parent_id) { + if hunk.has_suspect(parent_id) { hunk.source_file_name = Some(source_location.clone()); has_blame_been_passed = true; diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index 2f1f0c6e44d..d73741cd8f4 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -13,6 +13,7 @@ pub(super) mod function { use std::{ collections::BTreeSet, ffi::OsStr, + fmt::Display, path::{Path, PathBuf}, }; @@ -133,7 +134,7 @@ pub(super) mod function { let blocks: Vec<_> = blame_script .script .iter() - .map(|operation| operation.to_string()) + .map(std::string::ToString::to_string) .collect(); std::fs::write(script_file, blocks.join(""))?; @@ -151,10 +152,12 @@ pub(super) mod function { CreateTag(ObjectId), } - impl BlameScriptOperation { - fn to_string(&self) -> String { + impl Display for BlameScriptOperation { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - BlameScriptOperation::InitRepository => r"#!/bin/sh + BlameScriptOperation::InitRepository => write!( + f, + r"#!/bin/sh set -e @@ -164,13 +167,15 @@ echo assets/ >> .gitignore echo create-history.sh >> .gitignore " - .into(), - BlameScriptOperation::RemoveFile(src) => format!( + ), + BlameScriptOperation::RemoveFile(src) => write!( + f, r"# delete previous version of file git rm {src} " ), - BlameScriptOperation::CommitFile(src, commit_id) => format!( + BlameScriptOperation::CommitFile(src, commit_id) => write!( + f, r"# make file {src} contain content at commit {commit_id} mkdir -p $(dirname {src}) cp ./assets/{commit_id}.commit ./{src} @@ -179,16 +184,17 @@ git add {src} git commit -m {commit_id} " ), - BlameScriptOperation::CheckoutTag(commit_id) => format!("git checkout tag-{}\n", commit_id), - BlameScriptOperation::PrepareMerge(commit_ids) => format!( - "git merge --no-commit {} || true\n", + BlameScriptOperation::CheckoutTag(commit_id) => writeln!(f, "git checkout tag-{commit_id}"), + BlameScriptOperation::PrepareMerge(commit_ids) => writeln!( + f, + "git merge --no-commit {} || true", commit_ids .iter() .map(|commit_id| format!("tag-{commit_id}")) .collect::>() .join(" ") ), - BlameScriptOperation::CreateTag(commit_id) => format!("git tag tag-{commit_id}\n\n"), + BlameScriptOperation::CreateTag(commit_id) => write!(f, "git tag tag-{commit_id}\n\n"), } } } From 378b1beb9359f9f1ef26f01065f303ec8ec9ee28 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 24 Jun 2025 08:35:32 +0200 Subject: [PATCH 018/296] refactor * rename `index` to `parent_index`. * add test for clap definition of internal-tools * optimize generated script a bit --- gix-blame/src/file/function.rs | 8 +-- gix-blame/src/types.rs | 2 +- tests/it/src/commands/blame_copy_royal.rs | 61 +++++++++++------------ tests/it/src/main.rs | 11 ++++ 4 files changed, 44 insertions(+), 38 deletions(-) diff --git a/gix-blame/src/file/function.rs b/gix-blame/src/file/function.rs index b5a4067171c..98ed9790cd5 100644 --- a/gix-blame/src/file/function.rs +++ b/gix-blame/src/file/function.rs @@ -174,7 +174,7 @@ pub fn file( commit_id: suspect, blob_id: entry.unwrap_or(ObjectId::null(gix_hash::Kind::Sha1)), previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), - index: 0, + parent_index: 0, }; blame_path.push(blame_path_entry); } @@ -307,7 +307,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: ObjectId::null(gix_hash::Kind::Sha1), - index, + parent_index: index, }; blame_path.push(blame_path_entry); } @@ -340,7 +340,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: previous_id, - index, + parent_index: index, }; blame_path.push(blame_path_entry); } @@ -381,7 +381,7 @@ pub fn file( commit_id: suspect, blob_id: id, previous_blob_id: source_id, - index, + parent_index: index, }; blame_path.push(blame_path_entry); } diff --git a/gix-blame/src/types.rs b/gix-blame/src/types.rs index bd3502ef993..bbd54591eb9 100644 --- a/gix-blame/src/types.rs +++ b/gix-blame/src/types.rs @@ -175,7 +175,7 @@ pub struct BlamePathEntry { pub previous_blob_id: ObjectId, /// When there is more than one `BlamePathEntry` for a commit, this indicates to which parent /// commit the change is related. - pub index: usize, + pub parent_index: usize, } /// The outcome of [`file()`](crate::file()). diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index d73741cd8f4..cbb18c50e57 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -6,7 +6,7 @@ pub(super) mod function { use anyhow::Context; use gix::{ blame::BlamePathEntry, - bstr::{BStr, BString, ByteSlice}, + bstr::{BString, ByteSlice}, objs::FindExt, ObjectId, }; @@ -72,14 +72,11 @@ pub(super) mod function { options, )?; - let blame_path = outcome + let blame_infos = outcome .blame_path .expect("blame path to be present as `debug_track_path == true`"); - // TODO - // Potentially make `"assets"` configurable (it is in `git_to_sh`). let assets = destination_dir.join("assets"); - eprintln!("{prefix} create directory '{assets}'", assets = assets.display()); if !dry_run { @@ -88,17 +85,9 @@ pub(super) mod function { let mut buf = Vec::new(); - for blame_path_entry in &blame_path { - let src: &BStr = blame_path_entry.source_file_path.as_bstr(); + eprintln!("{prefix} perform {} asset copy operations", blame_infos.len(),); + for blame_path_entry in &blame_infos { let dst = assets.join(format!("{}.commit", blame_path_entry.commit_id)); - - eprintln!( - "{prefix} copy file '{}' at commit {} to '{dst}'", - src, - blame_path_entry.commit_id, - dst = dst.display() - ); - if !dry_run { let blob = repo.objects.find_blob(&blame_path_entry.blob_id, &mut buf)?.data; @@ -113,18 +102,15 @@ pub(super) mod function { })?; let blob = crate::commands::copy_royal::remapped(blob); - std::fs::write(dst, blob)?; } } } - let mut blame_script = BlameScript::new(blame_path, Options { verbatim }); - + let mut blame_script = BlameScript::new(blame_infos, Options { verbatim }); blame_script.generate()?; let script_file = destination_dir.join("create-history.sh"); - eprintln!( "{prefix} write script file at '{script_file}'", script_file = script_file.display() @@ -174,16 +160,25 @@ echo create-history.sh >> .gitignore git rm {src} " ), - BlameScriptOperation::CommitFile(src, commit_id) => write!( - f, - r"# make file {src} contain content at commit {commit_id} -mkdir -p $(dirname {src}) + BlameScriptOperation::CommitFile(src, commit_id) => { + write!( + f, + r"# make file {src} contain content at commit {commit_id} +" + )?; + if let Some(pos) = src.rfind_byte(b'/') { + let dirname = src[..pos].as_bstr(); + write!(f, "mkdir -p \"{dirname}\"\n")?; + } + write!( + f, + r"# cp ./assets/{commit_id}.commit ./{src} -# create commit git add {src} git commit -m {commit_id} " - ), + ) + } BlameScriptOperation::CheckoutTag(commit_id) => writeln!(f, "git checkout tag-{commit_id}"), BlameScriptOperation::PrepareMerge(commit_ids) => writeln!( f, @@ -200,18 +195,18 @@ git commit -m {commit_id} } struct BlameScript { - blame_path: Vec, + blame_infos: Vec, seen: BTreeSet, script: Vec, options: Options, } impl BlameScript { - fn new(blame_path: Vec, options: Options) -> Self { + fn new(blame_infos: Vec, options: Options) -> Self { let script = vec![BlameScriptOperation::InitRepository]; Self { - blame_path, + blame_infos, seen: BTreeSet::default(), script, options, @@ -224,9 +219,9 @@ git commit -m {commit_id} // methods can rely on the assumption that the root comes first, followed by its // descendants. That way, we can use a simple `for` loop to iterate through // `self.blame_path` below. - self.blame_path.reverse(); + self.blame_infos.reverse(); - for blame_path_entry in self.blame_path.clone() { + for blame_path_entry in self.blame_infos.clone() { if !self.seen.contains(&blame_path_entry.commit_id) { self.process_entry(&blame_path_entry)?; } @@ -309,13 +304,13 @@ git commit -m {commit_id} // commits where there’s changes against each parent. Each of these changes would // produce a diff that’s represented in `self.blame_path`. let mut children: Vec<_> = self - .blame_path + .blame_infos .iter() .enumerate() .filter(|(_, x)| x.commit_id == child.commit_id) .collect(); - children.sort_by_key(|(_, x)| x.index); + children.sort_by_key(|(_, x)| x.parent_index); let parents = children .iter() @@ -325,7 +320,7 @@ git commit -m {commit_id} // When we search for a parent we only have to consider entries up to and // excluding `index` as anything after `index` can only be a child. - self.blame_path[..(*index)] + self.blame_infos[..(*index)] .iter() .rfind(|&x| { x.blob_id == parent_blob_id && Some(&x.source_file_path) == parent_source_file_path.as_ref() diff --git a/tests/it/src/main.rs b/tests/it/src/main.rs index d2799b99cb4..9ce46e98a87 100644 --- a/tests/it/src/main.rs +++ b/tests/it/src/main.rs @@ -51,3 +51,14 @@ fn main() -> anyhow::Result<()> { mod args; use args::{Args, Subcommands}; + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn clap() { + use clap::CommandFactory; + Args::command().debug_assert(); + } +} From 554ce134bc4b514b52a935f17f57f76ebf23ab97 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 24 Jun 2025 09:22:46 +0200 Subject: [PATCH 019/296] thanks clippy With latest nightly --- gix-attributes/tests/parse/mod.rs | 18 +++++++++--------- gix-config/tests/config/parse/section.rs | 2 +- gix-odb/src/store_impls/dynamic/load_index.rs | 1 + gix-ref/src/name.rs | 1 + gix-refspec/src/spec.rs | 1 + gix/tests/gix-init.rs | 2 +- gix/tests/gix/object/tree/diff.rs | 2 +- tests/it/src/commands/blame_copy_royal.rs | 8 ++------ 8 files changed, 17 insertions(+), 18 deletions(-) diff --git a/gix-attributes/tests/parse/mod.rs b/gix-attributes/tests/parse/mod.rs index 0092b38928c..b7d929360d7 100644 --- a/gix-attributes/tests/parse/mod.rs +++ b/gix-attributes/tests/parse/mod.rs @@ -322,15 +322,15 @@ fn trailing_whitespace_in_attributes_is_ignored() { type ExpandedAttribute<'a> = (parse::Kind, Vec<(BString, gix_attributes::StateRef<'a>)>, usize); -fn set(attr: &str) -> (BString, StateRef) { +fn set(attr: &str) -> (BString, StateRef<'_>) { (attr.into(), StateRef::Set) } -fn unset(attr: &str) -> (BString, StateRef) { +fn unset(attr: &str) -> (BString, StateRef<'_>) { (attr.into(), StateRef::Unset) } -fn unspecified(attr: &str) -> (BString, StateRef) { +fn unspecified(attr: &str) -> (BString, StateRef<'_>) { (attr.into(), StateRef::Unspecified) } @@ -350,36 +350,36 @@ fn pattern(name: &str, flags: gix_glob::pattern::Mode, first_wildcard_pos: Optio }) } -fn try_line(input: &str) -> Result { +fn try_line(input: &str) -> Result, parse::Error> { let mut lines = gix_attributes::parse(input.as_bytes()); let res = expand(lines.next().unwrap())?; assert!(lines.next().is_none(), "expected only one line"); Ok(res) } -fn line(input: &str) -> ExpandedAttribute { +fn line(input: &str) -> ExpandedAttribute<'_> { try_line(input).unwrap() } -fn byte_line(input: &[u8]) -> ExpandedAttribute { +fn byte_line(input: &[u8]) -> ExpandedAttribute<'_> { try_byte_line(input).unwrap() } -fn try_byte_line(input: &[u8]) -> Result { +fn try_byte_line(input: &[u8]) -> Result, parse::Error> { let mut lines = gix_attributes::parse(input); let res = expand(lines.next().unwrap())?; assert!(lines.next().is_none(), "expected only one line"); Ok(res) } -fn lenient_lines(input: &str) -> Vec { +fn lenient_lines(input: &str) -> Vec> { gix_attributes::parse(input.as_bytes()) .map(expand) .filter_map(Result::ok) .collect() } -fn try_lines(input: &str) -> Result, parse::Error> { +fn try_lines(input: &str) -> Result>, parse::Error> { gix_attributes::parse(input.as_bytes()).map(expand).collect() } diff --git a/gix-config/tests/config/parse/section.rs b/gix-config/tests/config/parse/section.rs index 902d2a93bb9..1b1612b20d0 100644 --- a/gix-config/tests/config/parse/section.rs +++ b/gix-config/tests/config/parse/section.rs @@ -11,7 +11,7 @@ mod header { use bstr::BStr; - fn cow_section(name: &str) -> Option> { + fn cow_section(name: &str) -> Option> { Some(Cow::Borrowed(name.into())) } mod write_to { diff --git a/gix-odb/src/store_impls/dynamic/load_index.rs b/gix-odb/src/store_impls/dynamic/load_index.rs index 839ceb9e459..facd1eeeac4 100644 --- a/gix-odb/src/store_impls/dynamic/load_index.rs +++ b/gix-odb/src/store_impls/dynamic/load_index.rs @@ -734,6 +734,7 @@ impl PartialEq for Either { } } +#[allow(clippy::non_canonical_partial_ord_impl)] impl PartialOrd for Either { fn partial_cmp(&self, other: &Self) -> Option { Some(self.path().cmp(other.path())) diff --git a/gix-ref/src/name.rs b/gix-ref/src/name.rs index 4da2a9db9d8..f48a2691420 100644 --- a/gix-ref/src/name.rs +++ b/gix-ref/src/name.rs @@ -221,6 +221,7 @@ impl<'a> convert::TryFrom<&'a str> for PartialName { } } +#[allow(clippy::infallible_try_from)] impl<'a> convert::TryFrom<&'a FullName> for &'a PartialNameRef { type Error = Infallible; diff --git a/gix-refspec/src/spec.rs b/gix-refspec/src/spec.rs index 0e6cc80479d..c24f78c9fb1 100644 --- a/gix-refspec/src/spec.rs +++ b/gix-refspec/src/spec.rs @@ -69,6 +69,7 @@ mod impls { } } + #[allow(clippy::non_canonical_partial_ord_impl)] impl PartialOrd for RefSpec { fn partial_cmp(&self, other: &Self) -> Option { Some(self.to_ref().cmp(&other.to_ref())) diff --git a/gix/tests/gix-init.rs b/gix/tests/gix-init.rs index 6a63c719c55..6a116b6d293 100644 --- a/gix/tests/gix-init.rs +++ b/gix/tests/gix-init.rs @@ -268,7 +268,7 @@ mod with_overrides { Ok(()) } - fn cow_bstr(s: &str) -> Cow { + fn cow_bstr(s: &str) -> Cow<'_, BStr> { Cow::Borrowed(s.into()) } } diff --git a/gix/tests/gix/object/tree/diff.rs b/gix/tests/gix/object/tree/diff.rs index 6a260ce403a..225dc3148db 100644 --- a/gix/tests/gix/object/tree/diff.rs +++ b/gix/tests/gix/object/tree/diff.rs @@ -879,7 +879,7 @@ mod track_rewrites { } } -fn tree_named(repo: &gix::Repository, rev_spec: impl AsRef) -> gix::Tree { +fn tree_named(repo: &gix::Repository, rev_spec: impl AsRef) -> gix::Tree<'_> { repo.rev_parse_single(rev_spec.as_ref()) .unwrap() .object() diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index cbb18c50e57..cef93929a9b 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -161,14 +161,10 @@ git rm {src} " ), BlameScriptOperation::CommitFile(src, commit_id) => { - write!( - f, - r"# make file {src} contain content at commit {commit_id} -" - )?; + writeln!(f, r"# make file {src} contain content at commit {commit_id}")?; if let Some(pos) = src.rfind_byte(b'/') { let dirname = src[..pos].as_bstr(); - write!(f, "mkdir -p \"{dirname}\"\n")?; + writeln!(f, "mkdir -p \"{dirname}\"")?; } write!( f, From fce70950006892f51b32af233656be6fe5de9df3 Mon Sep 17 00:00:00 2001 From: Brad Larsen Date: Tue, 24 Jun 2025 16:00:46 -0400 Subject: [PATCH 020/296] gix-pack: delta application is a fallible operation --- gix-pack/src/cache/delta/traverse/mod.rs | 2 ++ gix-pack/src/cache/delta/traverse/resolve.rs | 4 ++-- gix-pack/src/data/delta.rs | 22 ++++++++++++++++---- gix-pack/src/data/file/decode/entry.rs | 2 +- gix-pack/src/data/file/decode/mod.rs | 2 ++ 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/gix-pack/src/cache/delta/traverse/mod.rs b/gix-pack/src/cache/delta/traverse/mod.rs index 290f389bbe4..456cd7ec3e4 100644 --- a/gix-pack/src/cache/delta/traverse/mod.rs +++ b/gix-pack/src/cache/delta/traverse/mod.rs @@ -41,6 +41,8 @@ pub enum Error { }, #[error("Failed to spawn thread when switching to work-stealing mode")] SpawnThread(#[from] std::io::Error), + #[error(transparent)] + Delta(#[from] crate::data::delta::Error), } /// Additional context passed to the `inspect_object(…)` function of the [`Tree::traverse()`] method. diff --git a/gix-pack/src/cache/delta/traverse/resolve.rs b/gix-pack/src/cache/delta/traverse/resolve.rs index 407baa1e782..fbb038b5d09 100644 --- a/gix-pack/src/cache/delta/traverse/resolve.rs +++ b/gix-pack/src/cache/delta/traverse/resolve.rs @@ -188,7 +188,7 @@ where header_ofs += consumed; fully_resolved_delta_bytes.resize(result_size as usize, 0); - data::delta::apply(&base_bytes, fully_resolved_delta_bytes, &delta_bytes[header_ofs..]); + data::delta::apply(&base_bytes, fully_resolved_delta_bytes, &delta_bytes[header_ofs..])?; // FIXME: this actually invalidates the "pack_offset()" computation, which is not obvious to consumers // at all @@ -367,7 +367,7 @@ where &base_bytes, &mut fully_resolved_delta_bytes, &delta_bytes[header_ofs..], - ); + )?; // FIXME: this actually invalidates the "pack_offset()" computation, which is not obvious to consumers // at all diff --git a/gix-pack/src/data/delta.rs b/gix-pack/src/data/delta.rs index f7ee9bd7504..376271fa888 100644 --- a/gix-pack/src/data/delta.rs +++ b/gix-pack/src/data/delta.rs @@ -1,3 +1,15 @@ +/// Returned by [`Tree::traverse()`] +#[derive(thiserror::Error, Debug)] +#[allow(missing_docs)] +pub enum Error { + #[error("Encountered unsupported command code: 0")] + UnsupportedCommandCode, + #[error("Delta copy from base: byte slices must match")] + DeltaCopyBaseSliceMismatch, + #[error("Delta copy data: byte slices must match")] + DeltaCopyDataSliceMismatch, +} + /// Given the decompressed pack delta `d`, decode a size in bytes (either the base object size or the result object size) /// Equivalent to [this canonical git function](https://github.com/git/git/blob/311531c9de557d25ac087c1637818bd2aad6eb3a/delta.h#L89) pub fn decode_header_size(d: &[u8]) -> (u64, usize) { @@ -15,7 +27,7 @@ pub fn decode_header_size(d: &[u8]) -> (u64, usize) { (size, consumed) } -pub fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) { +pub fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) -> Result<(), Error> { let mut i = 0; while let Some(cmd) = data.get(i) { i += 1; @@ -55,16 +67,18 @@ pub fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) { } let ofs = ofs as usize; std::io::Write::write(&mut target, &base[ofs..ofs + size as usize]) - .expect("delta copy from base: byte slices must match"); + .map_err(|_e| Error::DeltaCopyBaseSliceMismatch)?; } - 0 => panic!("encountered unsupported command code: 0"), + 0 => return Err(Error::UnsupportedCommandCode), size => { std::io::Write::write(&mut target, &data[i..i + *size as usize]) - .expect("delta copy data: slice sizes to match up"); + .map_err(|_e| Error::DeltaCopyDataSliceMismatch)?; i += *size as usize; } } } assert_eq!(i, data.len()); assert_eq!(target.len(), 0); + + Ok(()) } diff --git a/gix-pack/src/data/file/decode/entry.rs b/gix-pack/src/data/file/decode/entry.rs index 50030ac705b..bc8d5a2ca41 100644 --- a/gix-pack/src/data/file/decode/entry.rs +++ b/gix-pack/src/data/file/decode/entry.rs @@ -374,7 +374,7 @@ impl File { if delta_idx + 1 == chain_len { last_result_size = Some(result_size); } - delta::apply(&source_buf[..base_size], &mut target_buf[..result_size], data); + delta::apply(&source_buf[..base_size], &mut target_buf[..result_size], data)?; // use the target as source for the next delta std::mem::swap(&mut source_buf, &mut target_buf); } diff --git a/gix-pack/src/data/file/decode/mod.rs b/gix-pack/src/data/file/decode/mod.rs index 205ee757bc9..abd8bf39103 100644 --- a/gix-pack/src/data/file/decode/mod.rs +++ b/gix-pack/src/data/file/decode/mod.rs @@ -19,6 +19,8 @@ pub enum Error { EntryType(#[from] crate::data::entry::decode::Error), #[error("Entry too large to fit in memory")] OutOfMemory, + #[error(transparent)] + Delta(#[from] crate::data::delta::Error), } impl From for Error { From 04bc4a81614146f56f341e15b459dfc1a880bd45 Mon Sep 17 00:00:00 2001 From: Yuya Nishihara Date: Wed, 25 Jun 2025 12:15:44 +0900 Subject: [PATCH 021/296] fix: username in scp-like url is no longer percent-encoded (#2056) Since Git doesn't percent-decode characters in scp-like URL, we shouldn't encode username at all. https://github.com/git/git/blob/v2.50.0/connect.c#L1081 I've split write_to() function to clarify that any non-path components that should be separated by ":" cannot be serialized in alternative form. I've made it fall back to the URL syntax if password or port number was set. Maybe we can also check if the user or host includes ":", but I'm not sure how much foolproof we should add here. --- gix-url/src/lib.rs | 46 +++++++++++++++++++++++++++++----- gix-url/tests/url/parse/ssh.rs | 42 ++++++++++++++++++++++++++++++- 2 files changed, 81 insertions(+), 7 deletions(-) diff --git a/gix-url/src/lib.rs b/gix-url/src/lib.rs index bbde5a08295..7f3494f85c1 100644 --- a/gix-url/src/lib.rs +++ b/gix-url/src/lib.rs @@ -315,11 +315,23 @@ fn percent_encode(s: &str) -> Cow<'_, str> { /// Serialization impl Url { /// Write this URL losslessly to `out`, ready to be parsed again. - pub fn write_to(&self, mut out: &mut dyn std::io::Write) -> std::io::Result<()> { - if !(self.serialize_alternative_form && (self.scheme == Scheme::File || self.scheme == Scheme::Ssh)) { - out.write_all(self.scheme.as_str().as_bytes())?; - out.write_all(b"://")?; + pub fn write_to(&self, out: &mut dyn std::io::Write) -> std::io::Result<()> { + // Since alternative form doesn't employ any escape syntax, password and + // port number cannot be encoded. + if self.serialize_alternative_form + && (self.scheme == Scheme::File || self.scheme == Scheme::Ssh) + && self.password.is_none() + && self.port.is_none() + { + self.write_alternative_form_to(out) + } else { + self.write_canonical_form_to(out) } + } + + fn write_canonical_form_to(&self, out: &mut dyn std::io::Write) -> std::io::Result<()> { + out.write_all(self.scheme.as_str().as_bytes())?; + out.write_all(b"://")?; match (&self.user, &self.host) { (Some(user), Some(host)) => { out.write_all(percent_encode(user).as_bytes())?; @@ -337,9 +349,31 @@ impl Url { (Some(_user), None) => unreachable!("BUG: should not be possible to have a user but no host"), } if let Some(port) = &self.port { - write!(&mut out, ":{port}")?; + write!(out, ":{port}")?; + } + out.write_all(&self.path)?; + Ok(()) + } + + fn write_alternative_form_to(&self, out: &mut dyn std::io::Write) -> std::io::Result<()> { + match (&self.user, &self.host) { + (Some(user), Some(host)) => { + out.write_all(user.as_bytes())?; + assert!( + self.password.is_none(), + "BUG: cannot serialize password in alternative form" + ); + out.write_all(b"@")?; + out.write_all(host.as_bytes())?; + } + (None, Some(host)) => { + out.write_all(host.as_bytes())?; + } + (None, None) => {} + (Some(_user), None) => unreachable!("BUG: should not be possible to have a user but no host"), } - if self.serialize_alternative_form && self.scheme == Scheme::Ssh { + assert!(self.port.is_none(), "BUG: cannot serialize port in alternative form"); + if self.scheme == Scheme::Ssh { out.write_all(b":")?; } out.write_all(&self.path)?; diff --git a/gix-url/tests/url/parse/ssh.rs b/gix-url/tests/url/parse/ssh.rs index 1ef4cc5115c..3dbef52c76b 100644 --- a/gix-url/tests/url/parse/ssh.rs +++ b/gix-url/tests/url/parse/ssh.rs @@ -1,6 +1,6 @@ use gix_url::Scheme; -use crate::parse::{assert_url, assert_url_roundtrip, url, url_alternate}; +use crate::parse::{assert_url, assert_url_roundtrip, url, url_alternate, url_with_pass}; #[test] fn without_user_and_without_port() -> crate::Result { @@ -184,6 +184,30 @@ fn scp_like_with_windows_path_and_port_thinks_port_is_part_of_path() -> crate::R Ok(()) } +#[test] +fn scp_like_with_non_alphanumeric_username() -> crate::Result { + let url = assert_url( + "_user.name@host.xz:C:/path", + url_alternate(Scheme::Ssh, "_user.name", "host.xz", None, b"C:/path"), + )? + .to_bstring(); + assert_eq!(url, "_user.name@host.xz:C:/path"); + Ok(()) +} + +// Git passes the non-path part "user@name@host.xz" to OpenSSH, and the ssh +// command interprets it as user = "user@name", host = "host.xz". +#[test] +fn scp_like_with_username_including_at() -> crate::Result { + let url = assert_url( + "user@name@host.xz:path", + url_alternate(Scheme::Ssh, "user@name", "host.xz", None, b"path"), + )? + .to_bstring(); + assert_eq!(url, "user@name@host.xz:path"); + Ok(()) +} + // Git does not care that the host is named `file`, it still treats it as an SCP url. // I btw tested this, yes you can really clone a repository from there, just `git init` // in the directory above your home directory on the remote machine. @@ -193,3 +217,19 @@ fn strange_scp_like_with_host_named_file() -> crate::Result { assert_eq!(url.to_bstring(), "file:.."); Ok(()) } + +#[test] +fn bad_alternative_form_with_password() -> crate::Result { + let url = url_with_pass(Scheme::Ssh, "user", "password", "host.xz", None, b"/") + .serialize_alternate_form(true) + .to_bstring(); + assert_eq!(url, "ssh://user:password@host.xz/"); + Ok(()) +} + +#[test] +fn bad_alternative_form_with_port() -> crate::Result { + let url = url_alternate(Scheme::Ssh, None, "host.xz", 21, b"/").to_bstring(); + assert_eq!(url, "ssh://host.xz:21/"); + Ok(()) +} From 56ca4bf8e818bbdc14ee9dda68e39acded8f0287 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 25 Jun 2025 10:07:00 +0200 Subject: [PATCH 022/296] refactor * put error into more specific spot and export it --- gix-pack/src/cache/delta/traverse/mod.rs | 2 +- gix-pack/src/data/delta.rs | 33 +++++++++++++----------- gix-pack/src/data/file/decode/mod.rs | 2 +- gix-pack/src/data/mod.rs | 3 ++- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/gix-pack/src/cache/delta/traverse/mod.rs b/gix-pack/src/cache/delta/traverse/mod.rs index 456cd7ec3e4..6d36c50e5a6 100644 --- a/gix-pack/src/cache/delta/traverse/mod.rs +++ b/gix-pack/src/cache/delta/traverse/mod.rs @@ -42,7 +42,7 @@ pub enum Error { #[error("Failed to spawn thread when switching to work-stealing mode")] SpawnThread(#[from] std::io::Error), #[error(transparent)] - Delta(#[from] crate::data::delta::Error), + Delta(#[from] crate::data::delta::apply::Error), } /// Additional context passed to the `inspect_object(…)` function of the [`Tree::traverse()`] method. diff --git a/gix-pack/src/data/delta.rs b/gix-pack/src/data/delta.rs index 376271fa888..f5b7dfb05e0 100644 --- a/gix-pack/src/data/delta.rs +++ b/gix-pack/src/data/delta.rs @@ -1,18 +1,21 @@ -/// Returned by [`Tree::traverse()`] -#[derive(thiserror::Error, Debug)] -#[allow(missing_docs)] -pub enum Error { - #[error("Encountered unsupported command code: 0")] - UnsupportedCommandCode, - #[error("Delta copy from base: byte slices must match")] - DeltaCopyBaseSliceMismatch, - #[error("Delta copy data: byte slices must match")] - DeltaCopyDataSliceMismatch, +/// +pub mod apply { + /// Returned when failing to apply deltas. + #[derive(thiserror::Error, Debug)] + #[allow(missing_docs)] + pub enum Error { + #[error("Encountered unsupported command code: 0")] + UnsupportedCommandCode, + #[error("Delta copy from base: byte slices must match")] + DeltaCopyBaseSliceMismatch, + #[error("Delta copy data: byte slices must match")] + DeltaCopyDataSliceMismatch, + } } /// Given the decompressed pack delta `d`, decode a size in bytes (either the base object size or the result object size) /// Equivalent to [this canonical git function](https://github.com/git/git/blob/311531c9de557d25ac087c1637818bd2aad6eb3a/delta.h#L89) -pub fn decode_header_size(d: &[u8]) -> (u64, usize) { +pub(crate) fn decode_header_size(d: &[u8]) -> (u64, usize) { let mut i = 0; let mut size = 0u64; let mut consumed = 0; @@ -27,7 +30,7 @@ pub fn decode_header_size(d: &[u8]) -> (u64, usize) { (size, consumed) } -pub fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) -> Result<(), Error> { +pub(crate) fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) -> Result<(), apply::Error> { let mut i = 0; while let Some(cmd) = data.get(i) { i += 1; @@ -67,12 +70,12 @@ pub fn apply(base: &[u8], mut target: &mut [u8], data: &[u8]) -> Result<(), Erro } let ofs = ofs as usize; std::io::Write::write(&mut target, &base[ofs..ofs + size as usize]) - .map_err(|_e| Error::DeltaCopyBaseSliceMismatch)?; + .map_err(|_e| apply::Error::DeltaCopyBaseSliceMismatch)?; } - 0 => return Err(Error::UnsupportedCommandCode), + 0 => return Err(apply::Error::UnsupportedCommandCode), size => { std::io::Write::write(&mut target, &data[i..i + *size as usize]) - .map_err(|_e| Error::DeltaCopyDataSliceMismatch)?; + .map_err(|_e| apply::Error::DeltaCopyDataSliceMismatch)?; i += *size as usize; } } diff --git a/gix-pack/src/data/file/decode/mod.rs b/gix-pack/src/data/file/decode/mod.rs index abd8bf39103..71bbf1595c4 100644 --- a/gix-pack/src/data/file/decode/mod.rs +++ b/gix-pack/src/data/file/decode/mod.rs @@ -20,7 +20,7 @@ pub enum Error { #[error("Entry too large to fit in memory")] OutOfMemory, #[error(transparent)] - Delta(#[from] crate::data::delta::Error), + Delta(#[from] crate::data::delta::apply::Error), } impl From for Error { diff --git a/gix-pack/src/data/mod.rs b/gix-pack/src/data/mod.rs index 9286310c1af..077ea7417de 100644 --- a/gix-pack/src/data/mod.rs +++ b/gix-pack/src/data/mod.rs @@ -128,4 +128,5 @@ impl File { } } -pub(crate) mod delta; +/// +pub mod delta; From bfb1c34f75997a603b8f85fca75bf9e1ca310be0 Mon Sep 17 00:00:00 2001 From: Frederick Price Date: Wed, 25 Jun 2025 17:17:22 -0400 Subject: [PATCH 023/296] Small documentation fixes Small grammar and spelling changes to make the codebase better. --- gitoxide-core/src/hours/mod.rs | 2 +- gix-archive/src/lib.rs | 2 +- gix-command/src/lib.rs | 2 +- gix-features/src/parallel/in_parallel.rs | 16 ++++++++-------- gix-features/src/parallel/reduce.rs | 2 +- gix-features/src/parallel/serial.rs | 14 +++++++------- gix-filter/src/driver/apply.rs | 8 ++++---- gix-fs/src/lib.rs | 2 +- gix-hash/src/oid.rs | 2 +- gix-object/src/commit/message/mod.rs | 2 +- gix-pack/src/cache/delta/traverse/mod.rs | 8 ++++---- gix-pack/src/data/input/mod.rs | 2 +- gix-pack/src/data/output/count/objects/mod.rs | 6 +++--- gix-pack/src/index/traverse/mod.rs | 4 ++-- gix-pack/src/index/traverse/types.rs | 2 +- gix-pack/src/index/traverse/with_index.rs | 4 ++-- gix-pack/src/index/traverse/with_lookup.rs | 4 ++-- gix-pack/src/multi_index/chunk.rs | 4 ++-- gix-protocol/src/fetch/types.rs | 2 +- gix-tempfile/src/lib.rs | 2 +- gix-transport/src/client/async_io/traits.rs | 2 +- gix-transport/src/client/blocking_io/traits.rs | 2 +- gix/src/commit.rs | 2 +- src/plumbing/options/mod.rs | 2 +- src/porcelain/options.rs | 2 +- 25 files changed, 50 insertions(+), 50 deletions(-) diff --git a/gitoxide-core/src/hours/mod.rs b/gitoxide-core/src/hours/mod.rs index bdc4f585839..bbd3e3d4146 100644 --- a/gitoxide-core/src/hours/mod.rs +++ b/gitoxide-core/src/hours/mod.rs @@ -17,7 +17,7 @@ pub struct Context { pub file_stats: bool, /// Collect how many lines in files have been added, removed and modified (without rename tracking). pub line_stats: bool, - /// The amount of threads to use. If unset, use all cores, if 0 use al physical cores. + /// The number of threads to use. If unset, use all cores, if 0 use all physical cores. pub threads: Option, /// Omit unifying identities by name and email which can lead to the same author appear multiple times /// due to using different names or email addresses. diff --git a/gix-archive/src/lib.rs b/gix-archive/src/lib.rs index 78e3b4f81ab..150d064ca81 100644 --- a/gix-archive/src/lib.rs +++ b/gix-archive/src/lib.rs @@ -80,7 +80,7 @@ pub struct Options { pub format: Format, /// Given a `path`, originating in the git tree, to place into the archive, put `/path` in front of it. /// - /// Note that that `/` should be used as separator, and that a prefix directory has to end with `/`. + /// Note that `/` should be used as separator, and that a prefix directory has to end with `/`. pub tree_prefix: Option, /// The modification time for all entries in the archive as seen since UNIX epoch. /// diff --git a/gix-command/src/lib.rs b/gix-command/src/lib.rs index a3c428edeba..2ad032c3bf8 100644 --- a/gix-command/src/lib.rs +++ b/gix-command/src/lib.rs @@ -159,7 +159,7 @@ mod prepare { /// Set the name or path to the shell `program` to use if a shell is to be used, to avoid /// using the default shell which is `sh`. /// - /// Note that that shells that are not Bourne-style cannot be expected to work correctly, + /// Note that shells that are not Bourne-style cannot be expected to work correctly, /// because POSIX shell syntax is assumed when searching for and conditionally adding /// `"$@"` to receive arguments, where applicable (and in the behaviour of /// [`with_quoted_command()`](Self::with_quoted_command()), if called). diff --git a/gix-features/src/parallel/in_parallel.rs b/gix-features/src/parallel/in_parallel.rs index 2fcd28d696b..8c85b5426ac 100644 --- a/gix-features/src/parallel/in_parallel.rs +++ b/gix-features/src/parallel/in_parallel.rs @@ -38,11 +38,11 @@ pub fn build_thread() -> std::thread::Builder { } /// Read items from `input` and `consume` them in multiple threads, -/// whose output output is collected by a `reducer`. Its task is to -/// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe. +/// whose output is collected by a `reducer`. Its task is to +/// aggregate these outputs into the final result returned by this function, with the benefit of not having to be thread-safe. /// -/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used. -/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume` +/// * if `thread_limit` is `Some`, then the given number of threads will be used. If `None`, all logical cores will be used. +/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be passed to `consume` /// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially /// created by `new_thread_state(…)`. /// * For `reducer`, see the [`Reduce`] trait @@ -103,12 +103,12 @@ where } /// Read items from `input` and `consume` them in multiple threads, -/// whose output output is collected by a `reducer`. Its task is to +/// whose output is collected by a `reducer`. Its task is to /// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe. -/// Caall `finalize` to finish the computation, once per thread, if there was no error sending results earlier. +/// Call `finalize` to finish the computation, once per thread, if there was no error sending results earlier. /// -/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used. -/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume` +/// * if `thread_limit` is `Some`, then the given number of threads will be used. If `None`, all logical cores will be used. +/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be passed to `consume` /// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially /// created by `new_thread_state(…)`. /// * `finalize(State) -> Output` is called to potentially process remaining work that was placed in `State`. diff --git a/gix-features/src/parallel/reduce.rs b/gix-features/src/parallel/reduce.rs index f9992cfd23d..dce92159ed8 100644 --- a/gix-features/src/parallel/reduce.rs +++ b/gix-features/src/parallel/reduce.rs @@ -232,7 +232,7 @@ pub trait Reduce { /// /// If an `Error` is returned, the entire operation will be stopped. fn feed(&mut self, item: Self::Input) -> Result; - /// Called once once all items where passed to `feed()`, producing the final `Output` of the operation or an `Error`. + /// Called once for all items that were passed to `feed()`, producing the final `Output` of the operation or an `Error`. fn finalize(self) -> Result; } diff --git a/gix-features/src/parallel/serial.rs b/gix-features/src/parallel/serial.rs index 67c170f7a4d..e146481c469 100644 --- a/gix-features/src/parallel/serial.rs +++ b/gix-features/src/parallel/serial.rs @@ -116,12 +116,12 @@ mod not_parallel { pub use not_parallel::{build_thread, in_parallel_with_slice, join, threads, Scope}; /// Read items from `input` and `consume` them in a single thread, producing an output to be collected by a `reducer`, -/// whose task is to aggregate these outputs into the final result returned by this function. +/// whose task it is to aggregate these outputs into the final result returned by this function. /// -/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume` +/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be passed to `consume` /// * `consume(Item, &mut State) -> Output` produces an output given an input along with mutable state. /// * For `reducer`, see the [`Reduce`] trait -/// * if `thread_limit` has no effect as everything is run on the main thread, but is present to keep the signature +/// * `thread_limit` has no effect as everything is run on the main thread, but is present to keep the signature /// similar to the parallel version. /// /// **This serial version performing all calculations on the current thread.** @@ -143,12 +143,12 @@ where } /// Read items from `input` and `consume` them in multiple threads, -/// whose output output is collected by a `reducer`. Its task is to +/// whose output is collected by a `reducer`. Its task is to /// aggregate these outputs into the final result returned by this function with the benefit of not having to be thread-safe. -/// Caall `finalize` to finish the computation, once per thread, if there was no error sending results earlier. +/// Call `finalize` to finish the computation, once per thread, if there was no error sending results earlier. /// -/// * if `thread_limit` is `Some`, the given amount of threads will be used. If `None`, all logical cores will be used. -/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be based to `consume` +/// * if `thread_limit` is `Some`, the given number of threads will be used. If `None`, all logical cores will be used. +/// * `new_thread_state(thread_number) -> State` produces thread-local state once per thread to be passed to `consume` /// * `consume(Item, &mut State) -> Output` produces an output given an input obtained by `input` along with mutable state initially /// created by `new_thread_state(…)`. /// * `finalize(State) -> Output` is called to potentially process remaining work that was placed in `State`. diff --git a/gix-filter/src/driver/apply.rs b/gix-filter/src/driver/apply.rs index 25c8d3199b8..0a530e39c55 100644 --- a/gix-filter/src/driver/apply.rs +++ b/gix-filter/src/driver/apply.rs @@ -72,14 +72,14 @@ impl State { /// Each call to this method will cause the corresponding filter to be invoked unless `driver` indicates a `process` filter, /// which is only launched once and maintained using this state. /// - /// Note that it's not an error if there is no filter process for `operation` or if a long-running process doesn't supported + /// Note that it's not an error if there is no filter process for `operation` or if a long-running process doesn't support /// the desired capability. /// /// ### Deviation /// - /// If a long running process returns the 'abort' status after receiving the data, it will be removed similar to how `git` does it. - /// However, it delivers an unsuccessful error status later, it will not be removed, but reports the error only. - /// If any other non-'error' status is received, the process will be stopped. But that doesn't happen if if such a status is received + /// If a long running process returns the 'abort' status after receiving the data, it will be removed similarly to how `git` does it. + /// However, if it returns an unsuccessful error status later, it will not be removed, but reports the error only. + /// If any other non-'error' status is received, the process will be stopped. But that doesn't happen if such a status is received /// after reading the filtered result. pub fn apply<'a>( &'a mut self, diff --git a/gix-fs/src/lib.rs b/gix-fs/src/lib.rs index b04ba80eced..551059aae29 100644 --- a/gix-fs/src/lib.rs +++ b/gix-fs/src/lib.rs @@ -96,7 +96,7 @@ pub mod io_err { } #[cfg(not(unix))] -/// Returns whether a a file has the executable permission set. +/// Returns whether a file has the executable permission set. pub fn is_executable(_metadata: &std::fs::Metadata) -> bool { false } diff --git a/gix-hash/src/oid.rs b/gix-hash/src/oid.rs index 4e67dadf9f1..7b35c310d3c 100644 --- a/gix-hash/src/oid.rs +++ b/gix-hash/src/oid.rs @@ -34,7 +34,7 @@ impl hash::Hash for oid { } } -/// A utility able to format itself with the given amount of characters in hex. +/// A utility able to format itself with the given number of characters in hex. #[derive(PartialEq, Eq, Hash, Ord, PartialOrd)] pub struct HexDisplay<'a> { inner: &'a oid, diff --git a/gix-object/src/commit/message/mod.rs b/gix-object/src/commit/message/mod.rs index e0cf1187849..9f60b23ab2f 100644 --- a/gix-object/src/commit/message/mod.rs +++ b/gix-object/src/commit/message/mod.rs @@ -75,7 +75,7 @@ impl<'a> MessageRef<'a> { summary(self.title) } - /// Further parse the body into into non-trailer and trailers, which can be iterated from the returned [`BodyRef`]. + /// Further parse the body into non-trailer and trailers, which can be iterated from the returned [`BodyRef`]. pub fn body(&self) -> Option> { self.body.map(|b| BodyRef::from_bytes(b)) } diff --git a/gix-pack/src/cache/delta/traverse/mod.rs b/gix-pack/src/cache/delta/traverse/mod.rs index 6d36c50e5a6..1e0026af782 100644 --- a/gix-pack/src/cache/delta/traverse/mod.rs +++ b/gix-pack/src/cache/delta/traverse/mod.rs @@ -53,8 +53,8 @@ pub struct Context<'a> { pub entry_end: u64, /// The decompressed object itself, ready to be decoded. pub decompressed: &'a [u8], - /// The depth at which this object resides in the delta-tree. It represents the amount of base objects, with 0 indicating - /// an 'undeltified' object, and higher values indicating delta objects with the given amount of bases. + /// The depth at which this object resides in the delta-tree. It represents the number of base objects, with 0 indicating + /// an 'undeltified' object, and higher values indicating delta objects with the given number of bases. pub level: u16, } @@ -64,8 +64,8 @@ pub struct Options<'a, 's> { pub object_progress: Box, /// is a progress instance to track the overall progress. pub size_progress: &'s mut dyn Progress, - /// If `Some`, only use the given amount of threads. Otherwise, the amount of threads to use will be selected based on - /// the amount of available logical cores. + /// If `Some`, only use the given number of threads. Otherwise, the number of threads to use will be selected based on + /// the number of available logical cores. pub thread_limit: Option, /// Abort the operation if the value is `true`. pub should_interrupt: &'a AtomicBool, diff --git a/gix-pack/src/data/input/mod.rs b/gix-pack/src/data/input/mod.rs index d3a36416ed1..a6476fd7a9a 100644 --- a/gix-pack/src/data/input/mod.rs +++ b/gix-pack/src/data/input/mod.rs @@ -14,7 +14,7 @@ pub struct Entry { /// when resolving thin packs. /// Depends on `CompressionMode` when the iterator is initialized. pub compressed: Option>, - /// The amount of bytes the compressed portion of the entry takes, i.e. the portion behind behind the header. + /// The amount of bytes the compressed portion of the entry takes, i.e. the portion behind the header. pub compressed_size: u64, /// The CRC32 over the complete entry, that is encoded header and compressed object data. /// Depends on `CompressionMode` when the iterator is initialized diff --git a/gix-pack/src/data/output/count/objects/mod.rs b/gix-pack/src/data/output/count/objects/mod.rs index 17e5c68d266..a057d45a986 100644 --- a/gix-pack/src/data/output/count/objects/mod.rs +++ b/gix-pack/src/data/output/count/objects/mod.rs @@ -14,14 +14,14 @@ pub use types::{Error, ObjectExpansion, Options, Outcome}; mod tree; /// Generate [`Count`][output::Count]s from input `objects` with object expansion based on [`options`][Options] -/// to learn which objects would would constitute a pack. This step is required to know exactly how many objects would -/// be in a pack while keeping data around to avoid minimize object database access. +/// to learn which objects would constitute a pack. This step is required to know exactly how many objects would +/// be in a pack while keeping data around to minimize database object access. /// /// A [`Count`][output::Count] object maintains enough state to greatly accelerate future access of packed objects. /// /// * `db` - the object store to use for accessing objects. /// * `objects_ids` -/// * A list of objects ids to add to the pack. Duplication checks are performed so no object is ever added to a pack twice. +/// * A list of objects IDs to add to the pack. Duplication checks are performed so no object is ever added to a pack twice. /// * Objects may be expanded based on the provided [`options`][Options] /// * `objects` /// * count the amount of objects we encounter diff --git a/gix-pack/src/index/traverse/mod.rs b/gix-pack/src/index/traverse/mod.rs index 8f13774f0ab..d6b3c5cac0b 100644 --- a/gix-pack/src/index/traverse/mod.rs +++ b/gix-pack/src/index/traverse/mod.rs @@ -23,8 +23,8 @@ pub use types::{Algorithm, ProgressId, SafetyCheck, Statistics}; pub struct Options { /// The algorithm to employ. pub traversal: Algorithm, - /// If `Some`, only use the given amount of threads. Otherwise, the amount of threads to use will be selected based on - /// the amount of available logical cores. + /// If `Some`, only use the given number of threads. Otherwise, the number of threads to use will be selected based on + /// the number of available logical cores. pub thread_limit: Option, /// The kinds of safety checks to perform. pub check: SafetyCheck, diff --git a/gix-pack/src/index/traverse/types.rs b/gix-pack/src/index/traverse/types.rs index 9fc21c0dcd5..91b8d90909f 100644 --- a/gix-pack/src/index/traverse/types.rs +++ b/gix-pack/src/index/traverse/types.rs @@ -8,7 +8,7 @@ pub struct Statistics { pub average: crate::data::decode::entry::Outcome, /// A mapping of the length of the chain to the amount of objects at that length. /// - /// A length of 0 indicates full objects, and everything above that involves the given amount + /// A length of 0 indicates full objects, and everything more than that uses the given number /// of delta objects. pub objects_per_chain_length: BTreeMap, /// The amount of bytes in all compressed streams, one per entry diff --git a/gix-pack/src/index/traverse/with_index.rs b/gix-pack/src/index/traverse/with_index.rs index b3c0f672b08..e31cc2e08e2 100644 --- a/gix-pack/src/index/traverse/with_index.rs +++ b/gix-pack/src/index/traverse/with_index.rs @@ -11,8 +11,8 @@ use crate::{ /// Traversal options for [`traverse_with_index()`][index::File::traverse_with_index()] #[derive(Default)] pub struct Options { - /// If `Some`, only use the given amount of threads. Otherwise, the amount of threads to use will be selected based on - /// the amount of available logical cores. + /// If `Some`, only use the given number of threads. Otherwise, the number of threads to use will be selected based on + /// the number of available logical cores. pub thread_limit: Option, /// The kinds of safety checks to perform. pub check: crate::index::traverse::SafetyCheck, diff --git a/gix-pack/src/index/traverse/with_lookup.rs b/gix-pack/src/index/traverse/with_lookup.rs index e6b9269ea3b..598f5d05db6 100644 --- a/gix-pack/src/index/traverse/with_lookup.rs +++ b/gix-pack/src/index/traverse/with_lookup.rs @@ -15,8 +15,8 @@ use crate::{ /// Traversal options for [`index::File::traverse_with_lookup()`] pub struct Options { - /// If `Some`, only use the given amount of threads. Otherwise, the amount of threads to use will be selected based on - /// the amount of available logical cores. + /// If `Some`, only use the given number of threads. Otherwise, the number of threads to use will be selected based on + /// the number of available logical cores. pub thread_limit: Option, /// The kinds of safety checks to perform. pub check: index::traverse::SafetyCheck, diff --git a/gix-pack/src/multi_index/chunk.rs b/gix-pack/src/multi_index/chunk.rs index b0a1bddba78..b156afdc274 100644 --- a/gix-pack/src/multi_index/chunk.rs +++ b/gix-pack/src/multi_index/chunk.rs @@ -148,7 +148,7 @@ pub mod lookup { /// The id uniquely identifying the oid lookup table. pub const ID: gix_chunk::Id = *b"OIDL"; - /// Return the amount of bytes needed to store the data on disk for the given amount of `entries` + /// Return the number of bytes needed to store the data on disk for the given amount of `entries` pub fn storage_size(entries: usize, object_hash: gix_hash::Kind) -> u64 { (entries * object_hash.len_in_bytes()) as u64 } @@ -267,7 +267,7 @@ pub mod large_offsets { Ok(()) } - /// Return the amount of bytes needed to store the given amount of `large_offsets` + /// Return the number of bytes needed to store the given amount of `large_offsets` pub(crate) fn storage_size(large_offsets: usize) -> u64 { 8 * large_offsets as u64 } diff --git a/gix-protocol/src/fetch/types.rs b/gix-protocol/src/fetch/types.rs index db737b5bcde..f7d3415a783 100644 --- a/gix-protocol/src/fetch/types.rs +++ b/gix-protocol/src/fetch/types.rs @@ -33,7 +33,7 @@ pub struct Context<'a, T> { /// /// This could be read from the `gitoxide.userAgent` configuration variable. pub user_agent: (&'static str, Option>), - /// If `true`, output all packetlines using the the `gix-trace` machinery. + /// If `true`, output all packetlines using the `gix-trace` machinery. pub trace_packetlines: bool, } diff --git a/gix-tempfile/src/lib.rs b/gix-tempfile/src/lib.rs index fc1580903b5..ee87b5825f4 100644 --- a/gix-tempfile/src/lib.rs +++ b/gix-tempfile/src/lib.rs @@ -138,7 +138,7 @@ static REGISTRY: Lazy>> = Lazy::new(|| { pub enum ContainingDirectory { /// Assume the directory for the tempfile exists and cause failure if it doesn't Exists, - /// Create the directory recursively with the given amount of retries in a way that is somewhat race resistant + /// Create the directory recursively with the given number of retries in a way that is somewhat race resistant /// depending on the amount of retries. CreateAllRaceProof(create_dir::Retries), } diff --git a/gix-transport/src/client/async_io/traits.rs b/gix-transport/src/client/async_io/traits.rs index acd27dcee17..6a5577d1725 100644 --- a/gix-transport/src/client/async_io/traits.rs +++ b/gix-transport/src/client/async_io/traits.rs @@ -31,7 +31,7 @@ pub trait Transport: TransportWithoutIO { /// `extra_parameters` are interpreted as `key=value` pairs if the second parameter is `Some` or as `key` /// if it is None. /// - /// Returns the service capabilities according according to the actual [Protocol] it supports, + /// Returns the service capabilities according to the actual [Protocol] it supports, /// and possibly a list of refs to be obtained. /// This means that asking for an unsupported protocol might result in a protocol downgrade to the given one /// if [TransportWithoutIO::supported_protocol_versions()] includes it or is empty. diff --git a/gix-transport/src/client/blocking_io/traits.rs b/gix-transport/src/client/blocking_io/traits.rs index 07c7addcacc..31fb83dc313 100644 --- a/gix-transport/src/client/blocking_io/traits.rs +++ b/gix-transport/src/client/blocking_io/traits.rs @@ -28,7 +28,7 @@ pub trait Transport: TransportWithoutIO { /// `extra_parameters` are interpreted as `key=value` pairs if the second parameter is `Some` or as `key` /// if it is None. /// - /// Returns the service capabilities according according to the actual [Protocol] it supports, + /// Returns the service capabilities according to the actual [Protocol] it supports, /// and possibly a list of refs to be obtained. /// This means that asking for an unsupported protocol might result in a protocol downgrade to the given one /// if [`TransportWithoutIO::supported_protocol_versions()`] includes it. diff --git a/gix/src/commit.rs b/gix/src/commit.rs index 2a5af16f404..caeecc54416 100644 --- a/gix/src/commit.rs +++ b/gix/src/commit.rs @@ -202,7 +202,7 @@ pub mod describe { self } - /// Only consider the given amount of candidates, instead of the default of 10. + /// Only consider the given number of candidates, instead of the default of 10. pub fn max_candidates(mut self, candidates: usize) -> Self { self.max_candidates = candidates; self diff --git a/src/plumbing/options/mod.rs b/src/plumbing/options/mod.rs index fcefffba26a..ae1ea443551 100644 --- a/src/plumbing/options/mod.rs +++ b/src/plumbing/options/mod.rs @@ -605,7 +605,7 @@ pub mod fetch { #[clap(long, help_heading = Some("SHALLOW"), conflicts_with_all = ["shallow_since", "shallow_exclude", "deepen", "unshallow"])] pub depth: Option, - /// Extend the current shallow boundary by the given amount of commits, with 0 meaning no change. + /// Extend the current shallow boundary by the given number of commits, with 0 meaning no change. #[clap(long, help_heading = Some("SHALLOW"), value_name = "DEPTH", conflicts_with_all = ["depth", "shallow_since", "shallow_exclude", "unshallow"])] pub deepen: Option, diff --git a/src/porcelain/options.rs b/src/porcelain/options.rs index 75c287e7bac..595d3ff3bad 100644 --- a/src/porcelain/options.rs +++ b/src/porcelain/options.rs @@ -13,7 +13,7 @@ pub struct Args { /// Bring up a terminal user interface displaying progress visually. #[clap(long, conflicts_with("quiet"))] pub progress: bool, - /// The amount of threads to use. If unset, use all cores, if 0 use al physical cores. + /// The number of threads to use. If unset, use all cores, if 0 use all physical cores. #[clap(short = 't', long)] pub threads: Option, From 212b618c5f99cc75ed612431669dcc2ec4c49a5e Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 26 Jun 2025 05:10:55 +0200 Subject: [PATCH 024/296] add baseline tests for `_` and `@` in username However, these don't show any differences as we already parsed these correctly, while the recent changes have been about serialization. --- gix-url/tests/fixtures/make_baseline.sh | 4 ++-- gix-url/tests/url/baseline.rs | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gix-url/tests/fixtures/make_baseline.sh b/gix-url/tests/fixtures/make_baseline.sh index 5c7d4ff00ec..06e783d43d6 100755 --- a/gix-url/tests/fixtures/make_baseline.sh +++ b/gix-url/tests/fixtures/make_baseline.sh @@ -15,7 +15,7 @@ tests_windows=() for path in "repo" "re:po" "re/po"; do # normal urls for protocol in "ssh+git" "git+ssh" "git" "ssh"; do - for host in "host" "user@host" "user@[::1]" "user@::1"; do + for host in "host" "user@host" "user_name@host" "user@[::1]" "user@::1"; do for port_separator in "" ":"; do tests+=("$protocol://$host$port_separator/$path") @@ -42,7 +42,7 @@ for path in "repo" "re:po" "re/po"; do tests+=("./$protocol:$host/~$path") done # SCP like urls - for host in "host" "[::1]"; do + for host in "user@name@host" "user_name@host" "host" "[::1]"; do tests+=("$host:$path") tests+=("$host:/~$path") done diff --git a/gix-url/tests/url/baseline.rs b/gix-url/tests/url/baseline.rs index 1186fa2366a..60e6c09b386 100644 --- a/gix-url/tests/url/baseline.rs +++ b/gix-url/tests/url/baseline.rs @@ -84,7 +84,7 @@ fn run() { } assert!( - failure_count_reserialization <= 42, + failure_count_reserialization <= 63, "the number of reserialization errors should ideally get better, not worse - if this panic is not due to regressions but to new passing test cases, you can set this check to {failure_count_reserialization}" ); assert_eq!(failure_count_roundtrips, 0, "there should be no roundtrip errors"); @@ -185,8 +185,8 @@ mod baseline { pub fn max_num_failures(&self) -> usize { match self { - Kind::Unix => 165, - Kind::Windows => 171, + Kind::Unix => 198, + Kind::Windows => 198 + 6, } } From 7d6e4f05140d5f3d4f44b2e6db0263db1c98b705 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Thu, 26 Jun 2025 06:47:13 +0200 Subject: [PATCH 025/296] update README landing area --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index aa26ba83926..e23f4dc4490 100644 --- a/README.md +++ b/README.md @@ -39,18 +39,20 @@ What follows is a high-level list of features and those which are planned: * [x] clone * [x] fetch -* [ ] blame * [ ] push -* [ ] reset -* [ ] status -* [x] blob-diff +* [x] blame (*plumbing*) +* [x] status +* [x] blob and tree-diff * [ ] merge - [x] blobs - [x] trees - [ ] commits +* [x] commit + - [ ] hooks +* [x] commit-graph traversal * [ ] rebase -* [ ] commit * [x] worktree checkout and worktree stream +* [ ] reset * [x] reading and writing of objects * [x] reading and writing of refs * [x] reading and writing of `.git/index` From 9568c6ef6f280cea107fb1c8e779864b491e3879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Thu, 26 Jun 2025 19:29:08 +0200 Subject: [PATCH 026/296] Add --asset_dir to blame-copy-royal --- tests/it/src/args.rs | 4 +++ tests/it/src/commands/blame_copy_royal.rs | 34 +++++++++++++---------- tests/it/src/main.rs | 2 ++ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/tests/it/src/args.rs b/tests/it/src/args.rs index d3b1bf75131..145bbd9563b 100644 --- a/tests/it/src/args.rs +++ b/tests/it/src/args.rs @@ -4,6 +4,7 @@ use clap::{ builder::{OsStringValueParser, TypedValueParser}, Arg, Command, Error, }; +use gix::bstr::BString; #[derive(Debug, clap::Parser)] #[clap(name = "it", about = "internal tools to help create test cases")] @@ -51,6 +52,9 @@ pub enum Subcommands { worktree_dir: PathBuf, /// The directory into which to copy the files. destination_dir: PathBuf, + /// The directory to place assets in. + #[clap(long)] + asset_dir: Option, /// The file to extract the history for. file: std::ffi::OsString, /// Do not use `copy-royal` to obfuscate the content of blobs, but copy it verbatim. diff --git a/tests/it/src/commands/blame_copy_royal.rs b/tests/it/src/commands/blame_copy_royal.rs index cef93929a9b..75a31bd90e2 100644 --- a/tests/it/src/commands/blame_copy_royal.rs +++ b/tests/it/src/commands/blame_copy_royal.rs @@ -23,6 +23,7 @@ pub(super) mod function { dry_run: bool, worktree_dir: &Path, destination_dir: PathBuf, + asset_dir: Option, file: &OsStr, Options { verbatim }: Options, ) -> anyhow::Result<()> { @@ -76,7 +77,8 @@ pub(super) mod function { .blame_path .expect("blame path to be present as `debug_track_path == true`"); - let assets = destination_dir.join("assets"); + let asset_dir = asset_dir.unwrap_or("assets".into()); + let assets = destination_dir.join(asset_dir.to_os_str()?); eprintln!("{prefix} create directory '{assets}'", assets = assets.display()); if !dry_run { @@ -107,7 +109,7 @@ pub(super) mod function { } } - let mut blame_script = BlameScript::new(blame_infos, Options { verbatim }); + let mut blame_script = BlameScript::new(blame_infos, asset_dir, Options { verbatim }); blame_script.generate()?; let script_file = destination_dir.join("create-history.sh"); @@ -130,9 +132,9 @@ pub(super) mod function { } enum BlameScriptOperation { - InitRepository, + InitRepository(BString), RemoveFile(String), - CommitFile(BString, ObjectId), + CommitFile(BString, BString, ObjectId), CheckoutTag(ObjectId), PrepareMerge(Vec), CreateTag(ObjectId), @@ -141,7 +143,7 @@ pub(super) mod function { impl Display for BlameScriptOperation { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - BlameScriptOperation::InitRepository => write!( + BlameScriptOperation::InitRepository(asset_dir) => write!( f, r"#!/bin/sh @@ -149,7 +151,7 @@ set -e git init echo .gitignore >> .gitignore -echo assets/ >> .gitignore +echo {asset_dir}/ >> .gitignore echo create-history.sh >> .gitignore " @@ -160,7 +162,7 @@ echo create-history.sh >> .gitignore git rm {src} " ), - BlameScriptOperation::CommitFile(src, commit_id) => { + BlameScriptOperation::CommitFile(asset_dir, src, commit_id) => { writeln!(f, r"# make file {src} contain content at commit {commit_id}")?; if let Some(pos) = src.rfind_byte(b'/') { let dirname = src[..pos].as_bstr(); @@ -168,8 +170,7 @@ git rm {src} } write!( f, - r"# -cp ./assets/{commit_id}.commit ./{src} + r"cp ./{asset_dir}/{commit_id}.commit ./{src} git add {src} git commit -m {commit_id} " @@ -194,17 +195,19 @@ git commit -m {commit_id} blame_infos: Vec, seen: BTreeSet, script: Vec, + asset_dir: BString, options: Options, } impl BlameScript { - fn new(blame_infos: Vec, options: Options) -> Self { - let script = vec![BlameScriptOperation::InitRepository]; + fn new(blame_infos: Vec, asset_dir: BString, options: Options) -> Self { + let script = vec![BlameScriptOperation::InitRepository(asset_dir.clone())]; Self { blame_infos, seen: BTreeSet::default(), script, + asset_dir, options, } } @@ -265,7 +268,8 @@ git commit -m {commit_id} if let Some(delete_previous_file_operation) = delete_previous_file_operation { self.script.push(delete_previous_file_operation); } - self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); + self.script + .push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id)); } else { let ([first], rest) = parents.split_at(1) else { unreachable!(); @@ -277,7 +281,8 @@ git commit -m {commit_id} if let Some(delete_previous_file_operation) = delete_previous_file_operation { self.script.push(delete_previous_file_operation); } - self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); + self.script + .push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id)); } else { self.script.push(BlameScriptOperation::PrepareMerge( rest.iter().map(|blame_path_entry| blame_path_entry.commit_id).collect(), @@ -286,7 +291,8 @@ git commit -m {commit_id} if let Some(delete_previous_file_operation) = delete_previous_file_operation { self.script.push(delete_previous_file_operation); } - self.script.push(BlameScriptOperation::CommitFile(src, commit_id)); + self.script + .push(BlameScriptOperation::CommitFile(self.asset_dir.clone(), src, commit_id)); } } diff --git a/tests/it/src/main.rs b/tests/it/src/main.rs index 9ce46e98a87..df22a7e8c6f 100644 --- a/tests/it/src/main.rs +++ b/tests/it/src/main.rs @@ -29,12 +29,14 @@ fn main() -> anyhow::Result<()> { dry_run, worktree_dir: worktree_root, destination_dir, + asset_dir, file, verbatim, } => commands::blame_copy_royal( dry_run, &worktree_root, destination_dir, + asset_dir, &file, commands::blame_copy_royal::Options { verbatim }, ), From 73a30f8a91fcf5db1244a9a5388e05f4349b0c2e Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 27 Jun 2025 05:01:06 +0200 Subject: [PATCH 027/296] Fix CI by not using `-t bad` --- .github/workflows/ci.yml | 1 + .../make_rev_spec_parse_repos.tar | Bin 1125888 -> 1125888 bytes .../fixtures/make_rev_spec_parse_repos.sh | 35 ++++++++++++++++-- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 46bdb84b19c..ab698934c86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -298,6 +298,7 @@ jobs: libssl-dev libstdc++6:${{ matrix.runner-arch }} # To support external 64-bit Node.js for actions. pkgconf + python3-minimal ) dpkg --add-architecture ${{ matrix.runner-arch }} apt-get update diff --git a/gix/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar b/gix/tests/fixtures/generated-archives/make_rev_spec_parse_repos.tar index 580318e487613f19e9e0ac89cdf74d8b06ecf542..bfd170c64aa2817476be80defa78259d41d82f1b 100644 GIT binary patch delta 2740 zcmb7`eNa?Y7{>QpfxUNk@7_gLKwudh5SZlS?k?_vAu6tbh80vZMTJ>vOJnq*k~m80 zxGp-A2y1(ZA>9-hKQI{4dl)1_#t(83Ej2L_W*k#17H1-Ch61|h+-o0B1DC(vzn=HJ z=Xaj-oU^spwzb#RsL=%5^Ji&@s<)aSSD;V?_{P{?bwz1%^uELEVa@l)?;R;^i{afv zy!n3FPjH)u`Uq462Xmp1n5C{!gOam%`>;)wTJI6UVrp_W#}Jy#g7xohELgQVd*z$! zxV~QISt=!kO)@20tgK6Q`e6kh&Mj!AXO~CJstEUS+3yMRRxiNvHktA^+OH|9VBzQUvbtAX=zOv}SNoAs|P;iK;49 zRe8=t)@Np(ymhfrzB~Ryn1IzD#nP6ugu`_Sl&O9GJ&lj|VYDk3mjZZ^0+;5x$)lMST z4-&CTRS{ld#)_&Mv;?Z+5*dCX>~H^UT3PYym1FB})CPyf7Z>)QF5WJ}cGoK{$eam+ zw>bL=B?~J(O79n#OgbqOzdMUu#IYS95;s|>Hp0&`$N_+xWKE%ol?ywpi^omcfC0<1 zWy|Z8CN8K^XZmL&&y(KQ3CmpQ{F2O`^t3Lz-O6|ve}e4y$1t_dv1sv^uKZ-_8| zA3Jr)6;jf(X;s!$SNnsvOY*N4OEA00Ct;o^C75iZ8qv7ntT+N}^dfg)aX? z^F!J4F7ip5MU+JI8YPEj7b(!}p(L8q6$|$wny5-Nn=s7)+wiB>uH#3S=N4td2Se>M zsdxK0<3_C+dhUQFz&%JMBYVaPrwZ)@ltB!JJu0~{cdODwnBxXt&YngJ)~rxTF!xQN zOA4~)oc~y}Qnq}MNL`)~IvzHb+lt&5O%+ z1f0?DZFu3_zBN}Cu8>kUPp$b5IbR)mZ|mseDyq|y@C(A&iJaYed{*bhO zAT6bSGcEUUPta*xghv;R&CyC5#3!I_3i^56e3pq3Z`$L?>5#4Oq*J)mBqmnW2ht{3 zb)NpEmawwWxmNq!q?vQU9Z0i~eP7!vW{$Gf>5sUfDsr>6h}=TII`F}ofZe->p1FCc z)U$uXoZQlU3H@GeDoov>T`Jy;Xhtr)I3^QiwgHSDP~a2?6@g3nU4r&;j9)& zPP%3MT)Q`GlVNfav%HS5nxXRtCU;WZSwUll=04`;3~W;Kf^&C}Nl_J1E#|qX-VzK UHxw3ZggJMa1|S4SU9>;>7aeD|x&QzG delta 2514 zcma);drVVT9LIYukKWt%_O{B)N=b~?LKyKufVl^bp>773>7eW(noTCV=ibX6#;*MJ`{(z) z=XXBmd%ovZk2jAYG-`X3jl{v$;qK}>l z*6Hg9wUwAL4Z4E>_3Ju!mT0H5%+1V;=G&`A1SdFztcy7yfSJ>8-o=q$+ zSah;;$zj+BVf|IG0Mr#@b;Tid#i739FmM_Gh-t!SLQsthpCJHnVM*Z-OOndApe4#Q zjT`69R$+g4s>6IELUmQ0J(jJ&p#vkU8NlhSanM>=tk z2a$sZq08jq%UQYyEaJu4@-(<_1wIaVao!xn8EouPm7W)O0WB{p2r6rl8rW#B%J9#? zkK+?1Sh^XyKEw+G`Oc1g&M;Cv)VJYR)I2Sf{>~mm3ssTUDuLGX`KR`6Z&dCZncmsf zIi@}It7FwHt$zGoT79@k%Si;I0qnaDx%s}i%*NZXLB>y{ z!qgS=OT6>erte(Y!J*`<7zOWhQ6Mjj&?ghWztZ|@s;a*w{;A)F|5)A8(Jf|Pv0QP1 zPfSTxSrn%(MO9GSLeYCNKRelyp11P&6W;3!rox8W*1fpna(m6#Ho)X5bWpccF@BBr zy&R0X(Ltgr9%P7ckYxPGGiyGI3p+UcX|rj=2js#huT+VvN0DOUo+N{vT^pIn>O87M z{>(c`tq{LmbI>hg?KHJmxE-^3&=XX5hP1La6O|-2{Uu~yixgB;6NB) zqDUIjFDOTaKnP=WLkJA20vNkj0Hc-v?5{d;>gHFu9RsItd}i5l?!7wE;k%VKXxpXC z7o43)1*4Nf<)XyY@+OM|sgPYl`Gv$xnS42>0IrUHer5CKG>B7)Hez(xY0BVP-D14+Uz6>L%4B#=YX4AQs)| z3XINxuA_nbkEtd@(W~!O)t2&*l> baseline.git } +function loose-obj() { + # Read content from stdin, compute header and hash, write compressed object + script=$(cat <<'EOF' +import sys +import hashlib +import zlib +import os + +type = sys.argv[1] +objects_dir = sys.argv[2] +content = sys.stdin.buffer.read() +header = f"{type} {len(content)}\0".encode() +full = header + content +sha1 = hashlib.sha1(full).hexdigest() +compressed = zlib.compress(full) + +bucket = f"{objects_dir}/" + sha1[:2] +filename = sha1[2:] + +os.makedirs(bucket, exist_ok=True) +with open(f"{bucket}/{filename}", "wb") as f: + f.write(compressed) + +print(sha1) +EOF +) + python3 -c "$script" "$@" +} + # The contents of this file is based on https://github.com/git/git/blob/8168d5e9c23ed44ae3d604f392320d66556453c9/t/t1512-rev-parse-disambiguation.sh#L38 git init --bare blob.prefix ( @@ -31,11 +60,11 @@ git init --bare blob.bad cd blob.bad # Both have the prefix "bad0" # Maybe one day we have a test to see how disambiguation reporting deals with this. - echo xyzfaowcoh | git hash-object -t bad -w --stdin --literally - echo xyzhjpyvwl | git hash-object -t bad -w --stdin --literally + echo xyzfaowcoh | loose-obj bad objects + echo xyzhjpyvwl | loose-obj bad objects baseline "bad0" - echo 1bbfctrkc | git hash-object -t bad -w --stdin --literally + echo 1bbfctrkc | loose-obj bad objects baseline "e328" baseline "e328^{object}" ) From 92751b725e9ce9f6915577fbdf50f1fac9e8db41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Fri, 27 Jun 2025 09:03:51 +0200 Subject: [PATCH 028/296] Add test for file with two roots --- gix-blame/tests/blame.rs | 31 ++++++++++++++ .../make_blame_two_roots_repo.tar | Bin 0 -> 90624 bytes .../fixtures/make_blame_two_roots_repo.sh | 40 ++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 gix-blame/tests/fixtures/generated-archives/make_blame_two_roots_repo.tar create mode 100755 gix-blame/tests/fixtures/make_blame_two_roots_repo.sh diff --git a/gix-blame/tests/blame.rs b/gix-blame/tests/blame.rs index cdd91f852a9..d32d316ee53 100644 --- a/gix-blame/tests/blame.rs +++ b/gix-blame/tests/blame.rs @@ -333,6 +333,37 @@ fn diff_disparity() { } } +#[test] +fn file_that_was_added_in_two_branches() -> gix_testtools::Result { + let worktree_path = gix_testtools::scripted_fixture_read_only("make_blame_two_roots_repo.sh")?; + + let Fixture { + odb, + mut resource_cache, + suspect, + } = Fixture::for_worktree_path(worktree_path.to_path_buf())?; + + let source_file_name = "file-with-two-roots.txt"; + let lines_blamed = gix_blame::file( + &odb, + suspect, + None, + &mut resource_cache, + source_file_name.into(), + gix_blame::Options::default(), + )? + .entries; + + assert_eq!(lines_blamed.len(), 4); + + let git_dir = worktree_path.join(".git"); + let baseline = Baseline::collect(git_dir.join("file-with-two-roots.baseline"), source_file_name.into())?; + + pretty_assertions::assert_eq!(lines_blamed, baseline); + + Ok(()) +} + #[test] fn since() -> gix_testtools::Result { let Fixture { diff --git a/gix-blame/tests/fixtures/generated-archives/make_blame_two_roots_repo.tar b/gix-blame/tests/fixtures/generated-archives/make_blame_two_roots_repo.tar new file mode 100644 index 0000000000000000000000000000000000000000..bd43717b012224066d2bd15c7c052caca1c071e3 GIT binary patch literal 90624 zcmeHw37lkAb$0_o=z@er6e9V|o0`V%p6RN3@731T&@&7@!_Y7rGd&{C(!6@_Rd>x) zSJl)qJfiK_YG#+=-Hy7#D6)hZsY?z?lL4RQ@^9*@uL)MXN6!)ru>7a9 zmVKai3vMOjaQ-JpG%Ue)+Cb?uy>#{64O)@3|+A zJora_eJ{VQukW}g(dI1tJAK=(mB)P}agBdy^5pWvzr8tr(((6R+;?^=ov{P+>C$YV zG@lC;a=B75SUNz)1&w#YonQWU=eHR5+c(sWd-AQ1-+AM4M&iON*Wd8%*FT~D;KrNZ z^{u`$%h`gRF-o=-pc&+l7`3l&YU{dn`1Qwqx}y4C`)_wWeD4$XUp&6)>YtqQ^>@DS z#Id>eY+bjV7PsYaps8Rx-kIdD*PnULyN@dGC`q zeDZ|U8^7Z`nTU6KlKkkbAoRDVhaKE4E$mFFW9MK z4`CVrbkTB1^u;HB<|6__v9D$KgoY+);6r(FhDo- zkH|`%jN+anJr+YC<#_FOrJbY9bjPHH~=0F!iu* z>t-w*wv1?G6h?T$jHVK?MA&l@n;`G^;8At|XZ;_t(y5ePu(PE=vS4J**`-)w7xEv~ z;)oY5#pJEVc$WKrqedj2)GX65qn2SrQkI<;p`6g;au4Gz;l`Nh#%&a^6A+PB9c_ z4#eWXA4;iU+e$8rr#M7Xh<$>-l+G0$Dqm1!rXnt&Ao{V+rGbO}Mj>q^Gd7J`vVlv$$)=rM`3<4jvg6>@Vt zVr8uuK+=&{Yv$(W(xvkSEt0v?Y>WAoIiqCGVh{pT4hnS8AS3i_K`{!pTs-iY6YaTm z)}9BdiMUv3DV?t_MbIT!%RK0t#7Kk{{F&Qt7Yb?1=8+^8F+kFuHTI`-<-+-3x_KLo z1YkL|Oxl^;Jn)kyO*RKYgB<|0>|E`NVF+;wB?FWQ>-k(dTT)WF0?~QDolT>!GM58d z(gBd|>v0@fCYs@D`8XwR| zJSR(vX^@CQUU+On$>y?wtL;LL056r9*99B#j4VV$j)++~yNFSWxe*e$IT*g^E*G`H z?U}n2teL=d^WSjLXQgdrXjnPu>$lC>oU-agy5b*L;m1b;NAn#b2samKXaaK1*b8+5 zM$AIsi$$YA0%l}qggn-dF9a?}^I{YM24SMWD4Dgvzx*W#S4jG0sHxiTGRaG#V7LBa}zE~1g3*$Bh}v2hWMiq)E=U@!=i+|jg9c!JmH zu!Uy@ug(#FQHy$5(nNTW0Zg1WG60(9!1fLjf$`9xh`|8~)=Hlo3qU|7zGL1I+zJ|k ztD)=m+IC)2NXg_(BU7QVT!x#6#9$WbMPfUMmt7#0F4jc=xpY?2F3sDLxXz?O;;<>S z6G9D&?h1Hwih%7XKf^N3Z{8m zEn^=yW1~&+(WWn1_Yy)83!_ou1t4!`=W*h;Lfsuo(s` ztWdAD`~zb9^Sj5L$dxk|YY=JFxfz!@m9#sfmDbdT1^n!8;`09lK9|hvtKzkV{})Hz zXTARy=JSH;5WV~BSswqZ`hVoP9o_*S@+D0E&d_9s{sHd$)42TZ`c zz?awx{G@)|`<`DKt%aE~TjFE*HkBnKq&RD6fgHq||9}7sHxjl|mVK&{<4}&E3-{nB zl-5BK?-!iw7u)It`(*$nz(4qd!&^ZBmYa7i0ADD=+eqee8Ji3`8}0#YN^CONx9XSb z?9Dt5mIwpJF<2FV<#?h&MXCCDWFRcSlFkm6u&on*T(DSn#xB`FV+%;Q9c`kF@kTIc z5+0%(AlRi@Xbprxv%{)iAoE1{LBN5L0_7DGikr->pljs}5Ex+5wF}Fx-Q_!WAlOJ) zNmWX8ivsfM8G5@dP=vcpu>xK(NYVfkMoin5SiNJ)AC5I(GmzOpd}(ud0Nuc|$^=|# z@=G!>G<{M=#@UmAjKDL%-@4xiF%f@<{bU$Z$88223K_{D^I?Y)xEe0VdgS&Z&&#ju zI-d{)1BzWZ|61lt@;X?YWVEMZP15G;fB{<$9-q@u8N%R>VL8HonY=9*%XxB%t?`0LxmXTp-qiKg42I4LdD`Pbn=qxeSR3zY@rab&1~9&ti~)hmv1VOfdz5Aa@E$lK$jL)^mcQXj)&1R?H%VcHtP-C@{Q&#JA4sBd2b z1!TEZe_nM(MakY3ZP8ZmO6y@_P-&#YCCKK;kLTDTdA9jNj?7bfgkdSx150;M+c#Kc zT^OpB_Wog?X}~r154bw|$shA?&(h{#xwNr=g>sGJM;FQRD^{#fwut%MFetp0z*ZKD z8jdISf?BrdKmUB6T{KKb)+Q)Qt`P0Xw}w0n2=*h9CW9v!4AL)(wZNA|;FRNIv|S0L z;t?1+=%avx#Ac1H-e99+A*F&cxI+yjj6iDFpfacq4ht#w%eno^IM6~Px`aT0HO*Wq zrj}lU`wPj^6<4F=EJt_-65);njyMzYsEqr5d{^Wgve1eVu~s0xA2HBupvGpv!{ThN zP@0y5jSn1@e=T2L9pez1u>$iC)Qg{AS%y`X3T4~1$bJ`nr{GQ3&pM(E)XWO96xoT8 z+LwHFR)W<%RFdC4@^-M@Ael9^7eXr;ph=*pfEFB2AcM%!ibQDeXWp2BvE*n^j3pFX ze?L@PKe1E|-UN9B-XxdM&RmNM@dci@M8sM$FvxHan|B8*UKC19EkLZNtD9gI*{^|8 zdC`m5r^UvF695Wu4M^fEtCWg2s_3g;q+!)!uW}P$3V0uMx(s6LB$si40(eDa8#kfY zMvB-jbbtfbAkC3Lu5Pi8$EER5p_8*QRizQE;vcA2$tVcNx^ zZ^CKyi*RiK;;R};I+lc+Ixc<_JvtGx=I{!Os~+Eou$X){Qh~W5N!1Qbme|;kkAB$whju(mkVi%=;7>ec6~sjaZ&Xj|JZj_An27=!-Xo6XHb zr(u7h;HQk0Kq*1qszOJ{NYp~^A5xvOrB_u|bsOKs>1>*gZ+xuFyxT*)3r!r2kzMhh zJc6zi%wF;c5ZOVCu6eEEl_s~8Mk zvZ74V(Kj@rbXQ3WA!v^ z6!sz4QMlOTT7iCY2z((ZFMVe6Br>r6l|WV@$pm5Z%HVEvpzr|$Pu_n8D`-|dR;qI` zIH%#_Tp6La>V(8F5m9D%^%EAZJ;B=GaDc`@cc)JDky)OKAnP*#Fg7 zlrCbr>wjp`u;%4|ABF9|ue$#)e*UwF0U+cNM?z4ylmbv;A#pl{gB3e~YegAHIg34M z3L2Yp9-!svM3?1=wRL??lQ?8Z7mH=mE(RF`m;*7oV4vDB{GJqE5Xr{FG!J#08Y~p8Z74#wX~%o@{8bEHKqYAgqD=)AR@vc8cZ}E z##uJ$_rL+Dp~?_`ii=RrNA1IbgW5{}z=i%pzOkMiWY@|6oL!i4U|ljlpr!mr8s#5J z!Jhqp6coTx%0FbR&Iy2Uf}iBUFT(y6D;0KpodQ7L_EkVr1;Dl`GFy-&O7Zxn%7EdK zrbIU?!7U$6ltNXu)VO#5`)Ke=r}9sM7GcV|<1I~ge$hy7{nU%|wq(dmWNuL~ks^Hf7HUI| zD$V&38G?hRflopGT`2%gR9772p%cEntN1PGgAfvFdyBylJ^mcbXx|o z%5(u91wxD*SK8052%-Mv$`<6cVd0#h=Z00{3pomYBqnF_4gw|Q7_QED|JE<{%(EAaJ`KtbGg0GbIi6Fa$Qxt~A{|nd{k@bXYaJd{% zX4wYFCu=IAp5pYylN;926(0F$+ve?CC-6Y`QL6X&K-lLCm5T+whlj-cj1ou(lg3^| zw2*B8Cl^7_a+WSQ49$gh2V2oJ6bz!-@`2DW1;FZ{;7l=@%uxf)$N<5@nH)%q9J!`s z<8BMQ>ycrs96!wg1SJN=_h=#@_3zC3m7sDJ?bwn*Dv9H@oN^U<_LHFwXhY-x4=^LI zT&awYD{3>~6`Vu@nia$14<{RE+vba8Fc6pUIQL8}ZED@t>B+V0HccT*gR_dV%3v|H zd*@Ja#j2gd!4(6c8U`3sc50zKQfiiSiUQwHfz?yO?HamRP@oG0>1+UK!JRr}eTk>Q zG3NI-Lp5gw36FrX@M`c)Vgg1ZzFG{qE}Q~U%LIm|iBnguY=$8WhY(~Z`$p~l?_AGZ zqK#hy(qjKd=&!;5k3?gh{oe^4yKUR<{?GUM*vJ>hQc5mQDZiv*c@uI}tGpCPX$jbf z=qy1T*ofBPdF=U6`~`V~agZ7&;Zcl}BB5;4f=$VQ)vg$&a?Q^#zVy4tBn1q(y4iFc zZl~QA;w40t&IiaL-?Dw%CDWU?OigayG(E9-`=%-97D{?t_4SJb9`4~ENFxO`LuWRJ z>DNyuJN@>4+>i6)KV^G-XG2pAf;Lh$b0d*f#|a*cAWjXD`5v70QAyOL@S>AwFVa5- z4)PGoSBxL3Bt=n*46@A#yL2E@J-A>!iW3qj(V?`mQqhL-Js)Fqs7t!#L9gG_hXI%V zPZj5KS-MRhn5P3EgSV(a`=Q1GM{E}$<$V^kj#YUL$jq)zBm>NrC>uLV}37j z-)uPqKe;Gs$h1Vta_Au8%!_r=ct&hPHdmi7TrBs$G(6|^2OOo6TcXt^0I5;Zu{d^3A+cuTEv(h=C z(z=cZTyy!6AS_at4rph$8L$IkNE6t!eS>uE+783*E8B&IiY7oB4-ZbIIXDAa-hRL( zU^`e*9EwYu)b_{j?weash6W@hkdIB6pB5{}^=V*!7}@I=uGzZ&#mrjUv(gRZ@S5we9Y6+y>;?Jy$#wEy3|0W-3hm4y|l1Rb(X7Ers0jL>( zC`=PMr};MjxH4ml&uBS~i^xO6SO~R)OM+qwcd*YWgwCA@ZQDTw~8ITblRWvIRX4Vfu`LtM0SYj_5Lo zxVEj-J*SZg@*F02+D0MBNlT4y-z8A|GY% zp%LZ6gZz;t?a(0_?huutASh~jNf?F(xMSKvPwvA^H;uJWE=zNktH3Nrq^1Z$K%3B_ zQnMq9f0ZBqVdi(%M+I^aED7S5pP+&yr?b#k$hGAjW93q66lla3f}imi%q*eXnHA76 zf1n8-LoK5T0qP6{3D~@S3KLhxk|W7MFu3DCsx*_x!5SDL7TC#8#MfdfP*kAJS-~_9 zpF!8RZz!)RfOEYDhn|z%N~Nn2-rb~`ZY2aI%~`Wv~eb_KD2Yi z#3dWnPBVh#-;j2;Kk$O*)pjOS}aX4 z;iR}VC;+n$VE7_$U83m4ygf*VFh$OOr_3mdsi2BO%C*-JPl*x**baD)Y1FlxZAn)N zDozA(FU4GOd>X_EG{_VVY*FR`ksu^|W1~tJM-%~oNJQjF9?#$heX~?k0uX`NWJBOf z8iV|jthsAqyH|o5l9xPo?dQRrFJ{Od8dMoI!*v(PNTX zXU*Bn0tY~|jX+iLhQVyqMZwuHfJv1L0ETi$(zT7mh%O3J-0aYzu-LefK8 z3R(sIh8od1qTr$zs#)3lQ2N3zlvZOa7CdCq)o*+|d4m3$FXYtw_U!=k2pofx8oG|` z0%*7_MVd&k%(!yF1^)hZo7NK0{X6{pl+;tLz~RZkn&D_datj?Ij43<(#9aPeBmCHf zQvNDe!Vo+B*qOMM)PMe6yU_X&{sRaWRjR~16=7l^i9)UQDmM+1yi2`WRi6R_SazMl z6fIbuCpSqvp_Ndo@-aS(&9$QDXh)PPGjzUkfujyq(Z+`v4!2oU)&c~O&PxyQQ@5jv5$1E;+t6%QqjYLU_hO{pDB;55h$;5SSkD+ObmVkYP0A| zvul;2vZ@*o%?a1?Pk=lZ!mVGb0S83|4CFGXcf-bda0PY-XhN#{q9FW?0(Ro|Aq#+Q z!RI*$u@Q3w0+_O%8Qps>cWRJl+H>nST@Kn+giQ21?8e)Mty;7B0$zbCLR!1~FFGxP z=z2yIZ5?B}Ez^KUC$?EcL@O8(@N?VNibpiA7A6qC@ zcaX|bLHCJMJE60S6d$C$lAH3k+iT|Ld(1Qo4 z03e3tQ#Wb}+Y61Ue4g;FaW#ypL(M}2a|wXFvB3RlW)tZbl=Do(qi=@lK*Ie-c}84l zz@EK7ZQ))4Z^YO!nNMr%dbSAJu3wDQ=vk*!j)>NRHccIbA%Dm}Ocr?U{>mOFi+jbH zV6G89RJ{iSYmO9wV{XFq#HQPz7i*W$!rEh5s&K0$J$Ylo3a|72q~;os{ysT`fPtOX z-J3~W4$c)9ii65E*C+$>fw?e)3oL_DwYWNB)mNmmVSQ|DyeJph)Z1sL}*6O(BQ!y_9f9M{jgLSLA?{D7_DzjQwtnMV#~KtA zro$>Dna-q%jdIGiTn5$Yi;AWq8MboVTPh5rMli*PX%xZ)B~T)|ECIlNj{FuR=;rCH z1H+`qhm|o?glv&K$>)p=8eBn6h7l~%H1RKocr8Na^c~f+1@gw%P#w1chx4zY^Rf*S z(`zmF9pLPY%_;s&T3gZ8iHIRp}O*R4h7`t-~tr|Kz4^$ z5jFNri82U`bF=|l0oR7LKV7T_gGkZ@w;_OyK9gc1D$*i~Dv+oW@-40cPoD@p%Nc{j zQ6zIQGG&Gp9j|R1q5qC5mzJ~XoHBv3 z6G#g~4G<`jDX0iP`3!<*aFKvQh0s$}P}H69FAD(^WBHxkl+_#tq1r8ba!K*}7Secf zKWAM@wioLgdVvW>rKAbE4MO)s=}$5$F$SslhSxR_bPhnB7Iz`#SI*<4&o;!1Q*h^u zUL-S*bRcZ6bo-5tP08F9C0(e4sCpqws0fr;$`CeVVa;(4D?cX4se|+46wwj2NCZ-W zz{Sd+;8uIul#>A@wp&P(%Tjm%iLa=#*)*8750nNS$oQleVMRur1Q1ns4fbSMl=U}vIZ4eV+1**MMWBWjD4iP|dIS!K5Daw#{#HWfRp?=#Qt#zkNYq%NJ`4)%g7WF1jFamw27~! zaW5>BQixxeyf&QOH!2B`k>jIA0IUFGMNmBdd3sI!tSI$f@9Bw?m(S zgHnVJ(Tx?@lUKRA>xb!1$9CeUN%yMMx!@4RfT|B5a6kc^Rf&G4cin9M3Xp<=SMlKk zOEj05c6SBN#dt1OtCG&qAUIP3TXO~oi-#DOlHgh7w9W|TR3sAO>Z9_iLWxMghyry> z3N$dM3xSTzV4W3*N!-n%D^KFsOUMNdKPhK%hf0|kd>n>=9W)#&56eZ<6-N<9fLkCd zmR6NClibnhV>mFE!wjA00-a8(=Zrj`68DF84>?7ER}L$D?%O|vvSj0{kb*+J4K^rIu z3wzji1!eA2qF{xs#oGadJ?XrLilQE1Z+iVBa-b>bQpe$>F&T{_VV-KpFxLoxLBcB` zKr@6gKw4uDlMBJ(S452_#0(ww5p}tRRg3g`As$FbrPqF7Cz4l_C8~f=;gDb@xcMNA zY#xL6iEY4J(%5Ey1(^yAw}IdaUuSRvN*rLq(k`MK)+F_U zA`&DUkv-xmMkEhFpg0IE*f{CO&EpbCFoewY!(){ZT5mm7WP=Bu0uS?C9Dw3?l+ehE zvXM%2;+=OC=%P1f3W%z<5BF{&*r<6agJvR#MlTU@_CdJN;Dp{Z6{e%4WLvX0H6_FWA#3bcG0w)=22%9}3pH5g8 z&-rb6Bs{n`!tWxhq|S1G`Eo}G2oPd}O@;qCe}-enm{MMn1n>9L)qot{+0pW!lv3^y zB1rM${BHQ0TG5vVMy7vBWev5d?SMwq#yv=rHuMNTPD>M`RsJa#i7)AUamk_Duy)v; z4Go35ProZvQ2OF5vsS+gNSjCJ&Hi9n}KWsCIrd}~Iq1lqqQI1E~=L_j;J@-ObP$kYz%JWR{Jfs06DAg?jtOoCfR56(rR9MeZ62j?0V4Zcp)JgP0C3@?u0*uhC z$km2Cp@ORKBH6Gy@f2;)bGX!iisafbF)?|X6=%=!XLbv0(%y2I7Lq5ph43S0ZGgaU zmBl+YS<-0>a4isa3pJ-x7_mGzFnS{}02L{wCXQs1)YCJ;iqLLc%^8Yx3J-v{)b% z0&DZSYM~fK%T=@a=#ZhKWwUTD#YKRVN#apCV z*U_8VoftS?A%bGmRGWt4x#G4?rV{_6usfA^bJhOBSWaJh$u1&=RP}~71u`=!R^3>4 zWzF`fOE!01bOj(Nfqg{{jhBx^<2;B`!)fB{Vm!-isT2*u&-1Mj6ZoiZ|r0EKq%Q2KYR z(CEJ*YY?w3tBb9!T^tVQNcQQ^gk}8?SJ8PJS1*(f>3@EoC;b6kFMd^itEd1_pZ}%n zaWDU?7qqA!v+XEXYT@V16*+at7YNc3OC{)71!uh;+KSj?;c)Ecu#-hyb; z&X1xQVZ#U~3^SQXCX;3=nzFQb82^vhR?4)DXiT%iF~fN=6QyBXAlzI0d7<>vf_Sn@ zNkn4txQ4tkWhG55U+9C3W|0>^jC<^wukHC_@o+q*5n!s3up@eWR0}6zKP2M1s)Zv- z)3nu?p+==+-#K6aNB6Zoi=9Y?!^lw8;O{u+YwVsMYN=99SJyL zU)!@pQW0BCB*UYo5sw%q;IMTQ#q~k3$fz1q6J|7(h$X^ZgM%yrI-et=>E6pAk6a*+ z@(4}!KV@_y3n5zyh!f2tgo%WFQT-oo$p4LL*#Eu!-y=kP8{LUE?ffWhYn+PGZ(IKh zCL6;wAe(QLaHcBfYPLOT+q*^Q&>;)fE{&mV-+s!oK=^|oyH;<1gNh_lDN{|UF)f)) z#7E=tL?W(XPcRZuJ8G&CJqgXMYiidjnD$H6*Y-4{MkJopEZoqDT80rxS$1O7jKoYe zp)yaa`ehOQufue#xBs<>9`*EpZ^%(I zYCF20+IaSVn_foSTUO^gk>~;K+JXJwOK@gwb1(AQDtjaE+Y~#XU9#SWY~N+^_VQzH zFK^pqIO^;wFc zspid&=qb^E5&KUK#~RN6^l;dV{~i(2+w3e}c9bbnNe1N4AfFbQNBpiM$qxbA)yEsy z1PM4BP%%~}$GhL?vV4$pYROnZ1PMtu%ax09`vEVG6lFc&Nf+tH1MNDnqC|E@q&FFvtDpW`Z1J<9%Qng31dpBj9JiOk?FoN8FR{F1NSH~B!|t0Q0jT44CA-wNFO)zI)aSKcvX z{OHV^U-G5zzxREged-gRyXT{G_q}`d>O1>iv1j=Hm6zT>IWoENpHEDm^nrK$;_Cl- z&KK5R_L@t6{kwB_`MQ`|M&8L zdqR$yLF?!rYVWAJW{8#_TIqj1++hF3;$Ho?mUvx?1_zF_ufN}SymtC^<#}k^5Bm@|0m(soTIBR zJ@LaYc-1{yUqAW7M_zmDU-@HC{PvtPzoxwHmA7vDr?ghZ~p7`))~LP{)M+2{U?a|`*XHU62{%CUGoxa&qmYuoh1J{4<#m^7^pWn`h?k$G0dv5u_FCO{l&wuI# zk@3ptgJ$_#N!`old_luQ(a_RboYySAJ zfB3hhYrpWaCoVYqn!CPy`q$5X>JwYv+|@$8PE9dTBmePZ$o@x7V9)+{sa9{{fBpb_xQe{*PLKeg{%;chiR+-h7ys`J&)u}9_|Ih&|5>~1hi5%_%GaOTF#m#+{&U6TcdmQI zzJawr|L>D--Dk}0zWnF!v_ACYLm&Esho8KC&v4>(_x$%;&V0}GjcoK5&|e@ovJFTD7^bH4b=58wa0hd%Sb>NkJssr#d6-goZJ%P+jUo3(g- zI>$hb{F`Ry1GLejtN0J<|9JL)8^}GvCUx`=S#eyJPDIpr#12Ojsn}>lS7Qm}NJmnM zQCka#jmW5$>}=9j`oHP3mcmDg`RkUy!g-2U!HMAV zpc#B_a9eQ4$$cNa|5NvUdgN12C>Jg}FB}Mbd?oiI%!D3> zZ-8<}MkH1{MypS)^gl8W8_s{DVbA_=h1aF{-qHUNQ~kdFi2j)FIt5srd(OE_F^4zC zv5SEk`A-~6`TySikE6jgb@UHu2|J1ikYy&4dQ`(HOe|)^QaY;ZMZ8m459gs zep>1Ortu%I{$oct?zVB;@t;q9_MQjEuKn9(KYZg!|ClH~_f>y3bM{aFqVIvNZ@c2w zx83rRo8R{CQ@(!ci^qTP=7pZMJmpL4<6)%5queg6;|_7Xa~rBHAC z)yRL3>Ogd1|Kt9@SO2@WlozAd(0}w;+W$TO?`fca$g+~Ug?ED6W-OX8?PSD`8@8n; zE!|L!Q8gMiVwTZin4pXOKOR@T`~OFS{%!C7Ctv?S>NA-u-*emdzI^%BKl|!HF?Rd5 z?3TcL7uMa8c-?t-4BxHXf7JuqcHjAzfA^NzAD{l?hhO%d$KUw5Z}i{t{M~=h7yH$V zet9$&zzN^b>nUK$Nq5Skvl&Y z#r@yArhfikfuYAg_v!mo^@h7Xw*M#JT=v9o-oNLvMEI2h&)M)FgLf>u`8s9lb?;xh z?q|q=U;!H{|yiP&A=_2PW+O6d*q>wSO4lOcRduk|4&!_ zc;&~xxbZYQy?*6cUwG+rK63CJ^&kG^-|znLum0+>jlZ+s`pJei?kr z2Ls!*H+=f^Pd{<`@~>a?o7WG0;@h8J^WM3Ced%jL-#jh!i%Xw;>c;1O^6FQ=>N7W- z_3>A~=N*?9|6+P#?6(iy{jJsU=S2SI1Lr(&?!7B<=I{MH{TQf`|445#Zo2XRQEbf1 z|2YcmQAdB208HX#GAUb2!2`Ff(UfVArqsA?jV6=P(KuckrW;y^#{{kPf0O#J@o?0; z|8*3|-{<)MrnvrleBU`+kN@b=nAn@+n7}}d{O1jGZx5jALjU7Eh2HyLdq9eYA#3Pw zA4~WDyz}1%V)fub9sNUb-HIh6^n%u8O4CN;2L6u5@cz1ZER~8yR4s1BjSkC%wc7tR zy`laSGL60S-yV>=VaT@6f8WxywCmJm>D`y_*_52z^ZMW=;Y|1`G0NV_eh%6(LWT6#&H28Y(^~I)RI;t5=}<24`>nG3CD(D zhb$bi6-<@H(yVg?ws~TQJ%k{s9Dh0haQYCOI{oP#k_xbXcU0{vkbK+oMSvuc=OIwgG!TnnJ}tH~@*!gr2mb zrm4nEt25YI>HjA8KcN0S`@b_Rch|aY`#=AoZ!iD(=67uW)ffKq>_7dF>=W0&Z`b?J zJFdO^A3yxiij%qn&+FA=4AjVfBGQxDy0QOb-uoYVLW}xA>*yb{lSV3`s#;77!{U!7 zBJt4_s(|1=Kv=b-2{nP^A8V=Yf4zzQ@74dSCsj{A%k!U)RMJ0>?|b3N$Nxu9=JEzT z_ApQ*|G0D8iyu$__X4X+GiDwAL*aN#OW?M*Y9#E49v{`hNj0t|a1mS!N0O##<8nA& z&DPOREBn7m{x9DD=AHj{gyb$8Q~g(Z|Iewf6z~6e+5gQLXH1{BaobrR{F_^StL{0` z9zW-#$ILJN-Ope8_=on+Jo2vi8G$zhCw#}9zU{B~U;Kg#))?1q@jb`XmOt;~m*2Af zTW`AHrW-y#eEY4R+Hl^EUrwwkd~d^ZU-F;o?|%H?oqNAAy<^q2H=X^!PlAKHAHVX8 zed=o-Jm*m4(SJGli=PN?{NLFJ|MSj2oBg+kw?FYO=LY|3Vt<#*@w#=00hWJy_jh1E zU78J)=5v8UE{E54Cyk<=!5h9i9IsjP7V@vh;<5Vt&u9eqzm7_V;IsVx4+8CNX?#V) z{~|u4T$-hqx$`giDKKZGGs*?x*@gB2V=kYugLpgpDyKmyJ!dP4NDS3vM^&}*^lD`# zv4)RcjIQXue!cznVI}PA54Ybw0=)M}d^Yahg|P!iG&4M^8U`wHrNTNAWsF43 z((Q<;r6O8VwUj9Sr~Q6VD(uS_?EUFnxu~>Fj>D0(HO-^GNTR*>A1Yxb_WOckO>ILQ zV!lzMy{lnLM2SNnelHY-rd9c`ZPw_X|KjZ#-~!DZ2S6?Mu9%0j7$-qGPxNelPTD#a^5mZcCpedJ(I=gCM?OyBj|JN*_g{N zXVa!@%pF!bl>#6}W+qpFDLRKPv*}_fH&Za?d^_gs!VJNgN>%3VcFA5p7Y11VH*cL> zKYhu%HEUg8Ea9K6PYicBhvI8o`0uX-I^tgBbe+fx&*rD3BDwklZIV=p`7f&As z%GrXQfzq}Dq~wF}eU=`Umh!JP)c@6~$fW20FFh^lN7Q_}FYJqW;$4rJXUXTocq>b~ z`j+w!S+Cpw!%@5w+LQk!B}3D}9Qlv>Vm|nvo*rn5rQhF&)6+BX`VOQmdwR|;8Pn4} zSSrbXJc@j7@l*esp4Q919z{+_hsTWFLH;a{|2NP-1XjqF(xrv&(AlgP5jaNga}z)H zzbV_Op8k<=)T{s043|s&40&E*T@6RI0OBzRmU?t=yki{$jq;EEARwcEO9XsN`HwWz z|B1xop8dB(=wEagP+M_gy?QX52u78mHF+H1D(k@qS~N23nS_fX(EHNEfQJDO1J6(l F{C{XTqs#yR literal 0 HcmV?d00001 diff --git a/gix-blame/tests/fixtures/make_blame_two_roots_repo.sh b/gix-blame/tests/fixtures/make_blame_two_roots_repo.sh new file mode 100755 index 00000000000..e59beb6c3da --- /dev/null +++ b/gix-blame/tests/fixtures/make_blame_two_roots_repo.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +git init -q +git config --local diff.algorithm histogram + +git config merge.ff false + +git checkout -q -b main + +seq 1 4 > unrelated-file.txt +git add unrelated-file.txt +git commit -q -m c1 + +seq 1 4 > file-with-two-roots.txt +git add file-with-two-roots.txt +git commit -q -m c2 + +seq 1 5 > file-with-two-roots.txt +git add file-with-two-roots.txt +git commit -q -m c3 + +git checkout -b different-branch +git reset --hard HEAD~2 + +seq 4 6 > file-with-two-roots.txt +git add file-with-two-roots.txt +git commit -q -m c10 + +seq 4 8 > file-with-two-roots.txt +git add file-with-two-roots.txt +git commit -q -m c11 + +git checkout main +git merge different-branch || true +seq 1 8 > file-with-two-roots.txt +git add file-with-two-roots.txt +git commit -q -m c20 + +git blame --porcelain file-with-two-roots.txt > .git/file-with-two-roots.baseline From 770db9c263da0f099b17943d9ca3359c78186c28 Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Wed, 2 Jul 2025 01:14:22 -0400 Subject: [PATCH 029/296] Get only patch version updates to `imara-diff` This configures Dependabot version updates to keep `imara-diff` at 0.1.*. It does not affect Dependabot security updates, nor other ways of updating besides Dependabot, nor other crate dependencies if they are unrelated to `imara-diff`. See: - https://github.blog/changelog/2021-05-21-dependabot-version-updates-can-now-ignore-major-minor-patch-releases/ - https://docs.github.com/en/code-security/dependabot/working-with-dependabot/dependabot-options-reference#ignore-- This is by the same technique as used in: https://github.com/GitoxideLabs/cargo-smart-release/commit/aeb91ee22bcd8aadd64a3261e3de2ed985c99485 See discussion in #2068 for details for why we are not upgrading `imara-diff` to 0.2 at this time. --- .github/dependabot.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9946b189a3f..f54c2a3097b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -9,6 +9,12 @@ updates: prefix: '' allow: - dependency-type: all + ignore: + # Keep imara-diff at 0.1.* for now (see comments in #2068). + - dependency-name: imara-diff + update-types: + - 'version-update:semver-major' + - 'version-update:semver-minor' groups: cargo: patterns: ['*'] From a9a8ea1472532dde03bce4e0afdfa82924af1f96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 07:37:14 +0000 Subject: [PATCH 030/296] Bump the cargo group across 1 directory with 68 updates --- updated-dependencies: - dependency-name: clap dependency-version: 4.5.40 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_complete dependency-version: 4.5.54 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: prodash dependency-version: 30.0.1 dependency-type: direct:production update-type: version-update:semver-major dependency-group: cargo - dependency-name: smallvec dependency-version: 1.15.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: libc dependency-version: 0.2.174 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: tracing-core dependency-version: 0.1.34 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: jiff dependency-version: 0.2.15 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: portable-atomic dependency-version: 1.11.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: syn dependency-version: 2.0.104 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: curl dependency-version: 0.4.48 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: reqwest dependency-version: 0.12.22 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows dependency-version: 0.61.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: fs-err dependency-version: 3.1.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: sysinfo dependency-version: 0.35.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: zip dependency-version: 4.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: anstream dependency-version: 0.6.19 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: anstyle dependency-version: 1.0.11 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: anstyle-parse dependency-version: 0.2.7 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: anstyle-query dependency-version: 1.1.3 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: anstyle-wincon dependency-version: 3.0.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: autocfg dependency-version: 1.5.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: bumpalo dependency-version: 3.19.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: cc dependency-version: 1.2.27 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_builder dependency-version: 4.5.40 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_derive dependency-version: 4.5.40 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_lex dependency-version: 0.7.5 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: colorchoice dependency-version: 1.0.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: crunchy dependency-version: 0.2.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: curl-sys dependency-version: 0.4.82+curl-8.14.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: errno dependency-version: 0.3.13 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: h2 dependency-version: 0.4.11 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: hermit-abi dependency-version: 0.5.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: hyper-rustls dependency-version: 0.27.7 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: hyper-util dependency-version: 0.1.14 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: indexmap dependency-version: 2.10.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: jiff-static dependency-version: 0.2.15 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: jni dependency-version: 0.21.1 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: libredox dependency-version: 0.1.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: prettyplease dependency-version: 0.2.35 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: quinn-udp dependency-version: 0.5.13 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: r-efi dependency-version: 5.3.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: redox_syscall dependency-version: 0.5.13 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustc-demangle dependency-version: 0.1.25 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustls dependency-version: 0.23.28 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustls-ffi dependency-version: 0.15.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: rustls-native-certs dependency-version: 0.8.1 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: rustls-platform-verifier dependency-version: 0.5.3 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: rustls-webpki dependency-version: 0.103.3 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: serde_spanned dependency-version: 0.6.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: slab dependency-version: 0.4.10 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: thread_local dependency-version: 1.1.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: toml dependency-version: 0.8.23 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: toml_datetime dependency-version: 0.6.11 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: toml_edit dependency-version: 0.22.27 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: toml_write dependency-version: 0.1.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: tower-http dependency-version: 0.6.6 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: tracing-attributes dependency-version: 0.1.30 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: wasi dependency-version: 0.11.1+wasi-snapshot-preview1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: webpki-roots dependency-version: 1.0.0 dependency-type: indirect update-type: version-update:semver-major dependency-group: cargo - dependency-name: windows-core dependency-version: 0.61.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows-future dependency-version: 0.2.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows-link dependency-version: 0.1.3 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows-registry dependency-version: 0.5.3 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: windows-result dependency-version: 0.3.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows-strings dependency-version: 0.4.2 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: xattr dependency-version: 1.5.1 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: zerocopy dependency-version: 0.8.26 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: zerocopy-derive dependency-version: 0.8.26 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo ... Signed-off-by: dependabot[bot] --- Cargo.lock | 546 +++++++++++++++++--------------------- Cargo.toml | 6 +- gitoxide-core/Cargo.toml | 6 +- gix-archive/Cargo.toml | 4 +- gix-attributes/Cargo.toml | 2 +- gix-blame/Cargo.toml | 2 +- gix-config/Cargo.toml | 2 +- gix-date/Cargo.toml | 4 +- gix-features/Cargo.toml | 4 +- gix-filter/Cargo.toml | 2 +- gix-index/Cargo.toml | 4 +- gix-negotiate/Cargo.toml | 2 +- gix-object/Cargo.toml | 2 +- gix-pack/Cargo.toml | 2 +- gix-path/Cargo.toml | 2 +- gix-refspec/Cargo.toml | 2 +- gix-revwalk/Cargo.toml | 2 +- gix-sec/Cargo.toml | 2 +- gix-tempfile/Cargo.toml | 2 +- gix-trace/Cargo.toml | 2 +- gix-transport/Cargo.toml | 2 +- gix-traverse/Cargo.toml | 2 +- gix/Cargo.toml | 4 +- tests/it/Cargo.toml | 2 +- 24 files changed, 270 insertions(+), 340 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c4b6e45c433..a809a7fba01 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -49,9 +49,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.18" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -64,33 +64,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.8" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6680de5231bd6ee4c6191b8a1325daa282b415391ec9d3a37bd34f2060dc73fa" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", "once_cell_polyfill", @@ -274,7 +274,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -285,9 +285,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" @@ -342,7 +342,7 @@ dependencies = [ "bitflags 2.9.1", "cexpr", "clang-sys", - "itertools 0.12.1", + "itertools 0.10.5", "lazy_static", "lazycell", "log", @@ -352,7 +352,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.103", + "syn 2.0.104", "which", ] @@ -406,9 +406,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -460,9 +460,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.25" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0fc897dc1e865cc67c0e05a836d9d3f1df3cbe442aa4a9473b18e12624a4951" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", @@ -536,9 +536,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.39" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd60e63e9be68e5fb56422e397cf9baddded06dae1d2e523401542383bc72a9f" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -546,9 +546,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.39" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89cc6392a1f72bbeb820d71f32108f61fdaf18bc526e1d23954168a67759ef51" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", @@ -558,30 +558,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.52" +version = "4.5.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a554639e42d0c838336fc4fbedb9e2df3ad1fa4acda149f9126b4ccfcd7900f" +checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.32" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "clap_lex" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "clru" @@ -600,9 +600,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "combine" @@ -667,6 +667,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -839,9 +849,9 @@ dependencies = [ [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -855,9 +865,9 @@ dependencies = [ [[package]] name = "curl" -version = "0.4.47" +version = "0.4.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" +checksum = "9e2d5c8f48d9c0c23250e52b55e82a6ab4fdba6650c931f5a0a57a43abda812b" dependencies = [ "curl-sys", "libc", @@ -865,14 +875,14 @@ dependencies = [ "openssl-sys", "schannel", "socket2", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "curl-sys" -version = "0.4.80+curl-8.12.1" +version = "0.4.82+curl-8.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55f7df2eac63200c3ab25bde3b2268ef2ee56af3d238e76d61f01c3c49bff734" +checksum = "c4d63638b5ec65f1a4ae945287b3fd035be4554bbaf211901159c9a2a74fb5be" dependencies = [ "cc", "libc", @@ -881,7 +891,7 @@ dependencies = [ "pkg-config", "rustls-ffi", "vcpkg", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -912,7 +922,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -939,7 +949,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -1008,12 +1018,12 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea14ef9355e3beab063703aa9dab15afd25f0667c341310c1e5274bb1d0da18" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -1144,9 +1154,9 @@ dependencies = [ [[package]] name = "fs-err" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f89bda4c2a21204059a977ed3bfe746677dfd137b83c339e702b0ac91d482aa" +checksum = "88d7be93788013f265201256d58f04936a8079ad5dc898743aa20525f503b683" dependencies = [ "autocfg", ] @@ -1266,7 +1276,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] @@ -1911,7 +1921,7 @@ version = "0.1.5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", "trybuild", ] @@ -2129,7 +2139,7 @@ dependencies = [ "once_cell", "serial_test", "thiserror 2.0.12", - "windows 0.61.1", + "windows 0.61.3", "winreg", ] @@ -2649,9 +2659,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9421a676d1b147b16b82c9225157dc629087ef8ec4d5e2960f9437a90dac0a5" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", @@ -2729,9 +2739,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "home" @@ -2810,9 +2820,9 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.6" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03a01595e11bdcec50946522c32dde3fc6914743000a68b93000965f2f02406d" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ "http", "hyper", @@ -2822,7 +2832,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", - "webpki-roots 1.0.0", + "webpki-roots", ] [[package]] @@ -2843,9 +2853,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.13" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c293b6b3d21eca78250dc7dbebd6b9210ec5530e038cbfe0661b5c47ab06e8" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ "base64", "bytes", @@ -2985,9 +2995,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", "hashbrown 0.15.4", @@ -3058,7 +3068,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3118,9 +3128,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jiff" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a194df1107f33c79f4f93d02c80798520551949d59dfad22b6157048a88cca93" +checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49" dependencies = [ "jiff-static", "jiff-tzdb-platform", @@ -3128,18 +3138,18 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "jiff-static" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" +checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -3159,16 +3169,18 @@ dependencies = [ [[package]] name = "jni" -version = "0.19.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror 1.0.69", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -3255,9 +3267,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.172" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" [[package]] name = "libloading" @@ -3266,14 +3278,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.53.0", + "windows-targets 0.48.5", ] [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ "bitflags 2.9.1", "libc", @@ -3395,7 +3407,7 @@ checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -3451,7 +3463,7 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -3462,7 +3474,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -3478,7 +3490,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "security-framework", + "security-framework 2.11.1", "security-framework-sys", "tempfile", ] @@ -3525,25 +3537,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -3633,7 +3626,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -3787,9 +3780,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portable-atomic-util" @@ -3830,12 +3823,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.33" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dee91521343f4c5c6a63edd65e54f31f5c92fe8978c40a4282f8372194c6a7d" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -3849,9 +3842,9 @@ dependencies = [ [[package]] name = "prodash" -version = "29.0.2" +version = "30.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04bb108f648884c23b98a0e940ebc2c93c0c3b89f04dbaf7eb8256ce617d1bc" +checksum = "5a6efc566849d3d9d737c5cb06cc50e48950ebe3d3f9d70631490fff3a07b139" dependencies = [ "async-io", "bytesize", @@ -3922,16 +3915,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -3945,9 +3938,9 @@ dependencies = [ [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" @@ -4020,9 +4013,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ "bitflags 2.9.1", ] @@ -4058,9 +4051,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.12.18" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ "base64", "bytes", @@ -4076,12 +4069,10 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", @@ -4101,7 +4092,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.0", + "webpki-roots", ] [[package]] @@ -4134,9 +4125,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -4160,7 +4151,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -4173,59 +4164,47 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.9.3", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.23.27" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "730944ca083c1c233a75c09f199e973ca499344a2b7ba9e755c457e86fb4a321" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "aws-lc-rs", "once_cell", "ring", "rustls-pki-types", - "rustls-webpki 0.103.3", + "rustls-webpki", "subtle", "zeroize", ] [[package]] name = "rustls-ffi" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c916a3be537e52de0f3e311048dd1cfbdb2972048b1417d6088826d7d1477ec2" +checksum = "4128514cb6472050cba340cdac098a235c53e6aad276737ce1d7b24a19260392" dependencies = [ "libc", "log", "rustls", - "rustls-pemfile", - "rustls-pki-types", "rustls-platform-verifier", - "rustls-webpki 0.102.8", + "rustls-webpki", ] [[package]] name = "rustls-native-certs" -version = "0.7.3" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5bfb394eeed242e909609f56089eecfe5fda225042e8b171791b9c95f5931e5" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", -] - -[[package]] -name = "rustls-pemfile" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dce314e5fee3f39953d46bb63bb8a46d40c2f8fb7cc5a3b6cab2bde9721d6e50" -dependencies = [ - "rustls-pki-types", + "security-framework 3.2.0", ] [[package]] @@ -4240,11 +4219,11 @@ dependencies = [ [[package]] name = "rustls-platform-verifier" -version = "0.3.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afbb878bdfdf63a336a5e63561b1835e7a8c91524f51621db870169eac84b490" +checksum = "19787cda76408ec5404443dc8b31795c87cd8fec49762dc75fa727740d34acc1" dependencies = [ - "core-foundation", + "core-foundation 0.10.1", "core-foundation-sys", "jni", "log", @@ -4252,11 +4231,11 @@ dependencies = [ "rustls", "rustls-native-certs", "rustls-platform-verifier-android", - "rustls-webpki 0.102.8", - "security-framework", + "rustls-webpki", + "security-framework 3.2.0", "security-framework-sys", - "webpki-roots 0.26.11", - "winapi", + "webpki-root-certs 0.26.11", + "windows-sys 0.52.0", ] [[package]] @@ -4265,18 +4244,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" -[[package]] -name = "rustls-webpki" -version = "0.102.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" -dependencies = [ - "aws-lc-rs", - "ring", - "rustls-pki-types", - "untrusted", -] - [[package]] name = "rustls-webpki" version = "0.103.3" @@ -4347,10 +4314,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.9.1", - "core-foundation", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", - "num-bigint", "security-framework-sys", ] @@ -4381,7 +4360,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -4398,9 +4377,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -4439,7 +4418,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -4522,18 +4501,15 @@ checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -4555,7 +4531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac" dependencies = [ "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -4595,7 +4571,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -4623,9 +4599,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.103" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -4649,21 +4625,21 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "sysinfo" -version = "0.35.1" +version = "0.35.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79251336d17c72d9762b8b54be4befe38d2db56fbbc0241396d70f173c39d47a" +checksum = "3c3ffa3e4ff2b324a57f7aeb3c349656c7b127c3c189520251a648102a92496e" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", "objc2-io-kit", - "windows 0.61.1", + "windows 0.61.3", ] [[package]] @@ -4673,7 +4649,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ "bitflags 2.9.1", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -4714,7 +4690,7 @@ dependencies = [ "getrandom 0.3.2", "once_cell", "rustix 1.0.7", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -4768,7 +4744,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -4779,17 +4755,16 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -4877,9 +4852,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.22" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae329d1f08c4d17a59bed7ff5b5a769d062e64a62d34a3261b219e62cd5aae" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", @@ -4889,18 +4864,18 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.9" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.22.26" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", @@ -4912,9 +4887,9 @@ dependencies = [ [[package]] name = "toml_write" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfb942dfe1d8e29a7ee7fcbde5bd2b9a25fb89aa70caea2eba3bee836ff41076" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" [[package]] name = "tower" @@ -4933,9 +4908,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "bitflags 2.9.1", "bytes", @@ -4974,20 +4949,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.28" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -5197,9 +5172,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -5232,7 +5207,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -5267,7 +5242,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5302,12 +5277,21 @@ dependencies = [ ] [[package]] -name = "webpki-roots" +name = "webpki-root-certs" version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +checksum = "75c7f0ef91146ebfb530314f5f1d24528d7f0767efbfd31dce919275413e393e" +dependencies = [ + "webpki-root-certs 1.0.1", +] + +[[package]] +name = "webpki-root-certs" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86138b15b2b7d561bc4469e77027b8dd005a43dc502e9031d1f5afc8ce1f280e" dependencies = [ - "webpki-roots 1.0.0", + "rustls-pki-types", ] [[package]] @@ -5353,7 +5337,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -5373,9 +5357,9 @@ dependencies = [ [[package]] name = "windows" -version = "0.61.1" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", "windows-core", @@ -5395,25 +5379,26 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", "windows-link", "windows-result", - "windows-strings 0.4.0", + "windows-strings", ] [[package]] name = "windows-future" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ "windows-core", "windows-link", + "windows-threading", ] [[package]] @@ -5424,7 +5409,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -5435,14 +5420,14 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-numerics" @@ -5456,40 +5441,40 @@ dependencies = [ [[package]] name = "windows-registry" -version = "0.4.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ + "windows-link", "windows-result", - "windows-strings 0.3.1", - "windows-targets 0.53.0", + "windows-strings", ] [[package]] name = "windows-result" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] [[package]] -name = "windows-strings" -version = "0.4.0" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-link", + "windows-targets 0.42.2", ] [[package]] @@ -5558,7 +5543,7 @@ 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_gnullvm", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", @@ -5566,19 +5551,12 @@ dependencies = [ ] [[package]] -name = "windows-targets" -version = "0.53.0" +name = "windows-threading" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e4c7e8ceaaf9cb7d7507c974735728ab453b67ef8f18febdd7c11fe59dca8b" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" dependencies = [ - "windows_aarch64_gnullvm 0.53.0", - "windows_aarch64_msvc 0.53.0", - "windows_i686_gnu 0.53.0", - "windows_i686_gnullvm 0.53.0", - "windows_i686_msvc 0.53.0", - "windows_x86_64_gnu 0.53.0", - "windows_x86_64_gnullvm 0.53.0", - "windows_x86_64_msvc 0.53.0", + "windows-link", ] [[package]] @@ -5599,12 +5577,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -5623,12 +5595,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -5647,24 +5613,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" - [[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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -5683,12 +5637,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -5707,12 +5655,6 @@ 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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" - [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -5731,12 +5673,6 @@ 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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -5755,12 +5691,6 @@ 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.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" - [[package]] name = "winnow" version = "0.7.11" @@ -5797,9 +5727,9 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xattr" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", "rustix 1.0.7", @@ -5840,28 +5770,28 @@ checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.23" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.23" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] @@ -5881,7 +5811,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", "synstructure", ] @@ -5921,14 +5851,14 @@ checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.103", + "syn 2.0.104", ] [[package]] name = "zip" -version = "4.1.0" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7dcdb4229c0e79c2531a24de7726a0e980417a74fb4d030a35f535665439a0" +checksum = "95ab361742de920c5535880f89bbd611ee62002bf11341d16a5f057bb8ba6899" dependencies = [ "arbitrary", "crc32fast", diff --git a/Cargo.toml b/Cargo.toml index 6bbd0fe4da8..a9e1f0ae63a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -155,9 +155,9 @@ gitoxide-core = { version = "^0.47.1", path = "gitoxide-core" } gix-features = { version = "^0.42.1", path = "gix-features" } gix = { version = "^0.72.1", path = "gix", default-features = false } -clap = { version = "4.5.39", features = ["derive", "cargo"] } -clap_complete = "4.5.52" -prodash = { version = "29.0.2", optional = true } +clap = { version = "4.5.40", features = ["derive", "cargo"] } +clap_complete = "4.5.54" +prodash = { version = "30.0.1", optional = true } is-terminal = { version = "0.4.0", optional = true } env_logger = { version = "0.11.8", default-features = false } crosstermion = { version = "0.14.0", optional = true, default-features = false } diff --git a/gitoxide-core/Cargo.toml b/gitoxide-core/Cargo.toml index 5a1482e9db0..8769ace145a 100644 --- a/gitoxide-core/Cargo.toml +++ b/gitoxide-core/Cargo.toml @@ -74,16 +74,16 @@ gix-url = { version = "^0.31.0", path = "../gix-url", optional = true } jwalk = { version = "0.8.0", optional = true } # for 'hours' -fs-err = { version = "3.1.0", optional = true } +fs-err = { version = "3.1.1", optional = true } crossbeam-channel = { version = "0.5.15", optional = true } -smallvec = { version = "1.15.0", optional = true } +smallvec = { version = "1.15.1", optional = true } # for 'query' and 'corpus' rusqlite = { version = "0.36.0", optional = true, features = ["bundled"] } # for 'corpus' parking_lot = { version = "0.12.4", optional = true } -sysinfo = { version = "0.35.1", optional = true, default-features = false, features = ["system"] } +sysinfo = { version = "0.35.2", optional = true, default-features = false, features = ["system"] } serde_json = { version = "1.0.65", optional = true } tracing-forest = { version = "0.1.5", features = ["serde"], optional = true } tracing-subscriber = { version = "0.3.17", optional = true } diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index 945bdf5cae1..16fa629efe5 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -33,8 +33,8 @@ gix-path = { version = "^0.10.18", path = "../gix-path", optional = true } gix-date = { version = "^0.10.2", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } -zip = { version = "4.0.0", optional = true, default-features = false, features = ["deflate-flate2"] } -jiff = { version = "0.2.14", default-features = false, features = ["std"] } +zip = { version = "4.2.0", optional = true, default-features = false, features = ["deflate-flate2"] } +jiff = { version = "0.2.15", default-features = false, features = ["std"] } thiserror = "2.0.0" bstr = { version = "1.12.0", default-features = false } diff --git a/gix-attributes/Cargo.toml b/gix-attributes/Cargo.toml index 978b9a793e6..7b5ac5822f0 100644 --- a/gix-attributes/Cargo.toml +++ b/gix-attributes/Cargo.toml @@ -25,7 +25,7 @@ gix-glob = { version = "^0.20.1", path = "../gix-glob" } gix-trace = { version = "^0.1.12", path = "../gix-trace" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } -smallvec = "1.15.0" +smallvec = "1.15.1" kstring = "2.0.0" unicode-bom = { version = "2.0.3" } thiserror = "2.0.0" diff --git a/gix-blame/Cargo.toml b/gix-blame/Cargo.toml index 22298622e83..ed39ae34b08 100644 --- a/gix-blame/Cargo.toml +++ b/gix-blame/Cargo.toml @@ -21,7 +21,7 @@ gix-hash = { version = "^0.18.0", path = "../gix-hash" } gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } gix-traverse = { version = "^0.46.2", path = "../gix-traverse" } -smallvec = "1.15.0" +smallvec = "1.15.1" thiserror = "2.0.0" [dev-dependencies] diff --git a/gix-config/Cargo.toml b/gix-config/Cargo.toml index ebfc4fddb2e..ce9151307c2 100644 --- a/gix-config/Cargo.toml +++ b/gix-config/Cargo.toml @@ -32,7 +32,7 @@ thiserror = "2.0.0" unicode-bom = { version = "2.0.3" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } -smallvec = "1.15.0" +smallvec = "1.15.1" once_cell = "1.21.3" document-features = { version = "0.2.0", optional = true } diff --git a/gix-date/Cargo.toml b/gix-date/Cargo.toml index c1bb1e9cd7d..1c810711ae5 100644 --- a/gix-date/Cargo.toml +++ b/gix-date/Cargo.toml @@ -22,11 +22,11 @@ serde = ["dep:serde", "bstr/serde"] bstr = { version = "1.12.0", default-features = false, features = ["std"] } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } itoa = "1.0.1" -jiff = "0.2.14" +jiff = "0.2.15" thiserror = "2.0.0" # TODO: used for quick and easy `TimeBacking: std::io::Write` implementation, but could make that `Copy` # and remove this dep with custom impl -smallvec = { version = "1.15.0", features = ["write"] } +smallvec = { version = "1.15.1", features = ["write"] } document-features = { version = "0.2.0", optional = true } diff --git a/gix-features/Cargo.toml b/gix-features/Cargo.toml index 6942cb3fdb8..e89ac4b233c 100644 --- a/gix-features/Cargo.toml +++ b/gix-features/Cargo.toml @@ -114,7 +114,7 @@ walkdir = { version = "2.3.2", optional = true } # used when parallel is off crc32fast = { version = "1.2.1", optional = true } # progress -prodash = { version = "29.0.2", optional = true } +prodash = { version = "30.0.1", optional = true } bytesize = { version = "2.0.1", optional = true } # pipe @@ -129,7 +129,7 @@ once_cell = { version = "1.21.3", optional = true } document-features = { version = "0.2.0", optional = true } [target.'cfg(unix)'.dependencies] -libc = { version = "0.2.172" } +libc = { version = "0.2.174" } [dev-dependencies] bstr = { version = "1.12.0", default-features = false } diff --git a/gix-filter/Cargo.toml b/gix-filter/Cargo.toml index d21e0a6305e..3347968cfe2 100644 --- a/gix-filter/Cargo.toml +++ b/gix-filter/Cargo.toml @@ -28,7 +28,7 @@ gix-attributes = { version = "^0.26.1", path = "../gix-attributes" } encoding_rs = "0.8.32" bstr = { version = "1.12.0", default-features = false, features = ["std"] } thiserror = "2.0.0" -smallvec = "1.15.0" +smallvec = "1.15.1" [dev-dependencies] diff --git a/gix-index/Cargo.toml b/gix-index/Cargo.toml index 6c443032833..c5a00c68c07 100644 --- a/gix-index/Cargo.toml +++ b/gix-index/Cargo.toml @@ -44,7 +44,7 @@ bstr = { version = "1.12.0", default-features = false } serde = { version = "1.0.114", optional = true, default-features = false, features = [ "derive", ] } -smallvec = "1.15.0" +smallvec = "1.15.1" itoa = "1.0.3" bitflags = "2" @@ -55,7 +55,7 @@ rustix = { version = "1.0.7", default-features = false, features = [ "std", "fs", ] } -libc = { version = "0.2.172" } +libc = { version = "0.2.174" } [dev-dependencies] gix-testtools = { path = "../tests/tools" } diff --git a/gix-negotiate/Cargo.toml b/gix-negotiate/Cargo.toml index 882f039b848..7a409c7d05d 100644 --- a/gix-negotiate/Cargo.toml +++ b/gix-negotiate/Cargo.toml @@ -22,7 +22,7 @@ gix-date = { version = "^0.10.2", path = "../gix-date" } gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } thiserror = "2.0.0" -smallvec = "1.15.0" +smallvec = "1.15.1" bitflags = "2" [dev-dependencies] diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index 81067ef4722..0d9b89fbe64 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -59,7 +59,7 @@ bstr = { version = "1.12.0", default-features = false, features = [ "unicode", ] } winnow = { version = "0.7.10", features = ["simd"] } -smallvec = { version = "1.15.0", features = ["write"] } +smallvec = { version = "1.15.1", features = ["write"] } serde = { version = "1.0.114", optional = true, default-features = false, features = [ "derive", ] } diff --git a/gix-pack/Cargo.toml b/gix-pack/Cargo.toml index b463e18136c..1ae3c6edbd1 100644 --- a/gix-pack/Cargo.toml +++ b/gix-pack/Cargo.toml @@ -46,7 +46,7 @@ gix-traverse = { version = "^0.46.2", path = "../gix-traverse", optional = true gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false, optional = true } memmap2 = "0.9.0" -smallvec = "1.15.0" +smallvec = "1.15.1" parking_lot = { version = "0.12.4", default-features = false, optional = true } thiserror = "2.0.0" diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml index 10d5a931b3e..5502116cfdb 100644 --- a/gix-path/Cargo.toml +++ b/gix-path/Cargo.toml @@ -30,5 +30,5 @@ serial_test = { version = "3.1.0", default-features = false } [target.'cfg(windows)'.dev-dependencies] known-folders = "1.1.0" -windows = { version = "0.61.1", features = ["Win32_System_Threading"] } +windows = { version = "0.61.3", features = ["Win32_System_Threading"] } winreg = "0.55.0" diff --git a/gix-refspec/Cargo.toml b/gix-refspec/Cargo.toml index 0eaaebf740e..aa9fa5f89a8 100644 --- a/gix-refspec/Cargo.toml +++ b/gix-refspec/Cargo.toml @@ -21,7 +21,7 @@ gix-hash = { version = "^0.18.0", path = "../gix-hash" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } thiserror = "2.0.0" -smallvec = "1.15.0" +smallvec = "1.15.1" [dev-dependencies] gix-testtools = { path = "../tests/tools" } diff --git a/gix-revwalk/Cargo.toml b/gix-revwalk/Cargo.toml index 0a478b81fc7..ca5a3183f95 100644 --- a/gix-revwalk/Cargo.toml +++ b/gix-revwalk/Cargo.toml @@ -22,7 +22,7 @@ gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } thiserror = "2.0.0" -smallvec = "1.15.0" +smallvec = "1.15.1" [dev-dependencies] gix-testtools = { path = "../tests/tools" } diff --git a/gix-sec/Cargo.toml b/gix-sec/Cargo.toml index eece240a201..8ea90242095 100644 --- a/gix-sec/Cargo.toml +++ b/gix-sec/Cargo.toml @@ -28,7 +28,7 @@ bitflags = "2" document-features = { version = "0.2.1", optional = true } [target.'cfg(not(windows))'.dependencies] -libc = "0.2.172" +libc = "0.2.174" [target.'cfg(windows)'.dependencies] gix-path = { version = "^0.10.18", path = "../gix-path" } diff --git a/gix-tempfile/Cargo.toml b/gix-tempfile/Cargo.toml index 7369bd3b310..a52a1d048bb 100644 --- a/gix-tempfile/Cargo.toml +++ b/gix-tempfile/Cargo.toml @@ -51,7 +51,7 @@ signals = ["dep:signal-hook", "dep:signal-hook-registry"] hp-hashmap = ["dep:dashmap"] [target.'cfg(not(windows))'.dependencies] -libc = { version = "0.2.172", default-features = false } +libc = { version = "0.2.174", default-features = false } [package.metadata.docs.rs] all-features = true diff --git a/gix-trace/Cargo.toml b/gix-trace/Cargo.toml index 0292fa4963e..5fb8b3bcf1d 100644 --- a/gix-trace/Cargo.toml +++ b/gix-trace/Cargo.toml @@ -31,7 +31,7 @@ tracing-detail = [] [dependencies] -tracing-core = { version = "0.1.31", optional = true } +tracing-core = { version = "0.1.34", optional = true } document-features = { version = "0.2.0", optional = true } diff --git a/gix-transport/Cargo.toml b/gix-transport/Cargo.toml index eeea87b8bcd..e1abc0443eb 100644 --- a/gix-transport/Cargo.toml +++ b/gix-transport/Cargo.toml @@ -113,7 +113,7 @@ curl = { version = "0.4", optional = true } # for http-client-reqwest # all but the 'default-tls' feature -reqwest = { version = "0.12.18", optional = true, default-features = false, features = ["blocking", "charset", "http2", "macos-system-configuration"] } +reqwest = { version = "0.12.22", optional = true, default-features = false, features = ["blocking", "charset", "http2", "macos-system-configuration"] } ## If used in conjunction with `async-client`, the `connect()` method will become available along with supporting the git protocol over TCP, ## where the TCP stream is created using this crate. diff --git a/gix-traverse/Cargo.toml b/gix-traverse/Cargo.toml index 754a114c9ff..0dfb2a0e31b 100644 --- a/gix-traverse/Cargo.toml +++ b/gix-traverse/Cargo.toml @@ -22,6 +22,6 @@ gix-date = { version = "^0.10.2", path = "../gix-date" } gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } -smallvec = "1.15.0" +smallvec = "1.15.1" thiserror = "2.0.0" bitflags = "2" diff --git a/gix/Cargo.toml b/gix/Cargo.toml index 6cc8c1e50a1..9413dd575a3 100644 --- a/gix/Cargo.toml +++ b/gix/Cargo.toml @@ -370,14 +370,14 @@ gix-protocol = { version = "^0.50.1", path = "../gix-protocol" } gix-transport = { version = "^0.47.0", path = "../gix-transport", optional = true } # Just to get the progress-tree feature -prodash = { version = "29.0.2", optional = true, features = ["progress-tree"] } +prodash = { version = "30.0.1", optional = true, features = ["progress-tree"] } once_cell = "1.21.3" signal-hook = { version = "0.3.18", default-features = false, optional = true } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = [ "derive", ] } -smallvec = "1.15.0" +smallvec = "1.15.1" async-std = { version = "1.12.0", optional = true } ## For use in rev-parse, which provides searching commits by running a regex on their message. diff --git a/tests/it/Cargo.toml b/tests/it/Cargo.toml index 197d37a2179..25abc5edad7 100644 --- a/tests/it/Cargo.toml +++ b/tests/it/Cargo.toml @@ -16,7 +16,7 @@ path = "src/main.rs" [dependencies] anyhow = "1.0.98" -clap = { version = "4.5.39", features = ["derive"] } +clap = { version = "4.5.40", features = ["derive"] } gix = { version = "^0.72.1", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "revision"] } once_cell = "1.21.3" regex = { version = "1.11.1", default-features = false, features = ["std"] } From bd0189360152325b3d0eb8a19a1c96af938071b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Wed, 2 Jul 2025 11:07:01 +0200 Subject: [PATCH 031/296] feat: add explicit accessors for common fields --- gix-diff/src/index/change.rs | 40 ++++++++++++++++++++++++++++++++++++ gix-diff/tests/diff/index.rs | 27 +++++++++++++++++++++--- 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/gix-diff/src/index/change.rs b/gix-diff/src/index/change.rs index 923e80dee2e..f2ae34827e7 100644 --- a/gix-diff/src/index/change.rs +++ b/gix-diff/src/index/change.rs @@ -114,6 +114,46 @@ impl ChangeRef<'_, '_> { } => (location.as_ref(), *index, *entry_mode, id), } } + + /// Return the `location`, in the case of rewrites referring to the current change. + pub fn location(&self) -> &BStr { + match self { + ChangeRef::Addition { location, .. } + | ChangeRef::Deletion { location, .. } + | ChangeRef::Modification { location, .. } + | ChangeRef::Rewrite { location, .. } => location.as_ref(), + } + } + + /// Return the `index`, in the case of rewrites referring to the current change. + pub fn index(&self) -> usize { + match self { + ChangeRef::Addition { index, .. } + | ChangeRef::Deletion { index, .. } + | ChangeRef::Modification { index, .. } + | ChangeRef::Rewrite { index, .. } => *index, + } + } + + /// Return the `entry_mode`, in the case of rewrites referring to the current change. + pub fn entry_mode(&self) -> gix_index::entry::Mode { + match self { + ChangeRef::Addition { entry_mode, .. } + | ChangeRef::Deletion { entry_mode, .. } + | ChangeRef::Modification { entry_mode, .. } + | ChangeRef::Rewrite { entry_mode, .. } => *entry_mode, + } + } + + /// Return the `id`, in the case of rewrites referring to the current change. + pub fn id(&self) -> &gix_hash::oid { + match self { + ChangeRef::Addition { id, .. } + | ChangeRef::Deletion { id, .. } + | ChangeRef::Modification { id, .. } + | ChangeRef::Rewrite { id, .. } => id, + } + } } impl rewrites::tracker::Change for ChangeRef<'_, '_> { diff --git a/gix-diff/tests/diff/index.rs b/gix-diff/tests/diff/index.rs index f38c30f14df..edeaa9a3c35 100644 --- a/gix-diff/tests/diff/index.rs +++ b/gix-diff/tests/diff/index.rs @@ -1,3 +1,5 @@ +use std::str::FromStr; + use gix_diff::{ index::Change, rewrites::{Copies, CopySource}, @@ -313,8 +315,27 @@ fn renames_by_similarity_with_limit() -> crate::Result { 0, "fuzzy tracking is effectively disabled due to limit" ); - let actual: Vec<_> = changes.iter().map(|c| c.fields().0).collect(); - assert_eq!(actual, ["f1", "f1-renamed", "f2", "f2-renamed"]); + let actual_locations: Vec<_> = changes.iter().map(|c| c.location()).collect(); + assert_eq!(actual_locations, ["f1", "f1-renamed", "f2", "f2-renamed"]); + + let actual_indices: Vec<_> = changes.iter().map(|c| c.index()).collect(); + assert_eq!(actual_indices, [6, 6, 7, 7]); + + use gix_index::entry::Mode; + + let actual_entry_modes: Vec<_> = changes.iter().map(|c| c.entry_mode()).collect(); + assert_eq!(actual_entry_modes, [Mode::FILE, Mode::FILE, Mode::FILE, Mode::FILE]); + + let actual_ids: Vec<_> = changes.iter().map(|c| c.id()).collect(); + assert_eq!( + actual_ids, + [ + gix_hash::ObjectId::from_str("f00c965d8307308469e537302baa73048488f162")?, + gix_hash::ObjectId::from_str("683cfcc0f47566c332aa45d81c5cc98acb4aab49")?, + gix_hash::ObjectId::from_str("3bb459b831ea471b9cd1cbb7c6d54a74251a711b")?, + gix_hash::ObjectId::from_str("0a805f8e02d72bd354c1f00607906de2e49e00d6")?, + ] + ); let out = out.expect("tracking enabled"); assert_eq!(out.num_similarity_checks, 0); @@ -481,7 +502,7 @@ fn copies_in_entire_tree_by_similarity() -> crate::Result { 0, "needs --find-copies-harder to detect rewrites here" ); - let actual: Vec<_> = changes.iter().map(|c| c.fields().0).collect(); + let actual: Vec<_> = changes.iter().map(|c| c.location()).collect(); assert_eq!(actual, ["b", "c6", "c7", "newly-added"]); let out = out.expect("tracking enabled"); From a0cef8bd5351acd334459b115c139a9c75e41f55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Wed, 2 Jul 2025 11:07:46 +0200 Subject: [PATCH 032/296] Adapt to changes in `gix-diff` --- gix/src/status/iter/types.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gix/src/status/iter/types.rs b/gix/src/status/iter/types.rs index 1ee9e17ea4d..c6ce3470513 100644 --- a/gix/src/status/iter/types.rs +++ b/gix/src/status/iter/types.rs @@ -135,7 +135,7 @@ impl Item { pub fn location(&self) -> &BStr { match self { Item::IndexWorktree(change) => change.rela_path(), - Item::TreeIndex(change) => change.fields().0, + Item::TreeIndex(change) => change.location(), } } } From fad0118b53dbd9a18ee80e76b16f2b732496ac73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Wed, 2 Jul 2025 11:22:20 +0200 Subject: [PATCH 033/296] Reference new methods in docs for `ChangeRef::field()` --- gix-diff/src/index/change.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gix-diff/src/index/change.rs b/gix-diff/src/index/change.rs index f2ae34827e7..0f8967ea33b 100644 --- a/gix-diff/src/index/change.rs +++ b/gix-diff/src/index/change.rs @@ -82,6 +82,12 @@ impl ChangeRef<'_, '_> { /// Return all shared fields among all variants: `(location, index, entry_mode, id)` /// /// In case of rewrites, the fields return to the current change. + /// + /// Note that there are also more specific accessors in case you only need to access to one of + /// these fields individually. + /// + /// See [`ChangeRef::location()`], [`ChangeRef::index()`], [`ChangeRef::entry_mode()`] and + /// [`ChangeRef::id()`]. pub fn fields(&self) -> (&BStr, usize, gix_index::entry::Mode, &gix_hash::oid) { match self { ChangeRef::Addition { From 79b8f0656e34e5099cf09ecd9a9bf569f24c7c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Wed, 2 Jul 2025 12:32:23 +0200 Subject: [PATCH 034/296] Thanks clippy --- gix-diff/tests/diff/index.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/gix-diff/tests/diff/index.rs b/gix-diff/tests/diff/index.rs index edeaa9a3c35..5d08ff52866 100644 --- a/gix-diff/tests/diff/index.rs +++ b/gix-diff/tests/diff/index.rs @@ -315,18 +315,21 @@ fn renames_by_similarity_with_limit() -> crate::Result { 0, "fuzzy tracking is effectively disabled due to limit" ); - let actual_locations: Vec<_> = changes.iter().map(|c| c.location()).collect(); + + use gix_diff::index::ChangeRef; + + let actual_locations: Vec<_> = changes.iter().map(ChangeRef::location).collect(); assert_eq!(actual_locations, ["f1", "f1-renamed", "f2", "f2-renamed"]); - let actual_indices: Vec<_> = changes.iter().map(|c| c.index()).collect(); + let actual_indices: Vec<_> = changes.iter().map(ChangeRef::index).collect(); assert_eq!(actual_indices, [6, 6, 7, 7]); use gix_index::entry::Mode; - let actual_entry_modes: Vec<_> = changes.iter().map(|c| c.entry_mode()).collect(); + let actual_entry_modes: Vec<_> = changes.iter().map(ChangeRef::entry_mode).collect(); assert_eq!(actual_entry_modes, [Mode::FILE, Mode::FILE, Mode::FILE, Mode::FILE]); - let actual_ids: Vec<_> = changes.iter().map(|c| c.id()).collect(); + let actual_ids: Vec<_> = changes.iter().map(ChangeRef::id).collect(); assert_eq!( actual_ids, [ @@ -502,7 +505,7 @@ fn copies_in_entire_tree_by_similarity() -> crate::Result { 0, "needs --find-copies-harder to detect rewrites here" ); - let actual: Vec<_> = changes.iter().map(|c| c.location()).collect(); + let actual: Vec<_> = changes.iter().map(gix_diff::index::ChangeRef::location).collect(); assert_eq!(actual, ["b", "c6", "c7", "newly-added"]); let out = out.expect("tracking enabled"); From 37d3bf24ac1a79302f3e97b97372e4ad381c45e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Wed, 2 Jul 2025 13:57:44 +0200 Subject: [PATCH 035/296] feat: add first debug version of `gix tag list` --- gitoxide-core/src/repository/mod.rs | 1 + gitoxide-core/src/repository/tag.rs | 17 +++++++++++++++++ src/plumbing/main.rs | 13 ++++++++++++- src/plumbing/options/mod.rs | 11 +++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gitoxide-core/src/repository/tag.rs diff --git a/gitoxide-core/src/repository/mod.rs b/gitoxide-core/src/repository/mod.rs index 8158f7cf0b6..bf3f5fe0e6d 100644 --- a/gitoxide-core/src/repository/mod.rs +++ b/gitoxide-core/src/repository/mod.rs @@ -44,6 +44,7 @@ pub mod remote; pub mod revision; pub mod status; pub mod submodule; +pub mod tag; pub mod tree; pub mod verify; pub mod worktree; diff --git a/gitoxide-core/src/repository/tag.rs b/gitoxide-core/src/repository/tag.rs new file mode 100644 index 00000000000..7dc9e3d93d6 --- /dev/null +++ b/gitoxide-core/src/repository/tag.rs @@ -0,0 +1,17 @@ +pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Result<()> { + let platform = repo.references()?; + + for mut reference in (platform.tags()?).flatten() { + let tag = reference.peel_to_tag(); + let tag_ref = tag.as_ref().map(gix::Tag::decode); + + let name = match tag_ref { + Ok(Ok(tag)) => tag.name.to_string(), + _ => reference.name().shorten().to_string(), + }; + + writeln!(out, "{name}")?; + } + + Ok(()) +} diff --git a/src/plumbing/main.rs b/src/plumbing/main.rs index 3a81447d701..00aea889375 100644 --- a/src/plumbing/main.rs +++ b/src/plumbing/main.rs @@ -17,7 +17,7 @@ use crate::{ plumbing::{ options::{ attributes, commit, commitgraph, config, credential, exclude, free, fsck, index, mailmap, merge, odb, - revision, tree, Args, Subcommands, + revision, tag, tree, Args, Subcommands, }, show_progress, }, @@ -1304,6 +1304,17 @@ pub fn main() -> Result<()> { }, ), }, + Subcommands::Tag(cmd) => match cmd { + tag::Subcommands::List => prepare_and_run( + "tag-list", + trace, + auto_verbose, + progress, + progress_keep_open, + None, + move |_progress, out, _err| core::repository::tag::list(repository(Mode::Lenient)?, out), + ), + }, Subcommands::Tree(cmd) => match cmd { tree::Subcommands::Entries { treeish, diff --git a/src/plumbing/options/mod.rs b/src/plumbing/options/mod.rs index ae1ea443551..5b982599d81 100644 --- a/src/plumbing/options/mod.rs +++ b/src/plumbing/options/mod.rs @@ -100,6 +100,9 @@ pub enum Subcommands { /// Interact with commit objects. #[clap(subcommand)] Commit(commit::Subcommands), + /// Interact with tag objects. + #[clap(subcommand)] + Tag(tag::Subcommands), /// Verify the integrity of the entire repository Verify { #[clap(flatten)] @@ -928,6 +931,14 @@ pub mod commit { } } +pub mod tag { + #[derive(Debug, clap::Subcommand)] + pub enum Subcommands { + /// List all tags. + List, + } +} + pub mod credential { #[derive(Debug, clap::Subcommand)] pub enum Subcommands { From 5e64298ba4864636779ae72e301475e9cfe01ac8 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 2 Jul 2025 10:49:53 +0200 Subject: [PATCH 036/296] Reproduce unified diff issue A change on 2x context lines will have two much context from the top. --- gix-diff/src/blob/unified_diff.rs | 108 +++++++++++++------- gix-diff/tests/diff/blob/unified_diff.rs | 119 +++++++++++++++++++++++ 2 files changed, 193 insertions(+), 34 deletions(-) diff --git a/gix-diff/src/blob/unified_diff.rs b/gix-diff/src/blob/unified_diff.rs index de051266152..437ed132f0f 100644 --- a/gix-diff/src/blob/unified_diff.rs +++ b/gix-diff/src/blob/unified_diff.rs @@ -77,6 +77,10 @@ pub(super) mod _impl { use super::{ConsumeHunk, ContextSize, NewlineSeparator}; + const CONTEXT: char = ' '; + const ADDITION: char = '+'; + const REMOVAL: char = '-'; + /// A [`Sink`] that creates a textual diff in the format typically output by git or `gnu-diff` if the `-u` option is used, /// and passes it in full to a consumer. pub struct UnifiedDiff<'a, T, D> @@ -88,18 +92,25 @@ pub(super) mod _impl { after: &'a [Token], interner: &'a Interner, - pos: u32, + /// The 0-based start position in the 'before' tokens for the accumulated hunk for display in the header. before_hunk_start: u32, - after_hunk_start: u32, + /// The size of the accumulated 'before' hunk in lines for display in the header. before_hunk_len: u32, + /// The 0-based start position in the 'after' tokens for the accumulated hunk for display in the header. + after_hunk_start: u32, + /// The size of the accumulated 'after' hunk in lines. after_hunk_len: u32, + // An index into `before` and the context line to print next, + // or `None` if this value was never computed to be the correct starting point for an accumulated hunk. + ctx_pos: Option, + /// Symmetrical context before and after the changed hunk. ctx_size: u32, + newline: NewlineSeparator<'a>, buffer: Vec, header_buf: String, delegate: D, - newline: NewlineSeparator<'a>, err: Option, } @@ -122,19 +133,22 @@ pub(super) mod _impl { context_size: ContextSize, ) -> Self { Self { + interner: &input.interner, + before: &input.before, + after: &input.after, + before_hunk_start: 0, - after_hunk_start: 0, before_hunk_len: 0, after_hunk_len: 0, + after_hunk_start: 0, + ctx_pos: None, + + ctx_size: context_size.symmetrical, + newline: newline_separator, + buffer: Vec::with_capacity(8), header_buf: String::new(), delegate: consume_hunk, - interner: &input.interner, - before: &input.before, - after: &input.after, - pos: 0, - ctx_size: context_size.symmetrical, - newline: newline_separator, err: None, } @@ -158,23 +172,25 @@ pub(super) mod _impl { } } - fn flush(&mut self) -> std::io::Result<()> { - if self.before_hunk_len == 0 && self.after_hunk_len == 0 { + fn flush_accumulated_hunk(&mut self) -> std::io::Result<()> { + if self.nothing_to_flush() { return Ok(()); } - let end = (self.pos + self.ctx_size).min(self.before.len() as u32); - self.update_pos(end, end); + let ctx_pos = self.ctx_pos.expect("has been set if we started a hunk"); + let end = (ctx_pos + self.ctx_size).min(self.before.len() as u32); + self.print_context_and_update_pos(ctx_pos..end, end); + let hunk_start = self.before_hunk_start + 1; + let hunk_end = self.after_hunk_start + 1; self.header_buf.clear(); - std::fmt::Write::write_fmt( &mut self.header_buf, format_args!( "@@ -{},{} +{},{} @@{nl}", - self.before_hunk_start + 1, + hunk_start, self.before_hunk_len, - self.after_hunk_start + 1, + hunk_end, self.after_hunk_len, nl = match self.newline { NewlineSeparator::AfterHeaderAndLine(nl) | NewlineSeparator::AfterHeaderAndWhenNeeded(nl) => { @@ -185,26 +201,35 @@ pub(super) mod _impl { ) .map_err(|err| std::io::Error::new(ErrorKind::Other, err))?; self.delegate.consume_hunk( - self.before_hunk_start + 1, + hunk_start, self.before_hunk_len, - self.after_hunk_start + 1, + hunk_end, self.after_hunk_len, &self.header_buf, &self.buffer, )?; - self.buffer.clear(); - self.before_hunk_len = 0; - self.after_hunk_len = 0; + + self.reset_hunks(); Ok(()) } - fn update_pos(&mut self, print_to: u32, move_to: u32) { - self.print_tokens(&self.before[self.pos as usize..print_to as usize], ' '); - let len = print_to - self.pos; - self.pos = move_to; + fn print_context_and_update_pos(&mut self, print: Range, move_to: u32) { + self.print_tokens(&self.before[print.start as usize..print.end as usize], CONTEXT); + let len = print.end - print.start; + self.ctx_pos = Some(move_to); self.before_hunk_len += len; self.after_hunk_len += len; } + + fn reset_hunks(&mut self) { + self.buffer.clear(); + self.before_hunk_len = 0; + self.after_hunk_len = 0; + } + + fn nothing_to_flush(&self) -> bool { + self.before_hunk_len == 0 && self.after_hunk_len == 0 + } } impl Sink for UnifiedDiff<'_, T, D> @@ -218,24 +243,39 @@ pub(super) mod _impl { if self.err.is_some() { return; } - if before.start - self.pos > 2 * self.ctx_size { - if let Err(err) = self.flush() { + let start_next_hunk = self + .ctx_pos + .is_some_and(|ctx_pos| before.start - ctx_pos > 2 * self.ctx_size); + if start_next_hunk { + if let Err(err) = self.flush_accumulated_hunk() { self.err = Some(err); return; } - self.pos = before.start - self.ctx_size; - self.before_hunk_start = self.pos; + let ctx_pos = before.start - self.ctx_size; + self.ctx_pos = Some(ctx_pos); + self.before_hunk_start = ctx_pos; self.after_hunk_start = after.start - self.ctx_size; } - self.update_pos(before.start, before.end); + let ctx_pos = match self.ctx_pos { + None => { + // TODO: can this be made so the code above does the job? + let ctx_pos = before.start.saturating_sub(self.ctx_size); + self.before_hunk_start = ctx_pos; + self.after_hunk_start = after.start.saturating_sub(self.ctx_size); + ctx_pos + } + Some(pos) => pos, + }; + self.print_context_and_update_pos(ctx_pos..before.start, before.end); self.before_hunk_len += before.end - before.start; self.after_hunk_len += after.end - after.start; - self.print_tokens(&self.before[before.start as usize..before.end as usize], '-'); - self.print_tokens(&self.after[after.start as usize..after.end as usize], '+'); + + self.print_tokens(&self.before[before.start as usize..before.end as usize], REMOVAL); + self.print_tokens(&self.after[after.start as usize..after.end as usize], ADDITION); } fn finish(mut self) -> Self::Out { - if let Err(err) = self.flush() { + if let Err(err) = self.flush_accumulated_hunk() { self.err = Some(err); } if let Some(err) = self.err { diff --git a/gix-diff/tests/diff/blob/unified_diff.rs b/gix-diff/tests/diff/blob/unified_diff.rs index 87f060e7df4..4bb2df7d421 100644 --- a/gix-diff/tests/diff/blob/unified_diff.rs +++ b/gix-diff/tests/diff/blob/unified_diff.rs @@ -170,6 +170,125 @@ fn context_overlap_by_one_line_move_down() -> crate::Result { Ok(()) } +#[test] +fn added_on_top_keeps_context_correctly_sized() -> crate::Result { + let a = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10"; + let b = "1\n2\n3\n4\n4.5\n5\n6\n7\n8\n9\n10"; + + let a = gix_diff::blob::sources::lines_with_terminator(a); + let b = gix_diff::blob::sources::lines_with_terminator(b); + let interner = gix_diff::blob::intern::InternedInput::new(a, b); + + let actual = gix_diff::blob::diff( + Algorithm::Myers, + &interner, + UnifiedDiff::new( + &interner, + String::new(), + NewlineSeparator::AfterHeaderAndWhenNeeded("\n"), + ContextSize::symmetrical(3), + ), + )?; + // TODO: fix this + insta::assert_snapshot!(actual, @r" + @@ -2,6 +2,7 @@ + 2 + 3 + 4 + +4.5 + 5 + 6 + 7 + "); + + let a = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10"; + let b = "1\n2\n3\n4\n5\n6\n6.5\n7\n8\n9\n10"; + + let a = gix_diff::blob::sources::lines_with_terminator(a); + let b = gix_diff::blob::sources::lines_with_terminator(b); + let interner = gix_diff::blob::intern::InternedInput::new(a, b); + + let actual = gix_diff::blob::diff( + Algorithm::Myers, + &interner, + UnifiedDiff::new( + &interner, + String::new(), + NewlineSeparator::AfterHeaderAndWhenNeeded("\n"), + ContextSize::symmetrical(3), + ), + )?; + + insta::assert_snapshot!(actual, @r" + @@ -4,6 +4,7 @@ + 4 + 5 + 6 + +6.5 + 7 + 8 + 9 + "); + let a = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10"; + let b = "1\n2\n3\n3.5\n4\n5\n6\n7\n8\n9\n10"; + + let a = gix_diff::blob::sources::lines_with_terminator(a); + let b = gix_diff::blob::sources::lines_with_terminator(b); + let interner = gix_diff::blob::intern::InternedInput::new(a, b); + + let actual = gix_diff::blob::diff( + Algorithm::Myers, + &interner, + UnifiedDiff::new( + &interner, + String::new(), + NewlineSeparator::AfterHeaderAndWhenNeeded("\n"), + ContextSize::symmetrical(3), + ), + )?; + + insta::assert_snapshot!(actual, @r" + @@ -1,6 +1,7 @@ + 1 + 2 + 3 + +3.5 + 4 + 5 + 6 + "); + + // From the end, for good measure + let a = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10"; + let b = "1\n2\n3\n4\n5\n6\n7\n7.5\n8\n9\n10"; + + let a = gix_diff::blob::sources::lines_with_terminator(a); + let b = gix_diff::blob::sources::lines_with_terminator(b); + let interner = gix_diff::blob::intern::InternedInput::new(a, b); + + let actual = gix_diff::blob::diff( + Algorithm::Myers, + &interner, + UnifiedDiff::new( + &interner, + String::new(), + NewlineSeparator::AfterHeaderAndWhenNeeded("\n"), + ContextSize::symmetrical(3), + ), + )?; + insta::assert_snapshot!(actual, @r" + @@ -5,6 +5,7 @@ + 5 + 6 + 7 + +7.5 + 8 + 9 + 10 + "); + Ok(()) +} + #[test] fn removed_modified_added_with_newlines_in_tokens() -> crate::Result { let a = "1\n2\n3\n4\n5\n6\n7\n8\n9\n10"; From a845a4b5b0579cd65f1e2f5c18a751329ff9504f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Fri, 4 Jul 2025 12:15:55 +0200 Subject: [PATCH 037/296] Make output more verbose --- gitoxide-core/src/repository/tag.rs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/gitoxide-core/src/repository/tag.rs b/gitoxide-core/src/repository/tag.rs index 7dc9e3d93d6..4d51aed3c9e 100644 --- a/gitoxide-core/src/repository/tag.rs +++ b/gitoxide-core/src/repository/tag.rs @@ -5,12 +5,26 @@ pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Resu let tag = reference.peel_to_tag(); let tag_ref = tag.as_ref().map(gix::Tag::decode); - let name = match tag_ref { - Ok(Ok(tag)) => tag.name.to_string(), - _ => reference.name().shorten().to_string(), - }; + // `name` is the name of the file in `refs/tags/`. This applies to both lightweight as well + // as annotated tags. + let name = reference.name().shorten(); - writeln!(out, "{name}")?; + match tag_ref { + Ok(Ok(tag_ref)) => { + // `tag_name` is the name provided by the user via `git tag -a/-s/-u`. It is only + // present for annotated tags. + let tag_name = tag_ref.name; + + if name == tag_name { + writeln!(out, "{name} *")?; + } else { + writeln!(out, "{name} [tag name: {}]", tag_ref.name)?; + } + } + _ => { + writeln!(out, "{name}")?; + } + } } Ok(()) From 750ae9bc3cf72c1d9a358307e423523324eb25fb Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 6 Jul 2025 15:54:53 +0200 Subject: [PATCH 038/296] refactor - add alias - support `tags` as alias, invoked without explicit `list` - always put annotated tag information into `[]`, despite being more noisy. --- gitoxide-core/src/repository/tag.rs | 26 ++++++++++++++------------ src/plumbing/main.rs | 4 ++-- src/plumbing/options/mod.rs | 10 ++++++++-- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/gitoxide-core/src/repository/tag.rs b/gitoxide-core/src/repository/tag.rs index 4d51aed3c9e..2bc109020e5 100644 --- a/gitoxide-core/src/repository/tag.rs +++ b/gitoxide-core/src/repository/tag.rs @@ -1,25 +1,27 @@ pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Result<()> { let platform = repo.references()?; - for mut reference in (platform.tags()?).flatten() { + for mut reference in platform.tags()?.flatten() { let tag = reference.peel_to_tag(); let tag_ref = tag.as_ref().map(gix::Tag::decode); - // `name` is the name of the file in `refs/tags/`. This applies to both lightweight as well - // as annotated tags. + // `name` is the name of the file in `refs/tags/`. + // This applies to both lightweight and annotated tags. let name = reference.name().shorten(); - + let mut fields = Vec::new(); match tag_ref { Ok(Ok(tag_ref)) => { - // `tag_name` is the name provided by the user via `git tag -a/-s/-u`. It is only - // present for annotated tags. - let tag_name = tag_ref.name; - - if name == tag_name { - writeln!(out, "{name} *")?; - } else { - writeln!(out, "{name} [tag name: {}]", tag_ref.name)?; + // `tag_name` is the name provided by the user via `git tag -a/-s/-u`. + // It is only present for annotated tags. + fields.push(format!( + "tag name: {}", + if name == tag_ref.name { "*".into() } else { tag_ref.name } + )); + if tag_ref.pgp_signature.is_some() { + fields.push("signed".into()); } + + writeln!(out, "{name} [{fields}]", fields = fields.join(", "))?; } _ => { writeln!(out, "{name}")?; diff --git a/src/plumbing/main.rs b/src/plumbing/main.rs index 00aea889375..12f2e5e7733 100644 --- a/src/plumbing/main.rs +++ b/src/plumbing/main.rs @@ -1304,8 +1304,8 @@ pub fn main() -> Result<()> { }, ), }, - Subcommands::Tag(cmd) => match cmd { - tag::Subcommands::List => prepare_and_run( + Subcommands::Tag(platform) => match platform.cmds { + Some(tag::Subcommands::List) | None => prepare_and_run( "tag-list", trace, auto_verbose, diff --git a/src/plumbing/options/mod.rs b/src/plumbing/options/mod.rs index 5b982599d81..33f636b323b 100644 --- a/src/plumbing/options/mod.rs +++ b/src/plumbing/options/mod.rs @@ -101,8 +101,8 @@ pub enum Subcommands { #[clap(subcommand)] Commit(commit::Subcommands), /// Interact with tag objects. - #[clap(subcommand)] - Tag(tag::Subcommands), + #[clap(visible_alias = "tags")] + Tag(tag::Platform), /// Verify the integrity of the entire repository Verify { #[clap(flatten)] @@ -932,6 +932,12 @@ pub mod commit { } pub mod tag { + #[derive(Debug, clap::Parser)] + pub struct Platform { + #[clap(subcommand)] + pub cmds: Option, + } + #[derive(Debug, clap::Subcommand)] pub enum Subcommands { /// List all tags. From 6c77b541b476656827ee0542a650b9731ba549cf Mon Sep 17 00:00:00 2001 From: Colin Nelson Date: Tue, 24 Jun 2025 15:20:31 -0700 Subject: [PATCH 039/296] feat!: walkdir_sorted_new adds max_depth parameter max_depth parameter determines the maximum depth the WalkDir will recurse into. Example values: * 0 -> Returns only the root path with no children. * 1 -> Returns the root path, with children. * 2..n -> Returns the root path, children and {n}-grandchildren --- gix-features/src/fs.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gix-features/src/fs.rs b/gix-features/src/fs.rs index 1838dcdbd87..a1769cd0b21 100644 --- a/gix-features/src/fs.rs +++ b/gix-features/src/fs.rs @@ -207,9 +207,14 @@ pub mod walkdir { /// Instantiate a new directory iterator which will not skip hidden files and is sorted, with the given level of `parallelism`. /// /// Use `precompose_unicode` to represent the `core.precomposeUnicode` configuration option. - pub fn walkdir_sorted_new(root: &Path, _: Parallelism, precompose_unicode: bool) -> WalkDir { + /// Use `max_depth` to limit the depth of the recursive walk. + /// * 0 -> Returns only the root path with no children + /// * 1 -> Root directory and children. + /// * 2..n -> Root directory, children and {n}-grandchildren + pub fn walkdir_sorted_new(root: &Path, _: Parallelism, max_depth: usize, precompose_unicode: bool) -> WalkDir { WalkDir { inner: WalkDirImpl::new(root) + .max_depth(max_depth) .sort_by(|a, b| { let storage_a; let storage_b; From a2741da85fe04907f8773a99813e3802333b402d Mon Sep 17 00:00:00 2001 From: Colin Nelson Date: Tue, 24 Jun 2025 15:20:31 -0700 Subject: [PATCH 040/296] adapt to changes in gix_features::walkdir_sorted_new --- gix-ref/src/store/file/loose/iter.rs | 1 + gix-submodule/tests/file/baseline.rs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gix-ref/src/store/file/loose/iter.rs b/gix-ref/src/store/file/loose/iter.rs index 31d91a4b094..2b8be91da4b 100644 --- a/gix-ref/src/store/file/loose/iter.rs +++ b/gix-ref/src/store/file/loose/iter.rs @@ -24,6 +24,7 @@ impl SortedLoosePaths { gix_features::fs::walkdir_sorted_new( path, gix_features::fs::walkdir::Parallelism::Serial, + usize::MAX, precompose_unicode, ) .into_iter() diff --git a/gix-submodule/tests/file/baseline.rs b/gix-submodule/tests/file/baseline.rs index 6971cdb33a7..513b5051af0 100644 --- a/gix-submodule/tests/file/baseline.rs +++ b/gix-submodule/tests/file/baseline.rs @@ -61,7 +61,7 @@ fn common_values_and_names_by_path() -> crate::Result { fn module_files() -> impl Iterator { let dir = gix_testtools::scripted_fixture_read_only("basic.sh").expect("valid fixture"); - gix_features::fs::walkdir_sorted_new(&dir, Parallelism::Serial, false) + gix_features::fs::walkdir_sorted_new(&dir, Parallelism::Serial, usize::MAX, false) .follow_links(false) .into_iter() .filter_map(move |entry| { From fdf5153d9fe5e7c059b5a9687b7041e16ba54683 Mon Sep 17 00:00:00 2001 From: Colin Nelson Date: Tue, 24 Jun 2025 15:20:31 -0700 Subject: [PATCH 041/296] feat: refs support pseudo refs --- gix-ref/src/store/file/loose/iter.rs | 20 +++- gix-ref/src/store/file/overlay_iter.rs | 111 +++++++++++++----- .../make_pref_repository.tar | Bin 0 -> 81920 bytes .../tests/fixtures/make_pref_repository.sh | 41 +++++++ gix-ref/tests/refs/main.rs | 1 + gix-ref/tests/refs/pseudo_refs.rs | 21 ++++ 6 files changed, 160 insertions(+), 34 deletions(-) create mode 100644 gix-ref/tests/fixtures/generated-archives/make_pref_repository.tar create mode 100755 gix-ref/tests/fixtures/make_pref_repository.sh create mode 100644 gix-ref/tests/refs/pseudo_refs.rs diff --git a/gix-ref/src/store/file/loose/iter.rs b/gix-ref/src/store/file/loose/iter.rs index 2b8be91da4b..a44ff92b7b8 100644 --- a/gix-ref/src/store/file/loose/iter.rs +++ b/gix-ref/src/store/file/loose/iter.rs @@ -11,20 +11,31 @@ pub(in crate::store_impl::file) struct SortedLoosePaths { pub(crate) base: PathBuf, /// An prefix like `refs/heads/foo/` or `refs/heads/prefix` that a returned reference must match against.. prefix: Option, + /// A suffix like `HEAD` that a returned reference must match against.. + suffix: Option, file_walk: Option, } impl SortedLoosePaths { - pub fn at(path: &Path, base: PathBuf, prefix: Option, precompose_unicode: bool) -> Self { + pub fn at( + path: &Path, + base: PathBuf, + prefix: Option, + suffix: Option, + root_only: bool, + precompose_unicode: bool, + ) -> Self { + let depth = if root_only { 1 } else { usize::MAX }; SortedLoosePaths { base, prefix, + suffix, file_walk: path.is_dir().then(|| { // serial iteration as we expect most refs in packed-refs anyway. gix_features::fs::walkdir_sorted_new( path, gix_features::fs::walkdir::Parallelism::Serial, - usize::MAX, + depth, precompose_unicode, ) .into_iter() @@ -57,6 +68,11 @@ impl Iterator for SortedLoosePaths { continue; } } + if let Some(suffix) = &self.suffix { + if !full_name.ends_with(suffix) { + continue; + } + } if gix_validate::reference::name_partial(full_name.as_bstr()).is_ok() { let name = FullName(full_name); return Some(Ok((full_path, name))); diff --git a/gix-ref/src/store/file/overlay_iter.rs b/gix-ref/src/store/file/overlay_iter.rs index d6c3b5ae8c8..6850fba2137 100644 --- a/gix-ref/src/store/file/overlay_iter.rs +++ b/gix-ref/src/store/file/overlay_iter.rs @@ -10,7 +10,7 @@ use gix_object::bstr::ByteSlice; use gix_path::RelativePath; use crate::{ - file::{loose, loose::iter::SortedLoosePaths}, + file::loose::{self, iter::SortedLoosePaths}, store_impl::{file, packed}, BStr, FullName, Namespace, Reference, }; @@ -85,36 +85,48 @@ impl<'p> LooseThenPacked<'p, '_> { } fn convert_loose(&mut self, res: std::io::Result<(PathBuf, FullName)>) -> Result { - let (refpath, name) = res.map_err(Error::Traversal)?; - std::fs::File::open(&refpath) - .and_then(|mut f| { - self.buf.clear(); - f.read_to_end(&mut self.buf) - }) - .map_err(|err| Error::ReadFileContents { - source: err, - path: refpath.to_owned(), - })?; - loose::Reference::try_from_path(name, &self.buf) - .map_err(|err| { - let relative_path = refpath - .strip_prefix(self.git_dir) - .ok() - .or_else(|| { - self.common_dir - .and_then(|common_dir| refpath.strip_prefix(common_dir).ok()) - }) - .expect("one of our bases contains the path"); - Error::ReferenceCreation { - source: err, - relative_path: relative_path.into(), - } - }) - .map(Into::into) - .map(|r| self.strip_namespace(r)) + convert_loose(&mut self.buf, self.git_dir, self.common_dir, self.namespace, res) } } +pub(crate) fn convert_loose( + buf: &mut Vec, + git_dir: &Path, + common_dir: Option<&Path>, + namespace: Option<&Namespace>, + res: std::io::Result<(PathBuf, FullName)>, +) -> Result { + let (refpath, name) = res.map_err(Error::Traversal)?; + std::fs::File::open(&refpath) + .and_then(|mut f| { + buf.clear(); + f.read_to_end(buf) + }) + .map_err(|err| Error::ReadFileContents { + source: err, + path: refpath.to_owned(), + })?; + loose::Reference::try_from_path(name, buf) + .map_err(|err| { + let relative_path = refpath + .strip_prefix(git_dir) + .ok() + .or_else(|| common_dir.and_then(|common_dir| refpath.strip_prefix(common_dir).ok())) + .expect("one of our bases contains the path"); + Error::ReferenceCreation { + source: err, + relative_path: relative_path.into(), + } + }) + .map(Into::into) + .map(|mut r: Reference| { + if let Some(namespace) = namespace { + r.strip_namespace(namespace); + } + r + }) +} + impl Iterator for LooseThenPacked<'_, '_> { type Item = Result; @@ -210,6 +222,11 @@ impl Platform<'_> { self.store .iter_prefixed_packed(prefix, self.packed.as_ref().map(|b| &***b)) } + + /// Return an iterator over the pseudo references + pub fn psuedo_refs(&self) -> std::io::Result> { + self.store.iter_pseudo_refs() + } } impl file::Store { @@ -254,6 +271,10 @@ pub(crate) enum IterInfo<'a> { /// If `true`, we will convert decomposed into precomposed unicode. precompose_unicode: bool, }, + PseudoRefs { + base: &'a Path, + precompose_unicode: bool, + }, } impl<'a> IterInfo<'a> { @@ -263,6 +284,7 @@ impl<'a> IterInfo<'a> { IterInfo::PrefixAndBase { prefix, .. } => Some(gix_path::into_bstr(*prefix)), IterInfo::BaseAndIterRoot { prefix, .. } => Some(gix_path::into_bstr(prefix.clone())), IterInfo::ComputedIterationRoot { prefix, .. } => Some(prefix.clone()), + IterInfo::PseudoRefs { .. } => None, } } @@ -271,24 +293,35 @@ impl<'a> IterInfo<'a> { IterInfo::Base { base, precompose_unicode, - } => SortedLoosePaths::at(&base.join("refs"), base.into(), None, precompose_unicode), + } => SortedLoosePaths::at(&base.join("refs"), base.into(), None, None, false, precompose_unicode), IterInfo::BaseAndIterRoot { base, iter_root, prefix: _, precompose_unicode, - } => SortedLoosePaths::at(&iter_root, base.into(), None, precompose_unicode), + } => SortedLoosePaths::at(&iter_root, base.into(), None, None, false, precompose_unicode), IterInfo::PrefixAndBase { base, prefix, precompose_unicode, - } => SortedLoosePaths::at(&base.join(prefix), base.into(), None, precompose_unicode), + } => SortedLoosePaths::at(&base.join(prefix), base.into(), None, None, false, precompose_unicode), IterInfo::ComputedIterationRoot { iter_root, base, prefix, precompose_unicode, - } => SortedLoosePaths::at(&iter_root, base.into(), Some(prefix.into_owned()), precompose_unicode), + } => SortedLoosePaths::at( + &iter_root, + base.into(), + Some(prefix.into_owned()), + None, + false, + precompose_unicode, + ), + IterInfo::PseudoRefs { + base, + precompose_unicode, + } => SortedLoosePaths::at(base, base.into(), None, Some("HEAD".into()), true, precompose_unicode), } .peekable() } @@ -354,6 +387,20 @@ impl file::Store { } } + /// Return an iterator over all pseudo references, loose or `packed`, sorted by their name. + /// + /// Errors are returned similarly to what would happen when loose and packed refs where iterated by themselves. + pub fn iter_pseudo_refs<'p>(&'_ self) -> std::io::Result> { + self.iter_from_info( + IterInfo::PseudoRefs { + base: self.git_dir(), + precompose_unicode: self.precompose_unicode, + }, + None, + None, + ) + } + /// As [`iter(…)`](file::Store::iter()), but filters by `prefix`, i.e. `refs/heads/` or /// `refs/heads/feature-`. /// Note that if a prefix isn't using a trailing `/`, like in `refs/heads/foo`, it will effectively diff --git a/gix-ref/tests/fixtures/generated-archives/make_pref_repository.tar b/gix-ref/tests/fixtures/generated-archives/make_pref_repository.tar new file mode 100644 index 0000000000000000000000000000000000000000..e8942611672e0792c012edba1bf008c46dc0f280 GIT binary patch literal 81920 zcmeHweT-aLcGv6@NV*h>1g(+<6mh5A+3vQxy1uKrd!{|>X}5QJ*JB&IjW^hyo>x_` zx@%lrucuy>?T*JwSZzW?U?m6$_=^?FMj#P^kU(N1h(Hh&J`zC6iWO)v@m-=}mU}{mv1!Na{TyetX20+68gIYX@;d$!dTs5xVK=`8!Z|Q*eb;k+8&eb24;qOKU_$*$W$PuHaN$8>y5)A9*d1Aq_|&$u0@ z)^^bzKX4I?7_#H+*(c2wfAdT_M(ydPRI1f9J=gDx3+KI+StW?E~x)XbAz8HYX6v#qqrwE5wPelra(H8bNrcG@P5|McCp2O~`} z2-?&gU^qQ1jnbxt*=9lnU0lF7`D)U9XqsJbPtX!uN`@<5HM7rThzl3jo~O;_PZZem zwb$@pMWBxKwAC|t&fq(B{AsPt&d;~ZC6iyk?+vfxrkbtPc!wxy^eRfx$c36~lxBLug3UTu zzS}Uh1CxekX@5&Av+sDu>F)IR+)mG5G9orq%Itdmb_3koB})>y(D6E%A9cGPWks)# z`I_x6y(|*)t%PeWe$_*KoVtrIh>Bt(!bW z6WXnJJ>NI`ZKv1tx_bsYt2#i>g+f5sAA7CFVX(i3w(eul69$2F-cy-abA?D64G0)R6NjR>^1zfbiG`UchmokWn< zaQ)U!2Zs*|8?m&Mni2I$NrVKQX>}UzQ;I+0>&YrP4w&wNMA8g#b zmfGlcz3!^H((CaI3F$P5!9lV&gakU@7Ky%&16Oyb*@Emq{Cht5$iT^Y;&mVC_U^kL zZbioH7!UXYo-M^f3r=l$2E0%)k2WAK4DK`@xBTEpg=#2h4u=nY>=Av`!O0ZP$^*+S zXn3Sxej|8|U<`qG*R4MSt)RhbDrHRUNRpWj9YZ_4qSmNvq71~<_Tfr zYg}_L>{&;YLBr`n zF^7<%9=K$#P*uiocFSO-G4p=EUWbz0>;t?mq+xG?b{tOFc3{HLO~ez9$emo2--0nQ z*b}Y{a5vnxtC~I@ZlQnEqh86aCTP$L10_-=E4qk!=}~2(HWgoF*WIH61WLkS_Dk0# zT#)D#gS6|25C^uP$zVExl!hhMt5;V5Xy+-^S!o z59;h_j~=&ONP4J!gkbCD)teOjb$8c;ve&hmU;I8In-3W4b+0R@0Ll|&IX9)_x(#Xz z0hrr$50{8-AeGAG{DOIwnxULsOV8$E5CV=d-D(JcD4B;$HSaF%EE#{_#V*P0*pLP4 zWKcI#&tuc+P9HMQM#t|1>fR?(W zi^lEMm*UWX3*mkTeRe|sQlTAEjfrXcx!)c?22PF+6Yva-wfBfxI41Ay?c*Lu zMLq-}QZYWO|Fk!0Di{IEGj0t{-W&w|q`&lR@N1gJ;HIC|_50ab{lLG?v@9s57-!(u zkRzMn6($5C#KS$yJmcfr+j=nHFm4VTVj-0zT?(#m{w^S1oGck}jVwzqC?Y^3UqIP}B-X=w*Tn#}tq{f-zJ zu!+Dha7XT<1QgK1wz3BKMGY0fz6U-p0riG zLHD}OzL^^!8j`_d*k)i+i4n`3+4$_{mXJlbDtr3B!)@F#{lC9IL7hLYkDj3aR}uFy ztp67)r9}Ua<8WG^BmJL>&e0cuTHB-9q2qL*J&N6@=j`~ZSVNm-yG}j>ZAw3M+$X0r)GFm#oqS#NP=KN`86RSHk=O$818vZ- z($I$KLN5n%6=x$DV|R3^feI{EJuqxo3B|T3_N?G9-IsWtdPzQw4DRq0;ChKFKU*rZMpa6#3SD;lgcE>RXMgBcrh6g)V=2%@=y*=U_#Bx?7u8Nl7mo4! za#IU56i#L^{$OV_n=`LtS(nZ0x*mMc#avzpTB>iFjttBM>o1pKF#%`0rw_Du^j!xT zS!SQkA^60PoON{4U>|s+RVPS{aSW@1hx$Qc?H6B8en9vSB(wxvBW2w^e1u_n<nOnz>AM|@6ULAP+&Fy^E`v0>SdzbZ@uInkYTJfeO_>#_7P4TF zEEqo_krKfnRSOS%U_PFJN@tb)c%-TDEG;eZ5A8zmx;WO^M{9;66^}sBODTFeEj9<- zdKq}iaJ76r^y^_E@P^FY&t+DeO!MKKnaj;B=P@r=4^H4>Frkd9fhzdT&r(8VFD|NMlTjuYAV)I;Is+d1yYNqK z+ridmpV?0rE<|HIM>9G3){7Q9P6Lj#fT0C}G2GuRSZRi5T{N=;vtnC(+Q9@3EIj)IP~rwA4y(wC z9&mMYIr3nu1AS&jW!1pe0`GG{mpN=6G>-kBFILT^<)30@C)EC+$3G(AT>;Nhm z7D!7Bv@JxlsJAx${0*MM7;}>AyIe3(=aRRV~W%ibx zYrtU0s)hvLwN|I)!=sN74(Ru}#GyN_tNFQ%8?*l~jFh3h6Y}~-;8PDeCjPHbE>?!^ zKc##ziT{o;IK5Ai{Rdj?(dM6H!v9DzxW1Yp(+`H@FX>TZgm*SQ^9y*dn(kEb_Qhz`*6JvvD?$tG2m8vz2wB+I4`pB9I2YTCR-~Q4pxl zS%RrAnArlm-o1UDeE9gbSTNSfQ78oh@2^DtK${D0If6eph9M(Dt6FFsK}48?03Dk3 zHakG;p4e!D$W6egS~@LWgqn^Ag;tS7=;b;ub{=1h5e%xta9kjEjgDuU!5G=Rf6y(iqFC&X9a*B8tJ^AYq6V37>|T6xh+SqdnH*O1C7 zpaK?n*|DD($*7acL;Dd=Q_K>8K4Lv8+7HiTmpXVn#C(Hm)muP6rcj*)dcZ1fxDs9( z8zLHeV2of8jB>+$Vs$9^Hj(%NgA;E=0dg_!jD+_AEfGA_I&>+77kx~{7 zhvF~B)e8G(hrkcI^Y+fnn?xJhKNB~2GR5IF_YOMHd?3K{ z_8($J@;h_{CR|v2su~5o$E2@G&}B3s3C4nlO9O zcifEPXJUH53GzQz8O{GHmlOFvJ)s{PIgl`$4SA502ZqB$djXnfcU`}-;3-I=E`!=?CpB(>5q9Xg@mc#?k- z1RvVxH4Qi3HnlqS+tuLtXZV3V{h2*~XF?p{g!5mh7DnSgbJZmOCw5Gy_Ho?vAH=3m z(Nao|>s$0}4tah9at~E%@$_1iS&YmQYeo$pW1_zu)oO4|WKhQ#bBQ=>%mol=-r5Cy zZ6_GoeZ<+-5d|4$7vb4{zYBi=V)7*^2stU5$}!wqqw)Zp&D7jrWqKNwnXN9C` zWx8oh9C*fqQ5Vg7$g&PDcSM==*FI@GEVgWuITPs5jUmWLBXc!113T70J~6#Bbr1F` zA*xIUGs8^^{ZPI$eMJmY0WBfWl0uC*!Zi?gl_0knk!5tr+(8P9+sGipAp;ttx0M$S z!WR;u&?sVdF^rGo9*Kb^0m)5N_6J+k1=oaA*fBevhYL}|b+CQwH{X66fm(0h`IN-& zt&&q~DKv|-ghf0#2#Z+!fRTGhZgCeiU^dDc8UPSG z!L)7tr;w%}bkb(Yyvv|0OCW;@Kp~~Pi=HzS)POci#{i;8LCBXbnKk7090t6BB@(k; zT+k1JH}1~OH|=ErvBwe>r%T(~xV^o3b>qesyforf?3g(}`_6;;rHhvzEG%7|%?=R2 zs(Fyl?!%>aL0l9dVz&#f*UP}Zi`yImeKW{u%4j4of*SQHaE$pGQ8$8W@d~O&K=<_k zzIjYQXrwE1402;Q1)^S63~iHAFI_qeLl_QMkkbf@LHUn3$r>2Ogyenz$MNzXnI5H) z_^(napHK2X0t8O+@1Xo&_x2AEC%@Y>^T@F)bTt#OZYhY1+`Vq?vpKv#h^;t>QBLBd4Vq{lYauD!8`KQ1vbYL~NQZ=>u?+=8EO2k6D0*o+6=X5?d)BTq7LYEct{cdZ z@5A(KN!K>BYtA!o1g2x^%p^JF4q=LjxD?7aQZTV^w>sPUbxn3FvdLvAKzj#kP)&-XNW4XQ7%h;owIjv48(TUF{0+G$_>$N|Y%}_e@g#_j4CxN@r@R(cqiDO*=P0$J*UQktHisp?u8?|TkQ*f4(T3XH$5AJLyf`F0~|P@08xP! z{j%Rfv!z2IbqC*#Ow|&b7w-z3>v%D%YP59$2kE0S17e||W2*M9azFQw^>z3hh7-nN zT?|_AimP``277A6N_387%L9(S3hmhrGylUDrv!Zg1MVT$0r?~|Gue0MgCMX=3nt6< zGxKmutzAax9)5d{OfcmB&u1TWvIu+<@bVAkCmPcUBO-(L%zQZH(3sGW7iM+fnfp5O zY(ds{=-7pa3zE1dR`&TBeOs_7 zE1Q`?5d_98ps7A!Y}m|T>$I*26XYLS6wa_2{!ca8@;^kaMIcdSw_iijQ_7RmkAebM zZ?116|H{@0utHgM3LkN{JE)a_Tck2a<)DE)-gUry#BCXgNs+#Rasct#LBT2%Akbu= zCQEZTC~m^wMazwt+<(#BM0ti`$w3vwM&73_=!+)!Bz%ngibh6DWpW>fP>`faB-lZ1 z0zcEz9N_673DjzkLLKb``oxZyH{`o@D0%>ts#$!70E9(Ojp@){-BWZ9Z)(6W^B;Nc zCCM%(^UxemkuS+|A?)uuT_nhYSfO5^^cXTy;r4_hDUNT>pwZh>aE5rHv~^?vtP$ln zm|81>G5}62L+FS9VfUeqc9BgBBy>>t4pn5j2O<;f3Rv_^WH78K1O^~Ja*umWJ?U%Thn1lKe{B&7*NroqLpy(sWBx@CXlubEa9mC zn;M)fI!xVOM9GeB1L=!aMF^&~Ql93T6n6mHyNs$rQ1=ViK)QCDP)WfzJk_+`epjkk z;K!7dE<-qZ)+YS!K|nhQ34%VHx(Ct%*g!6Qtt4xW4p)7W=6Jy&LX$w=^Z5k>3lvQN zL%I<;rl66BD4;RGqyS?Je*_0;hbU9zg_x7{YB_#B%<=HF2IQl0nX1(~B!B5#m$VN^ zA{%#LQ3ZVJg#;_9kMus|U?b)szD7wR3FM$%fpiTs#0BXvscD*# zTIBTHgDxaZ5u_c|i{V+6?!hWh)W#!Cg-5X2?{dcxd%_HKa1zC=)fM42;%1V02&2%6 z=3(bTbha0wP*)GuqW_DSndvmemA6U?Z-(4E%2MQY^KDa44+(5wt&p zA~(iE&c=!Vw?r>JvV;`>g1;l5*@{0p7@7aCnJa8F*a3~$CO*g^ZTJZPf|hlR7XIJ7 zsXy{}mh0iapyA-K5A;X=ZX3qi)da+KX%n=x?c&W28!{_cNBaH zwc=YqvD}#JB4i*JRTY(22a;6gS(kap0W2sXZzQSVc0*Q7)q=N@fJx}3XPpcjDG>DAjjSc|xw6M1E|6utBhSw7fVlg;8J>u}e!b7$5~d5V6EV$m(hV6F8a` zrULbEipIB>VCW(HFYA&VXx#->cqakk@%CRB8OtN}f6K+B{?8;(f8rQ}_TMuFfa={A zE-{!);75x{NF^kUx^9N`f55DyPGex{JZl{wOcO7GVn;nP%a zTRJlAn^G4s%4v}*3rKl}F3jtq9}DSNfUQN!3^PU~9D)Tapd6qg;=se%XZcI%*-xgQ zPcaT8e*O_{n(29AwT+2+flfI82=%HC$A6d0)g=G_#KSv*2GRM)u{!$r+x!uvF)}8T zPIFvSv_dKCP*D+JP-JklA!Y;TORMu(tOeisyC`#5-?IkP}&fXXV*I8bIy)gX+dc3^`%bgBj*3}Dx zTbf-N!x2OkqGr#sR9X<9xm)Yn_DwCx6<&;)`W}|OqTa?LEfS2Tuy3LOEFyswH*dx& zhKcbV1=Rqos(aMLp!uoAf;VX1>;=oj1aBcyR1;uXtA@tV#_%ADA;Ray_pbN~?(+L%M;V(4E{Z_!Pd5*0`> zACVA4!&-3v=6M_*Uk{u-2ZRa+F~O=LY>Ybh+6hK2mbv9V(Q!ai1;;u8wJ}m;>nI@I zUV7+8vm$w)b5aG zH-vj^ml3BS%!y?p$$=hwdX?eiBuiJ!6ClP5S)K*s%oE!F_&Aspms*WF&_fM`IXICB zSoOLYhDULmSjrhE$_IwYm4R+>8iZ|Gez}g*+#p-$!ImktdSk>0DcK z9faS2OLI#&1P|GE&)aUG#F%%0Bhu`5VA;d$KmyHS;3p_k7Ky#3x>DASf$Gn~MS?sf z>Vmju+t3Hj5{WuX6DVcP07Rlvd<$$8M|a!|7MK8F)KV(J2SE@G9CjIleQ7)sV8oaT zG&&6jE_E8)1cgy?L)rmZeGtP?`EN+oyfmtjF}4s`)|@4==HbOMG~eyg!U7@ps?eIA z&7fNJ`wX($>2O#5ehvJ#kDbLcFg4oTtfP{=D1CRI%BnaJg-#I+G346lz4l?i~ov7y)|CARUUq1>3M{ zY}4f)%9i1_`_^LrUZ>cp;og1i&%f4M@nJbeEvRg(Olb0NIw z{&#%-4{Q}uo09dPc>#%p&B2R!|@o z57R(iG`-|>zc`7+&c8C-3FiF-(4BDp^A)@{bNKylrR4kv=$q=_anHZ1SX45VOiq*i z!_<@@KV9!o!?{4BgW`5TuTN}_z+fC@^8}%G(H%I5{>2cy6psI{Aob=Ay(tKz==$Ki z+rnZ4E0#FV!1Z{48_XXHtlFAAq(*_Ud0lkmG~?$k+;5Wmq8A@AUWoF|mzWG>D;$=t zLLL07S`lbO!S%z57GP>n(U_aU=Q{{f={oH&{*htVLn%lYD_A@)S%?&6)(a89FarvU z(Y%W*cemcUdFG@GfPhlPK57*QDHTXaLCmU_xY1{qFYA>W(~F@f$moGh1{8{bqdp?v z@Wnj@TfBB?46;T*&f8q^0lcmn28?lH_^TO%iBL?$zT;j}57I~w0hoQ~zL|M=G0*>I z8*?aII22oZ^>{dJj3bODQ$5^c3?AeEO@GhBo2hV{enM;_^nOBW;PL!FpU+oD>c3P9 zxg`H{jO}~jCgA_U3!#|Wg&N~fl_=;)PI!*JzD7+F?NR z&JK(WuDNH43C-tsd%b;sHJimdw_H@+eMIWp?bnuCUN)e)EPMitBBRO&W`lPcfa@S! z0zv#5Fokh=#iK=B?Xmcs`J{oO8ROdfh^fS{j-fG)7Mc0T+>bCR4k7Qqus6vb92GQ& z&_?1QkQ_bLCM;%1wuVg%@ekrsK%%*L3Iv$=02~&BKw>CZVC5p&Y)ohbw7h#u7=64u z68vZ)F|^NO7zx#&H4EK=4hqMv2b+&IXvM8IvL2s&9B7w_NZ7Nnbtn^Z{gEb^LfrBEtlbHOB@^@8x^kG$ zfO!Tvf0Dtt(9RndY)LQUK%-z9fVEK2CW#G9z18LIYxO-Gaa&LMta`5b$HKPx6t!B zrf)kib?$BlM^`|E*$#(l;5kR;3O!67wA~g=vWEnMxBO`BI-c8@pY?29xgI;z%V9ne z9%n8;tD_#xqvwm}lh5R&=?6K^Bo%zj>>^1( zpXkpz6?Rn77OY@fh6(l#xZlU?o?Uc)|7pmq2^fevJxIK1rVhx_xyH;{Q5yNa3~h|4 zTyWyK!7ky6nK|LO&^tQ&hP?idxX|~_n2@|PmmwQ6mxf2+s~Uf7R_9M9g}$v2G5RXlSq&@Ji}8&enHwO&<`Ms zN8#yLEjKt}X-b5f>hw^+@SaKlFQQAG9#7mk=;Dqqo?%icZ&I-0H)FDfG^HkLaBRNc z@esZ!)z$`l2c%v|KEBcj`D_r0tCY$|E@( zbqM^(G3fZ{)DLj!;M*X{{SZ+MFAaELqb0`s4)zFQ7UCt{Y`N`*pJuam3-2Kg2GO&` z$5J@Lt{ItCbQj|wjsO+m4THJxi@_ZaV8TdXP%`tk179223e*Q-QgN{)IcqpAJUtW; z;40`hKPtKw4GKLYn!!c3T|KQCEu*dE;GvS%u;6tTrdX-Fn%W%*zF;X|~3j{ivJ3~+uFQzh|)he?3s4xP+brRfsIndPey`&0~I*+UFd zTgZ9dykYT#R$xbqub{G(BQn z!Ox>h6NYooYS^n{yWmMuwg}FPltwFv#^XW4UW4g`oJmF}&4L&ozA@5H1v(8z7;{oB zZxMAfYo9|^hzHLgN6yUR57Q_tqlX3|!a0!rvh(sbCTzR?4Jw8_!ES4&nyOuwO-@+V ztTrdE?MHyTmqnR!`~GBLz-vQi7iE3vV&t?nOs=E1pWIgtfZM>G=NXO-&<52mlfjh3 z#2A;k(rM&8OS;~W(3K#J@Q`W0BLy#`vQLmu1Hu>ZTD}aV1?uHV@)wCc(#aKDI&km46|nE5NXe!Iw^rw~VeSOaxMMG!+` z3Y`w<^`hj7UVq$HqvsG)d7-`5y*c!PFrUt*7pQ>`%2&B@%5e`b6GAn5hZ?@YK${~Y z2-M9SK0}i{ehK58rI1?f*7G)|TKLfI&vGt#{hhrK0tUIXzH^i8a&FH*@bP}^56rB6 zP(Ro~R@j_nE!I%Ln}CzL_#7N~*#{4@53=Md&$SNuGr@qo zXxyM5ewc{^gmLk7b+vAXB!=v|;?20k7dBfZ155}5F^f$U?ml53;PLif)CM1||6MK? zlKMXr+Tvq}nS}ojuLgtp4&h%gv_(YpQe}S(c=HIRtt|)%H%Wh9w0a()L$XHH;fLSG z$Qp^9g9BM3;Slkxk=Vo2WsS)Bx24H8u5NCjUfr?ua+V)?{^fm+`~Y9S{t5r$YjN2B zUw~IAssD8rWS_E6J)a2UQ=;tKs=1v1J2&6n*uHZ8`u6&jTX&>fKKg-4wwfYL0pT3x6Kw|G8?e{7QL> zFoi=W``^oQ|FiB>DfJs7W^y06!N;BdVr69i3(N^k&i~~0;HZ(b*lpVnb0nlx3zH=* zJ!F_&vKF$5fJ~r6Ux&wl;d+Q}AP==ERC5>bUOxD!sF5Pwh*25l8r(t%9JcS>+=GP) zDM;|XtZOu2^s*hTSb>-aTT7XllwK1fSYVhw0)I}&H}mi?N1<{klN7y>mS!vKf!af5 zhzsW8(tXc)$Pb@Ol${|$kd3{zv9UMVjld#O+d8?qevzJ&~sJLZJNY8_Kli?w{Y z;WX$9nF-PT^J;a9{C8aMV ziuDL;KNJt-{Nv4;{uH6*`9HP&CtpeIKU3V3VCZoFvs1hNiNEJK`%j@b!vFK7d^x%Q z1)DU*zdW1c{4@Dt3F>yU(x@)yYgKopnyVD@xdL>=(sHp>%GH_;r{Ls@Hh&UU8uPj; zh4}bMo2SQ1;$^c^!j&nH_sW<{oZ7z76|cER_8H34EFg|C@k&i`&*MW!=N~0jrX&Qo z$*1K1`ARvl|Ht=fTAv5^UtfVU>AB9Z|AlHPpUD47Z^R+v9k&13M*fhNXMe=~KVJTi zEd$t$<&^!O_&;Qe3@67$&H@^4J{KX&t zuJ8Zi@~{2k^56eT`I~>+{TqMmH(&pqzxnew{@%0SmAhX0FB5@38RW$?pkzVS=gKV;41{Oij+rUvZbnM#FV<==e#+F$)Gc1-?#XfYt? ze|o9Ef|rxdf37g{{^uOZ*d+S@IZzd(_9|XH(DXI+FPo&@oCDHdqABG3PcQX1JpZSR z|H>uy-}51oaQ`Qr^ce&HME-x6{Rgp#iTx*r#3_AD>_1aN?1yC7==|5Zd5b>$Y|#TK?%Q^r%!QUXsr|D*5!E)`M# zFFF6yr;up>_rVHUPp2{CS?+&@T%!L^V=sos9NzzI6YpT?cirK3FY^5i`(Lai?|*p_ zl#ku_sQu6S{fQNWJH!5$O2tBA{~3E1&))F3{m(X9-LsDz^*qD=m+@}7Wd9=+PVLi4 z`=52%JKhV<&iy~G{_7$2A1e7`a{qflw2#$2vHy&Prf=IuN1gwS-)~OpI&g;bU&aey zll$K}P+fBV&jHCV@f6Yd?>WX_pb?q zR3ES6W0DGFa%BIrAcan^)jJqzdgccw^8eBIe|NIR;rnPXFBfR(*cyUK35Eko`1-LjII7TAxKU<|K;3B{8zP_)PI{0`i~t3yKRD6 vuZ5*@ZYj4^EmW6wYRzh+o?mV@OPL+d+exl}$6_)0F~LBBfdm5|J`DUntf=X2 literal 0 HcmV?d00001 diff --git a/gix-ref/tests/fixtures/make_pref_repository.sh b/gix-ref/tests/fixtures/make_pref_repository.sh new file mode 100755 index 00000000000..df3faa2eb82 --- /dev/null +++ b/gix-ref/tests/fixtures/make_pref_repository.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +git init -q + +git checkout -q -b main +git commit -q --allow-empty -m c1 +git branch dt1 +git branch d1 +git branch A + +mkdir -p .git/refs/remotes/origin +mkdir -p .git/refs/prefix/feature/sub/dir + +cp .git/refs/heads/main .git/refs/remotes/origin/ +cp .git/refs/heads/main .git/refs/d1 +cp .git/refs/heads/main .git/refs/prefix/feature-suffix +cp .git/refs/heads/main .git/refs/prefix/feature/sub/dir/algo + +echo "ref: refs/remotes/origin/main" > .git/refs/remotes/origin/HEAD +echo "notahexsha" > .git/refs/broken + +git rev-parse HEAD > .git/JIRI_HEAD +touch .git/SOME_ALL_CAPS_FILE +touch .git/refs/SHOULD_BE_EXCLUDED_HEAD + +cat <> .git/FETCH_HEAD +9064ea31fae4dc59a56bdd3a06c0ddc990ee689e branch 'main' of https://github.com/Byron/gitoxide +1b8d9e6a408e480ae1912e919c37a26e5c46639d not-for-merge branch 'faster-discovery' of https://github.com/Byron/gitoxide +43f695a9607f1f85f859f2ef944b785b5b6dd238 not-for-merge branch 'fix-823' of https://github.com/Byron/gitoxide +96267708958ead2646aae8766a50fa060739003c not-for-merge branch 'fix-bare-with-index' of https://github.com/Byron/gitoxide +1397e19375bb98522f951b8a452b08c1b35ffbac not-for-merge branch 'gix-archive' of https://github.com/Byron/gitoxide +db71ec8b7c7f2730c47dde3bb662ab56ae89ae7d not-for-merge branch 'index-from-files' of https://github.com/Byron/gitoxide +9f0c71917e57653d2e7121eae65d9385a188a8df not-for-merge branch 'moonwalk' of https://github.com/Byron/gitoxide +44d2b67de5639d4ea3d08ab030ecfe4bdfc8cbfb not-for-merge branch 'release-gix' of https://github.com/Byron/gitoxide +37c3d073b15dafcb52b2040e4b92a413c69a726d not-for-merge branch 'smart-release-without-git2' of https://github.com/Byron/gitoxide +af3608ad397784795c3758a1ac99ec6a367de9be not-for-merge branch 'walk-with-commitgraph' of https://github.com/Byron/gitoxide +EOF + +git tag t1 +git tag -m "tag object" dt1 diff --git a/gix-ref/tests/refs/main.rs b/gix-ref/tests/refs/main.rs index ddd06716f88..05123b5fdf5 100644 --- a/gix-ref/tests/refs/main.rs +++ b/gix-ref/tests/refs/main.rs @@ -39,6 +39,7 @@ mod partialname { } mod namespace; mod packed; +mod pseudo_refs; mod reference; mod store; mod transaction; diff --git a/gix-ref/tests/refs/pseudo_refs.rs b/gix-ref/tests/refs/pseudo_refs.rs new file mode 100644 index 00000000000..097ca217e85 --- /dev/null +++ b/gix-ref/tests/refs/pseudo_refs.rs @@ -0,0 +1,21 @@ +use crate::file::store_at; + +#[test] +fn pseudo_refs_iterate_valid_pseudorefs() -> crate::Result { + let store = store_at("make_pref_repository.sh")?; + + let prefs = store + .iter_pseudo_refs()? + .map(Result::unwrap) + .map(|r: gix_ref::Reference| r.name) + .collect::>(); + + let expected_prefs = vec!["FETCH_HEAD", "HEAD", "JIRI_HEAD"]; + + assert_eq!( + prefs.iter().map(gix_ref::FullName::as_bstr).collect::>(), + expected_prefs + ); + + Ok(()) +} From 2affbab7491d6b4667572d4d17db864c5b703c7a Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 11 Jul 2025 06:54:02 +0200 Subject: [PATCH 042/296] feat: add `repo.references().pseudo()` for traversing refs like `HEAD` and `FETCH_HEAD`. --- gix/src/reference/iter.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gix/src/reference/iter.rs b/gix/src/reference/iter.rs index a18ecbeda91..62fcbe8d02e 100644 --- a/gix/src/reference/iter.rs +++ b/gix/src/reference/iter.rs @@ -32,7 +32,8 @@ impl<'r> Iter<'r> { } impl Platform<'_> { - /// Return an iterator over all references in the repository. + /// Return an iterator over all references in the repository, excluding + /// pseudo references. /// /// Even broken or otherwise unparsable or inaccessible references are returned and have to be handled by the caller on a /// case by case basis. @@ -69,6 +70,12 @@ impl Platform<'_> { )) } + // TODO: tests + /// Return an iterator over all local pseudo references. + pub fn pseudo_refs(&self) -> Result, init::Error> { + Ok(Iter::new(self.repo, self.platform.psuedo_refs()?)) + } + // TODO: tests /// Return an iterator over all remote branches. /// From 43f92b5285af6696cd21f0e94f3bec568aef8468 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 11 Jul 2025 06:56:24 +0200 Subject: [PATCH 043/296] refactor - fix typo - move and simplify test; minimize its fixture - adjust docs --- gix-features/src/fs.rs | 9 +- gix-ref/src/lib.rs | 2 +- gix-ref/src/store/file/loose/iter.rs | 3 +- gix-ref/src/store/file/overlay_iter.rs | 110 ++++++++---------- ...ory.tar => make_pseudo_ref_repository.tar} | Bin 81920 -> 58880 bytes .../tests/fixtures/make_pref_repository.sh | 41 ------- .../fixtures/make_pseudo_ref_repository.sh | 14 +++ gix-ref/tests/refs/file/store/iter.rs | 17 ++- gix-ref/tests/refs/main.rs | 1 - gix-ref/tests/refs/pseudo_refs.rs | 21 ---- gix/src/reference/iter.rs | 4 +- 11 files changed, 88 insertions(+), 134 deletions(-) rename gix-ref/tests/fixtures/generated-archives/{make_pref_repository.tar => make_pseudo_ref_repository.tar} (57%) delete mode 100755 gix-ref/tests/fixtures/make_pref_repository.sh create mode 100755 gix-ref/tests/fixtures/make_pseudo_ref_repository.sh delete mode 100644 gix-ref/tests/refs/pseudo_refs.rs diff --git a/gix-features/src/fs.rs b/gix-features/src/fs.rs index a1769cd0b21..164d6913483 100644 --- a/gix-features/src/fs.rs +++ b/gix-features/src/fs.rs @@ -208,9 +208,12 @@ pub mod walkdir { /// /// Use `precompose_unicode` to represent the `core.precomposeUnicode` configuration option. /// Use `max_depth` to limit the depth of the recursive walk. - /// * 0 -> Returns only the root path with no children - /// * 1 -> Root directory and children. - /// * 2..n -> Root directory, children and {n}-grandchildren + /// * `0` + /// - Returns only the root path with no children + /// * `1` + /// - Root directory and children. + /// * `1..n` + /// - Root directory, children and {n}-grandchildren pub fn walkdir_sorted_new(root: &Path, _: Parallelism, max_depth: usize, precompose_unicode: bool) -> WalkDir { WalkDir { inner: WalkDirImpl::new(root) diff --git a/gix-ref/src/lib.rs b/gix-ref/src/lib.rs index a564d0f6488..1d9eded44cc 100644 --- a/gix-ref/src/lib.rs +++ b/gix-ref/src/lib.rs @@ -166,7 +166,7 @@ pub enum Category<'a> { RemoteBranch, /// A tag in `refs/notes` Note, - /// Something outside of `ref/` in the current worktree, typically `HEAD`. + /// Something outside `ref/` in the current worktree, typically `HEAD`. PseudoRef, /// A `PseudoRef`, but referenced so that it will always refer to the main worktree by /// prefixing it with `main-worktree/`. diff --git a/gix-ref/src/store/file/loose/iter.rs b/gix-ref/src/store/file/loose/iter.rs index a44ff92b7b8..c0c7b7f3a8b 100644 --- a/gix-ref/src/store/file/loose/iter.rs +++ b/gix-ref/src/store/file/loose/iter.rs @@ -22,10 +22,9 @@ impl SortedLoosePaths { base: PathBuf, prefix: Option, suffix: Option, - root_only: bool, precompose_unicode: bool, ) -> Self { - let depth = if root_only { 1 } else { usize::MAX }; + let depth = if suffix.is_some() { 1 } else { usize::MAX }; SortedLoosePaths { base, prefix, diff --git a/gix-ref/src/store/file/overlay_iter.rs b/gix-ref/src/store/file/overlay_iter.rs index 6850fba2137..8c4b2c36809 100644 --- a/gix-ref/src/store/file/overlay_iter.rs +++ b/gix-ref/src/store/file/overlay_iter.rs @@ -1,3 +1,5 @@ +use gix_object::bstr::ByteSlice; +use gix_path::RelativePath; use std::{ borrow::Cow, cmp::Ordering, @@ -6,9 +8,6 @@ use std::{ path::{Path, PathBuf}, }; -use gix_object::bstr::ByteSlice; -use gix_path::RelativePath; - use crate::{ file::loose::{self, iter::SortedLoosePaths}, store_impl::{file, packed}, @@ -85,46 +84,34 @@ impl<'p> LooseThenPacked<'p, '_> { } fn convert_loose(&mut self, res: std::io::Result<(PathBuf, FullName)>) -> Result { - convert_loose(&mut self.buf, self.git_dir, self.common_dir, self.namespace, res) - } -} - -pub(crate) fn convert_loose( - buf: &mut Vec, - git_dir: &Path, - common_dir: Option<&Path>, - namespace: Option<&Namespace>, - res: std::io::Result<(PathBuf, FullName)>, -) -> Result { - let (refpath, name) = res.map_err(Error::Traversal)?; - std::fs::File::open(&refpath) - .and_then(|mut f| { - buf.clear(); - f.read_to_end(buf) - }) - .map_err(|err| Error::ReadFileContents { - source: err, - path: refpath.to_owned(), - })?; - loose::Reference::try_from_path(name, buf) - .map_err(|err| { - let relative_path = refpath - .strip_prefix(git_dir) - .ok() - .or_else(|| common_dir.and_then(|common_dir| refpath.strip_prefix(common_dir).ok())) - .expect("one of our bases contains the path"); - Error::ReferenceCreation { + let buf = &mut self.buf; + let git_dir = self.git_dir; + let common_dir = self.common_dir; + let (refpath, name) = res.map_err(Error::Traversal)?; + std::fs::File::open(&refpath) + .and_then(|mut f| { + buf.clear(); + f.read_to_end(buf) + }) + .map_err(|err| Error::ReadFileContents { source: err, - relative_path: relative_path.into(), - } - }) - .map(Into::into) - .map(|mut r: Reference| { - if let Some(namespace) = namespace { - r.strip_namespace(namespace); - } - r - }) + path: refpath.to_owned(), + })?; + loose::Reference::try_from_path(name, buf) + .map_err(|err| { + let relative_path = refpath + .strip_prefix(git_dir) + .ok() + .or_else(|| common_dir.and_then(|common_dir| refpath.strip_prefix(common_dir).ok())) + .expect("one of our bases contains the path"); + Error::ReferenceCreation { + source: err, + relative_path: relative_path.into(), + } + }) + .map(Into::into) + .map(|r| self.strip_namespace(r)) + } } impl Iterator for LooseThenPacked<'_, '_> { @@ -203,9 +190,9 @@ impl Iterator for LooseThenPacked<'_, '_> { } impl Platform<'_> { - /// Return an iterator over all references, loose or `packed`, sorted by their name. + /// Return an iterator over all references, loose or packed, sorted by their name. /// - /// Errors are returned similarly to what would happen when loose and packed refs where iterated by themselves. + /// Errors are returned similarly to what would happen when loose and packed refs were iterated by themselves. pub fn all(&self) -> std::io::Result> { self.store.iter_packed(self.packed.as_ref().map(|b| &***b)) } @@ -223,16 +210,17 @@ impl Platform<'_> { .iter_prefixed_packed(prefix, self.packed.as_ref().map(|b| &***b)) } - /// Return an iterator over the pseudo references - pub fn psuedo_refs(&self) -> std::io::Result> { - self.store.iter_pseudo_refs() + /// Return an iterator over the pseudo references, like `HEAD` or `FETCH_HEAD`, or anything else suffixed with `HEAD` + /// in the root of the `.git` directory, sorted by name. + pub fn pseudo(&self) -> std::io::Result> { + self.store.iter_pseudo() } } impl file::Store { /// Return a platform to obtain iterator over all references, or prefixed ones, loose or packed, sorted by their name. /// - /// Errors are returned similarly to what would happen when loose and packed refs where iterated by themselves. + /// Errors are returned similarly to what would happen when loose and packed refs were iterated by themselves. /// /// Note that since packed-refs are storing refs as precomposed unicode if [`Self::precompose_unicode`] is true, for consistency /// we also return loose references as precomposed unicode. @@ -271,7 +259,7 @@ pub(crate) enum IterInfo<'a> { /// If `true`, we will convert decomposed into precomposed unicode. precompose_unicode: bool, }, - PseudoRefs { + Pseudo { base: &'a Path, precompose_unicode: bool, }, @@ -284,7 +272,7 @@ impl<'a> IterInfo<'a> { IterInfo::PrefixAndBase { prefix, .. } => Some(gix_path::into_bstr(*prefix)), IterInfo::BaseAndIterRoot { prefix, .. } => Some(gix_path::into_bstr(prefix.clone())), IterInfo::ComputedIterationRoot { prefix, .. } => Some(prefix.clone()), - IterInfo::PseudoRefs { .. } => None, + IterInfo::Pseudo { .. } => None, } } @@ -293,18 +281,18 @@ impl<'a> IterInfo<'a> { IterInfo::Base { base, precompose_unicode, - } => SortedLoosePaths::at(&base.join("refs"), base.into(), None, None, false, precompose_unicode), + } => SortedLoosePaths::at(&base.join("refs"), base.into(), None, None, precompose_unicode), IterInfo::BaseAndIterRoot { base, iter_root, prefix: _, precompose_unicode, - } => SortedLoosePaths::at(&iter_root, base.into(), None, None, false, precompose_unicode), + } => SortedLoosePaths::at(&iter_root, base.into(), None, None, precompose_unicode), IterInfo::PrefixAndBase { base, prefix, precompose_unicode, - } => SortedLoosePaths::at(&base.join(prefix), base.into(), None, None, false, precompose_unicode), + } => SortedLoosePaths::at(&base.join(prefix), base.into(), None, None, precompose_unicode), IterInfo::ComputedIterationRoot { iter_root, base, @@ -315,13 +303,12 @@ impl<'a> IterInfo<'a> { base.into(), Some(prefix.into_owned()), None, - false, precompose_unicode, ), - IterInfo::PseudoRefs { + IterInfo::Pseudo { base, precompose_unicode, - } => SortedLoosePaths::at(base, base.into(), None, Some("HEAD".into()), true, precompose_unicode), + } => SortedLoosePaths::at(base, base.into(), None, Some("HEAD".into()), precompose_unicode), } .peekable() } @@ -354,7 +341,7 @@ impl<'a> IterInfo<'a> { impl file::Store { /// Return an iterator over all references, loose or `packed`, sorted by their name. /// - /// Errors are returned similarly to what would happen when loose and packed refs where iterated by themselves. + /// Errors are returned similarly to what would happen when loose and packed refs were iterated by themselves. pub fn iter_packed<'s, 'p>( &'s self, packed: Option<&'p packed::Buffer>, @@ -387,12 +374,13 @@ impl file::Store { } } - /// Return an iterator over all pseudo references, loose or `packed`, sorted by their name. + /// Return an iterator over the pseudo references, like `HEAD` or `FETCH_HEAD`, or anything else suffixed with `HEAD` + /// in the root of the `.git` directory, sorted by name. /// - /// Errors are returned similarly to what would happen when loose and packed refs where iterated by themselves. - pub fn iter_pseudo_refs<'p>(&'_ self) -> std::io::Result> { + /// Errors are returned similarly to what would happen when loose refs were iterated by themselves. + pub fn iter_pseudo<'p>(&'_ self) -> std::io::Result> { self.iter_from_info( - IterInfo::PseudoRefs { + IterInfo::Pseudo { base: self.git_dir(), precompose_unicode: self.precompose_unicode, }, diff --git a/gix-ref/tests/fixtures/generated-archives/make_pref_repository.tar b/gix-ref/tests/fixtures/generated-archives/make_pseudo_ref_repository.tar similarity index 57% rename from gix-ref/tests/fixtures/generated-archives/make_pref_repository.tar rename to gix-ref/tests/fixtures/generated-archives/make_pseudo_ref_repository.tar index e8942611672e0792c012edba1bf008c46dc0f280..68efa91bb9c1692a30f40a20e40e8d9e9491ffb4 100644 GIT binary patch delta 971 zcmZo@U~M?Vyn&TvG3yMb$*c?NqzsIWj2R3KOw0@oj0}v74Hygz3=NIVOc)F%C$gt( zW?XoQadXu&UB*dM+Qd!K6&eARLKIGBWc<&PnU`6z+0ke}<3t79P0v_aHnYBCWm?W9 z#t0-d7@0P6{a|C-F2Kh4fl(tZF)hV1#lRxb!q_s!(lRB<%pl3g$S66*)FRa=)gTEd zZ|CJO3-4LBu-nPkjO4dH3) zG%I8MAp-#y+vnQf^iG)NZI{+~v|i<<81pd?kAvsU7hGvBt~`7oIq9UOsl<<(j8IXH z4%z7^Qj!yR&nYkN6A6pF5joLx#Uy8=y6o*i54(RJUcIlT?%r1s?|lu*X^M_5%HL+# zeOtdwv@ZAF>-pBc&39ub%dMPgKCj!1hXD#UTRx~}+;oMHWi#Ko@2rzqAJsD%8E$U- zP{lauNsJC>W_n(JQEGBxajJr?LP=3+Di>z~ke{DhkYAiynwOcJp8}Hsrql|?Wk!rF z{D!9Hrk17#CPpT@KqVEM72n(k<_Mu_7L2VDCK&0%#M~SjAln%&8F?8+j4ky{6*L?R e3UX2v+%rpb4NXln!P#K5!J7+=U}ACsdp!UT`!cft delta 5558 zcmcIoYmgjO6;AKYY_gr_giW$65U-P!orTOyzq@BOz>=MWNJwOzRDxP8x4Uo8w3(eA zx_h#_LYRaK55b~pGg`_oBLRK|jXP>tp#(&Qg5q6389|_=P)fx|m0~~z&+VR>>>~>y z;8c>$Y~TBx?>xS9&+UCrwC~#&JsOSFqw$4p^(EK5AFVCk_qA??U%+#c!gB&Ah};5> z<0VN{7jQM)Zq}LoyP_RQyJV8_`c*f7ul-=};$SvaRh zk~nELmcsK=6D!-tY=j*q_6fqMjD4ek61Zfh9k=n#Bd$%nexwu2aS6K)QCoH?k8B_9 zu`vqF)~>zbl4S^&%dS&)Z2)7})qcLMySMC;J*4C#zd*u;2|%)3XB6Nl24MNMwNZI4;gqbRZTKFtOAr%}z%NYfPM|Tz-3?nv z3JqF5aRHA88@SqFBjHsHgLs}*0e&tjIetIb3@jG0=Qn~0zoCdUqU(ca4a_PHY~UL( zH%XEB#0>q<0cFc67M(E~FUrl%gIx%+UL;=AS&u*z9Eb@n<;e^;T{7y>+?GtR(D>pK zN(=&rU4kke1gQ#}X}~6ey+JGi9OtoJ^8A4y5hzG}knL2%Z!#Q$CmJyw0MG5bUFru@ z^DiF;>nC?ymK_}GXR9>T!=zlqMo2%meP}xhz80LKNn9^T&-4ll3jjzOhT{eW2|i3X z6`Ge4A*PpN*(T2s!`VaJ5eO^f4JG=~b!?|)7s-ZrFCS++*P$x4H_&20OW{Q&jMYtLiYv|;R8U*k>ls%MbQbh4y zN;;0NzaBE_SKJb%etOJ7yI|Dz!aAh;LSF(e%D4);PnCDSVENg=Z2q-h&yLn4B zH}b{owxR45gIl(aY}&FlJF;>6j%~T@a2#zwJPUmTVjZeyLvMm+q@l!Qve{3<(g%Wh z&|<5d&5}w#I{$nMWX(dUwqU3pJ_G~=6yh`+5`c~F_Q_}&Hu|Gw({@qPJjo$A6KG3K z?Fv8PZt6u7p^C6+qND|XlR*Y(5ypF)kK-r~oV|1y0WaMf{)hgw;(<#uLgI!(PGXSB z+(_(fw9)DKRhASz!ge+d&I->wF>NCCvzARo0jefO!9nqs(U$82h`6rf4j>B-NoaV` zE8uJ@(*{UwR%u_4ql?ZL0Ad^h!&5m|O0=(T-jW*`+ALuSu~G;1<|8zCM=>>OA1>=@PriM{9`*?k7jhMUm52{#N z(sQ2Yw&w=7HfhYrSEaNY9R09#(aQB*TtSw}j*$V{S(ry|j|!_l91)S?|X^a#8v%-+e1DhyTO zFtzYGW|JgZN=C*Rg;Oow(q#CPu>@jeBuQ5_S(kOiGzC%Xgi}2UoisU0+&t-|g9FSB zeU?3*)C941WKrL6MiCTM<+O~f5o`*Iq+m=mRZ+0aS(pP0Vus^H;{%{{D9R)~fx;P& z!hW6?Gb-UTqAKfpMw11>%E-K~VM!KrPBVC2lr2lg^TFnUA$E;|y@yb^?WV5s#L#rr zP%S|fIYUxSlZd*mC<4}H1t@1QQO$W+2D4|9j&VtPAbAvXbH?HfmCx`hkyS+&O@XMq zz!OXq+02NVjCoDNnrY30IqEp2F0B@hb(nEOt;~Tj@o`6Bvz;& zS(IaH<@T$l?qxe_?2oQrGv`LYOT64H;vXiM1TRVuWlJ$tjn`F@Q8`6`3j`35G!d== zx@BSkb7Jkvsca~g0yA}FRiw@2Cu3K@b)i-`x^|5+TPva z8&3Z96%XZ^gGW~}gOjms^V{Wx)+ObWwcBp`;PKY^ElcA6$MVf{lPD^R__34t@Y1$6 zUW9hGBk*Z89}$!Va@gK}v4rX8#q{Zw#$+rNAUv{mZnst7*4SkFXq2h8@k@p_{Odw@ zO>gpek-h!Ig`>*tH{LUR!HIWPfAgQOedQJIZ{7FZ^YXy>+qb;(#J;Hm_KtfG-I;v! zz&DgDUoqe49{NdfQ|z&O@(;e)F|z(sSO582kH22(yYG!9li#^161zkD-6Prq$K(?~ zCO@eD<#Yc&djGbcUDwWSmHxP(^{IdM-0PUBr=lJ8=;NIc#%Ou}l+eyMoquvElQ7bv zCBe;1%7~__6J3%yULcaHaRRS{Tx2056B&yi?S3E$^}r* zoTAbMUTHKodako@=Hdbw_X@ayqfT|NpnN7{!vRJQ7Zuco1BaQHn7-3&ge_V&qW{lbPyb+d5!!hncHYMBj%3;HI-*8ZJm%aOzat+NXOrP9iqI4?LAx z4FWt}Ib$tJdlh{$c3E>Vymk|&#c%c8#c8;0O~!_r8)P_hr)@ar)Em;cn0F>)7YDl_ zrV3Br@_|F<8OC(gOgl-hVnKu^W7(z!8ODV(w=lJuZCm8yyq6Bn&X(>(ahg&Sl5u*i zwk5pP%i7aEe^Pqt$DnxEuOrI^RTEShI=Y&yl .git/refs/remotes/origin/HEAD -echo "notahexsha" > .git/refs/broken - -git rev-parse HEAD > .git/JIRI_HEAD -touch .git/SOME_ALL_CAPS_FILE -touch .git/refs/SHOULD_BE_EXCLUDED_HEAD - -cat <> .git/FETCH_HEAD -9064ea31fae4dc59a56bdd3a06c0ddc990ee689e branch 'main' of https://github.com/Byron/gitoxide -1b8d9e6a408e480ae1912e919c37a26e5c46639d not-for-merge branch 'faster-discovery' of https://github.com/Byron/gitoxide -43f695a9607f1f85f859f2ef944b785b5b6dd238 not-for-merge branch 'fix-823' of https://github.com/Byron/gitoxide -96267708958ead2646aae8766a50fa060739003c not-for-merge branch 'fix-bare-with-index' of https://github.com/Byron/gitoxide -1397e19375bb98522f951b8a452b08c1b35ffbac not-for-merge branch 'gix-archive' of https://github.com/Byron/gitoxide -db71ec8b7c7f2730c47dde3bb662ab56ae89ae7d not-for-merge branch 'index-from-files' of https://github.com/Byron/gitoxide -9f0c71917e57653d2e7121eae65d9385a188a8df not-for-merge branch 'moonwalk' of https://github.com/Byron/gitoxide -44d2b67de5639d4ea3d08ab030ecfe4bdfc8cbfb not-for-merge branch 'release-gix' of https://github.com/Byron/gitoxide -37c3d073b15dafcb52b2040e4b92a413c69a726d not-for-merge branch 'smart-release-without-git2' of https://github.com/Byron/gitoxide -af3608ad397784795c3758a1ac99ec6a367de9be not-for-merge branch 'walk-with-commitgraph' of https://github.com/Byron/gitoxide -EOF - -git tag t1 -git tag -m "tag object" dt1 diff --git a/gix-ref/tests/fixtures/make_pseudo_ref_repository.sh b/gix-ref/tests/fixtures/make_pseudo_ref_repository.sh new file mode 100755 index 00000000000..ef4b3476dae --- /dev/null +++ b/gix-ref/tests/fixtures/make_pseudo_ref_repository.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +git init -q +git commit -m "init" --allow-empty + +git rev-parse HEAD > .git/JIRI_HEAD +touch .git/SOME_ALL_CAPS_FILE +touch .git/refs/SHOULD_BE_EXCLUDED_HEAD + +cat <> .git/FETCH_HEAD +9064ea31fae4dc59a56bdd3a06c0ddc990ee689e branch 'main' of https://github.com/Byron/gitoxide +1b8d9e6a408e480ae1912e919c37a26e5c46639d not-for-merge branch 'faster-discovery' of https://github.com/Byron/gitoxide +EOF \ No newline at end of file diff --git a/gix-ref/tests/refs/file/store/iter.rs b/gix-ref/tests/refs/file/store/iter.rs index 68259c0b1b9..91639672e6e 100644 --- a/gix-ref/tests/refs/file/store/iter.rs +++ b/gix-ref/tests/refs/file/store/iter.rs @@ -1,9 +1,8 @@ -use gix_object::bstr::ByteSlice; - use crate::{ file::{store, store_at, store_with_packed_refs}, hex_to_id, }; +use gix_object::bstr::ByteSlice; mod with_namespace { use gix_object::bstr::{BString, ByteSlice}; @@ -257,6 +256,20 @@ fn packed_file_iter() -> crate::Result { Ok(()) } +#[test] +fn pseudo_refs_iter() -> crate::Result { + let store = store_at("make_pseudo_ref_repository.sh")?; + + let actual = store + .iter_pseudo()? + .map(Result::unwrap) + .map(|r: gix_ref::Reference| r.name.as_bstr().to_string()) + .collect::>(); + + assert_eq!(actual, ["FETCH_HEAD", "HEAD", "JIRI_HEAD"]); + Ok(()) +} + #[test] fn loose_iter_with_broken_refs() -> crate::Result { let store = store()?; diff --git a/gix-ref/tests/refs/main.rs b/gix-ref/tests/refs/main.rs index 05123b5fdf5..ddd06716f88 100644 --- a/gix-ref/tests/refs/main.rs +++ b/gix-ref/tests/refs/main.rs @@ -39,7 +39,6 @@ mod partialname { } mod namespace; mod packed; -mod pseudo_refs; mod reference; mod store; mod transaction; diff --git a/gix-ref/tests/refs/pseudo_refs.rs b/gix-ref/tests/refs/pseudo_refs.rs deleted file mode 100644 index 097ca217e85..00000000000 --- a/gix-ref/tests/refs/pseudo_refs.rs +++ /dev/null @@ -1,21 +0,0 @@ -use crate::file::store_at; - -#[test] -fn pseudo_refs_iterate_valid_pseudorefs() -> crate::Result { - let store = store_at("make_pref_repository.sh")?; - - let prefs = store - .iter_pseudo_refs()? - .map(Result::unwrap) - .map(|r: gix_ref::Reference| r.name) - .collect::>(); - - let expected_prefs = vec!["FETCH_HEAD", "HEAD", "JIRI_HEAD"]; - - assert_eq!( - prefs.iter().map(gix_ref::FullName::as_bstr).collect::>(), - expected_prefs - ); - - Ok(()) -} diff --git a/gix/src/reference/iter.rs b/gix/src/reference/iter.rs index 62fcbe8d02e..66952577b64 100644 --- a/gix/src/reference/iter.rs +++ b/gix/src/reference/iter.rs @@ -72,8 +72,8 @@ impl Platform<'_> { // TODO: tests /// Return an iterator over all local pseudo references. - pub fn pseudo_refs(&self) -> Result, init::Error> { - Ok(Iter::new(self.repo, self.platform.psuedo_refs()?)) + pub fn pseudo(&self) -> Result, init::Error> { + Ok(Iter::new(self.repo, self.platform.pseudo()?)) } // TODO: tests From e249706a52c372329814dc4437ae46288fb25055 Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Sat, 12 Jul 2025 23:00:25 -0400 Subject: [PATCH 044/296] Add `just` recipes that trigger `release.yml` This adds three recipes to the `justfile`. Two of these recipes trigger the release workflow. 1. `unique-v-tag`, which delegates to a script, looks at tags that point to `HEAD`, reports an error if none, or more than one, of them are named starting with `v`, and otherwise outputs the name of the unique `v*` tag that it found. 2. `run-release-workflow` triggers the `release.yml` workflow for a tag obtained via `unique-v-tag`. By default, it runs it on the `GitoxideLabs/gitoxide` repository. This can be adjusted by setting the `GH_REPO` environment variable, as usual for `gh`. It can also be adjusted by passing an optional argument to the recipe (which takes precedence over `GH_REPO` if set). 3. `roll-release` runs `cargo smart-release`, forwarding its arguments to it, and then runs the `release.yml` workflow via `run-release-workflow`. Because all arguments to `roll-release` are passed to `cargo smart-release`, the repository to run `release.yml` on cannot be specified as an argument to `roll-release`, but `GH_REPO` can still be used to customize it. (Also, since `roll-release` is meant to be used when actually creating releases and publishing them, it's not expected to run on forks nearly as often as the upstream.) See #1970. --- etc/unique-v-tag.sh | 17 +++++++++++++++++ justfile | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100755 etc/unique-v-tag.sh diff --git a/etc/unique-v-tag.sh b/etc/unique-v-tag.sh new file mode 100755 index 00000000000..07d258f440a --- /dev/null +++ b/etc/unique-v-tag.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +set -efu +IFS=$'\n' + +# shellcheck disable=SC2207 # Intentionally splitting. No globbing due to set -f. +tags=( + $(git tag --points-at HEAD -- 'v*') +) + +count="${#tags[@]}" +if ((count != 1)); then + printf '%s: error: Found %d matching v* tags, need exactly 1.\n' "$0" "$count" >&2 + exit 1 +fi + +printf '%s\n' "${tags[0]}" diff --git a/justfile b/justfile index 6129408cb74..8a4c4ffa95c 100755 --- a/justfile +++ b/justfile @@ -295,3 +295,20 @@ check-mode: # Delete `gix-packetline-blocking/src` and regenerate from `gix-packetline/src` copy-packetline: etc/copy-packetline.sh + +# Get the unique `v*` tag at `HEAD`, or fail with an error +unique-v-tag: + etc/unique-v-tag.sh + +# Trigger the `release.yml` workflow on the current `v*` tag +run-release-workflow repo='': + optional_repo_arg={{ quote(repo) }} && \ + export GH_REPO="${optional_repo_arg:-"${GH_REPO:-GitoxideLabs/gitoxide}"}" && \ + tag_name="$({{ j }} unique-v-tag)" && \ + printf 'Running release.yml in %s repo for %s tag.\n' "$GH_REPO" "$tag_name" && \ + gh workflow run release.yml --ref "refs/tags/$tag_name" + +# Run `cargo smart-release` and then trigger `release.yml` for the `v*` tag +roll-release *csr-args: + cargo smart-release {{ csr-args }} + {{ j }} run-release-workflow From ef5fff179953e846c7073f4d07539529282f4031 Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Sun, 13 Jul 2025 02:03:37 -0400 Subject: [PATCH 045/296] Don't run `release.yml` on `push` except in testing For now, this makes it so the `workflow_dispatch` event has to be used to run the `release.yml` workflow, except for fake testing releases (tags that end in `-DO-NOT-USE`). As noted in the explanatory comment, the `push` event rarely if ever occurs when tags are pushed to the `GitoxideLabs/gitoxide` repository. It is uncommon for a `gitoxide` crate release to be tagged at a commit that does not also have three or more library crates tagged. But `cargo smart-release` pushes all relevant tags at once, and GitHub Actions currently does not register a `push` event when more than three tags are pushed together. So the `release.yml` workflow is run via `workflow_dispatch` instead. The preceding commit adds `justfile` recipes to make it easier to trigger `release.yml` via `workflow_dispatch`. But this runs the risk that, in the rare case that there are few enough tags pushed for the `push` trigger to work, the workflow might be run more than once for the same release. Therefore, this prevents `push` from ever triggering the workflow for tags representing actual releases. See #1970 for some other details. (Allowing `push` to still work in testing makes it easier to test in a fork without risking accidentally triggering the workflow in the upstream repository. So the pattern is narrowed to still allow that, rather than being removed altogether, at least for now.) --- .github/workflows/release.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c47e9148ee9..af5096d2d39 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,9 +7,16 @@ on: push: # Enable when testing release infrastructure on a branch. # branches: - # - fix-releases + # - fix-releases tags: - - 'v*' + # For now, real releases always use `workflow_dispatch`, and running the workflow on tag pushes + # is only done in testing. This is because we usually push too many tags at once for the `push` + # event to be triggered, since there are usually more than 3 crates tagged together. So the + # `push` trigger doesn't usually work. If we allow it, we risk running the workflow twice if + # it is also manually triggered based on the assumption that it would not run. See #1970 for + # details. See also the `run-release-workflow` and `roll-release` recipes in the `justfile`. + # - 'v*' + - 'v*-DO-NOT-USE' # Pattern for tags used to test the workflow (usually done in a fork). workflow_dispatch: permissions: From 45b369c65e7d36d42c8250b020ea5523615046e3 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 4 Jul 2025 05:58:59 +0200 Subject: [PATCH 046/296] doc: Improve and correct `normalize()` documentation (#2074) --- gix-path/Cargo.toml | 2 +- gix-path/src/convert.rs | 28 +++++++++++++++++++++++----- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml index 5502116cfdb..e5644dbb062 100644 --- a/gix-path/Cargo.toml +++ b/gix-path/Cargo.toml @@ -12,7 +12,7 @@ include = ["src/**/*", "LICENSE-*"] rust-version = "1.70" [lib] -doctest = false +doctest = true [dependencies] gix-trace = { version = "^0.1.12", path = "../gix-trace" } diff --git a/gix-path/src/convert.rs b/gix-path/src/convert.rs index 000deb3798b..6391a4c2e8c 100644 --- a/gix-path/src/convert.rs +++ b/gix-path/src/convert.rs @@ -247,16 +247,34 @@ pub fn to_windows_separators<'a>(path: impl Into>) -> Cow<'a, BStr /// /// For example, this turns `a/./b/c/.././..` into `a`, and turns `/a/../b/..` into `/`. /// -/// If the input path was relative and ends up being the `current_dir`, `.` is returned instead of -/// the full path to `current_dir`. +/// ``` +/// # fn main() { +/// # use std::path::Path; +/// # use gix_path::normalize; +/// for (input, expected) in [ +/// ("a/./b/c/.././..", "a"), +/// ("/a/../b/..", "/"), +/// ("/base/a/..", "/base"), +/// ("./a/..", "."), +/// ("./a/../..", "/"), +/// (".///", ".///"), +/// ("a//b", "a//b"), +/// ("/base/../base", "/base"), +/// ] { +/// let input = Path::new(input); +/// let expected = Path::new(expected); +/// assert_eq!(normalize(input.into(), Path::new("/cwd")), Some(expected.into())); +/// } +/// # } +/// ``` /// -/// Single `.` components as well as duplicate separators are left untouched. +/// Leading `.` components as well as duplicate separators are left untouched. /// /// This is particularly useful when manipulating paths that are based on user input, and not /// resolving intermediate symlinks keeps the path similar to what the user provided. If that's not -/// desirable, use `[realpath()][crate::realpath()` instead. +/// desirable, use [`realpath()`](crate::realpath()) instead. /// -/// Note that we might access the `current_dir` if we run out of path components to pop off, which +/// Note that we will use the `current_dir` if we run out of path components to pop off, which /// is expected to be absolute as typical return value of `std::env::current_dir()` or /// `gix_fs::current_dir(…)` when `core.precomposeUnicode` is known. As a `current_dir` like `/c` /// can be exhausted by paths like `../../r`, `None` will be returned to indicate the inability to From a773854a798bb2315dcce347d86b856b8fac8dc9 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 6 Jul 2025 15:28:04 +0200 Subject: [PATCH 047/296] fix: improve error message for when there is too many packs. Affects https://github.com/jj-vcs/jj/issues/6906 --- gix-odb/src/store_impls/dynamic/init.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/gix-odb/src/store_impls/dynamic/init.rs b/gix-odb/src/store_impls/dynamic/init.rs index be6a1ea9475..8f62ca34e58 100644 --- a/gix-odb/src/store_impls/dynamic/init.rs +++ b/gix-odb/src/store_impls/dynamic/init.rs @@ -99,17 +99,24 @@ impl Store { let mut db_paths = crate::alternate::resolve(objects_dir.clone(), ¤t_dir) .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))?; db_paths.insert(0, objects_dir.clone()); - let num_slots = super::Store::collect_indices_and_mtime_sorted_by_size(db_paths, None, None) + let num_slots = Store::collect_indices_and_mtime_sorted_by_size(db_paths, None, None) .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))? .len(); - ((num_slots as f32 * multiplier) as usize).max(minimum) + let candidate = ((num_slots as f32 * multiplier) as usize).max(minimum); + if candidate > crate::store::types::PackId::max_indices() { + // A chance for this to work without 10% extra allocation - this already + // is an insane amount of packs. + num_slots + } else { + candidate + } } }; if slot_count > crate::store::types::PackId::max_indices() { return Err(std::io::Error::new( std::io::ErrorKind::Other, - "Cannot use more than 1^15 slots", + format!("Cannot use more than 2^15-1 slots, got {slot_count}"), )); } let mut replacements: Vec<_> = replacements.collect(); From a8b5751369234b29199f035b98d4fb36183fced7 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 9 Jul 2025 08:02:27 +0200 Subject: [PATCH 048/296] fix: `gix submodule list` now prints the submodule path in debug mode That way, special characters won't affect the terminal. --- gitoxide-core/src/repository/submodule.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gitoxide-core/src/repository/submodule.rs b/gitoxide-core/src/repository/submodule.rs index 9938eb71a8e..0da81100eb4 100644 --- a/gitoxide-core/src/repository/submodule.rs +++ b/gitoxide-core/src/repository/submodule.rs @@ -31,7 +31,7 @@ fn print_sm(sm: Submodule<'_>, dirty_suffix: Option<&str>, out: &mut impl std::i } writeln!( out, - " {is_active} {path} {config} head:{head_id} index:{index_id} ({worktree}) [{url}]", + " {is_active} {path:?} {config} head:{head_id} index:{index_id} ({worktree}) [{url}]", is_active = if !sm.is_active()? || !state.repository_exists { "ⅹ" } else { @@ -48,8 +48,8 @@ fn print_sm(sm: Submodule<'_>, dirty_suffix: Option<&str>, out: &mut impl std::i worktree = match sm_repo { Some(repo) => { // TODO(name-revision): this is the simple version, `git` gives it - // multiple tries https://github.com/git/git/blob/fac96dfbb1c24369ba7d37a5affd8adfe6c650fd/builtin/submodule--helper.c#L161 - // and even uses `git name-rev`/`git describe --contains` which we can't do yet. + // multiple tries https://github.com/git/git/blob/fac96dfbb1c24369ba7d37a5affd8adfe6c650fd/builtin/submodule--helper.c#L161 + // and even uses `git name-rev`/`git describe --contains` which we can't do yet. repo.head_commit()? .describe() .names(SelectRef::AllRefs) @@ -60,7 +60,7 @@ fn print_sm(sm: Submodule<'_>, dirty_suffix: Option<&str>, out: &mut impl std::i .to_string() } None => { - "no worktree".to_string() + "no worktree".into() } }, url = sm.url()?.to_bstring() From 65037b56918b90ac07454a815b0ed136df2fca3b Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 15 Jul 2025 05:18:16 +0200 Subject: [PATCH 049/296] update changelogs prior to release --- CHANGELOG.md | 53 ++++++++++++ gitoxide-core/CHANGELOG.md | 67 +++++++++++++++- gix-actor/CHANGELOG.md | 36 ++++++++- gix-archive/CHANGELOG.md | 34 +++++++- gix-attributes/CHANGELOG.md | 42 +++++++++- gix-blame/CHANGELOG.md | 79 +++++++++++++++++- gix-command/CHANGELOG.md | 28 ++++++- gix-commitgraph/CHANGELOG.md | 27 ++++++- gix-config-value/CHANGELOG.md | 29 ++++++- gix-config/CHANGELOG.md | 65 ++++++++++++++- gix-credentials/CHANGELOG.md | 42 +++++++++- gix-date/CHANGELOG.md | 30 ++++++- gix-diff/CHANGELOG.md | 76 +++++++++++++++++- gix-dir/CHANGELOG.md | 31 ++++++- gix-discover/CHANGELOG.md | 31 ++++++- gix-features/CHANGELOG.md | 45 ++++++++++- gix-filter/CHANGELOG.md | 32 +++++++- gix-fs/CHANGELOG.md | 31 ++++++- gix-fsck/CHANGELOG.md | 27 ++++++- gix-glob/CHANGELOG.md | 32 +++++++- gix-hash/CHANGELOG.md | 35 +++++++- gix-hashtable/CHANGELOG.md | 33 +++++++- gix-ignore/CHANGELOG.md | 37 ++++++++- gix-index/CHANGELOG.md | 34 +++++++- gix-lock/CHANGELOG.md | 29 ++++++- gix-mailmap/CHANGELOG.md | 29 ++++++- gix-merge/CHANGELOG.md | 33 +++++++- gix-negotiate/CHANGELOG.md | 31 ++++++- gix-object/CHANGELOG.md | 39 ++++++++- gix-odb/CHANGELOG.md | 45 ++++++++++- gix-pack/CHANGELOG.md | 40 ++++++++- gix-packetline-blocking/CHANGELOG.md | 33 +++++++- gix-packetline/CHANGELOG.md | 33 +++++++- gix-path/CHANGELOG.md | 40 ++++++++- gix-pathspec/CHANGELOG.md | 39 ++++++++- gix-prompt/CHANGELOG.md | 33 +++++++- gix-protocol/CHANGELOG.md | 41 +++++++++- gix-ref/CHANGELOG.md | 53 +++++++++++- gix-refspec/CHANGELOG.md | 37 ++++++++- gix-revision/CHANGELOG.md | 29 ++++++- gix-revwalk/CHANGELOG.md | 29 ++++++- gix-sec/CHANGELOG.md | 38 ++++++++- gix-shallow/CHANGELOG.md | 27 ++++++- gix-status/CHANGELOG.md | 37 ++++++++- gix-submodule/CHANGELOG.md | 31 ++++++- gix-tempfile/CHANGELOG.md | 33 +++++++- gix-trace/CHANGELOG.md | 27 ++++++- gix-transport/CHANGELOG.md | 45 ++++++++++- gix-traverse/CHANGELOG.md | 35 +++++++- gix-url/CHANGELOG.md | 37 ++++++++- gix-worktree-state/CHANGELOG.md | 31 ++++++- gix-worktree-stream/CHANGELOG.md | 28 ++++++- gix-worktree/CHANGELOG.md | 37 ++++++++- gix/CHANGELOG.md | 116 ++++++++++++++++++++++++++- 54 files changed, 2058 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ffd57a4853..70adf625851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,59 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add first debug version of `gix tag list` + - `gix revision list --long-hashes` for faster iteration. + The performance of the short-hash generation was improved as well. + - support for `commitgraph list from..to` to exercise the new 'hide' capability. + - Enable precious file parsing in `gix` CLI by default, allow overrides. + That's pretty neat as one can now set `GIX_PARSE_PRECIOUS=0` in the environment + to disable precious file parsing, good to see what difference it makes. + + It's also possible to do this wiht `gix -c gitoxide.parsePrecious=0`. + - add support for multiple blame ranges like `gix blame -L -L ...` + Update the blame subcommand to handle multiple line ranges. This allows specifying multiple `-L` options similar to the usage of git. + +### Commit Statistics + + + + - 19 commits contributed to the release over the course of 78 calendar days. + - 79 days passed between releases. + - 5 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2073 from cruessler/add-tag-list ([`c7af04d`](https://github.com/GitoxideLabs/gitoxide/commit/c7af04db9b6bb1204e0f4c436d1db8f48a491e86)) + - Refactor ([`750ae9b`](https://github.com/GitoxideLabs/gitoxide/commit/750ae9bc3cf72c1d9a358307e423523324eb25fb)) + - Add first debug version of `gix tag list` ([`37d3bf2`](https://github.com/GitoxideLabs/gitoxide/commit/37d3bf24ac1a79302f3e97b97372e4ad381c45e2)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Merge pull request #2051 from GitoxideLabs/improvements ([`f933f80`](https://github.com/GitoxideLabs/gitoxide/commit/f933f8065c218ee1e9ae7158b15c8a0917140803)) + - `gix revision list --long-hashes` for faster iteration. ([`ab52a49`](https://github.com/GitoxideLabs/gitoxide/commit/ab52a49a555ab25e6cf632cb0b080eab72958a7d)) + - Adapt to changes in `gix-blame` ([`4afc51d`](https://github.com/GitoxideLabs/gitoxide/commit/4afc51d4ba669ad3c4b26f1c4222442d1dab1695)) + - Merge pull request #2022 from cruessler/add-rename-tracking-to-blame ([`76eddf8`](https://github.com/GitoxideLabs/gitoxide/commit/76eddf86b91afc3535f7eb0d9004652823ccda36)) + - Refactor ([`3e5365c`](https://github.com/GitoxideLabs/gitoxide/commit/3e5365cb066895c787a22422964a2b9459f37ec3)) + - Merge pull request #2037 from GitoxideLabs/hide ([`92febae`](https://github.com/GitoxideLabs/gitoxide/commit/92febae025165c55e596d58511b1634fb6580b9c)) + - Support for `commitgraph list from..to` to exercise the new 'hide' capability. ([`c5bc49f`](https://github.com/GitoxideLabs/gitoxide/commit/c5bc49f2a02e9b28c2466ea4c7ae711d091ffc96)) + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Enable precious file parsing in `gix` CLI by default, allow overrides. ([`1df1ebb`](https://github.com/GitoxideLabs/gitoxide/commit/1df1ebb34dd3e2101d8a112dda66f6bac5261ea7)) + - Merge pull request #1973 from holodorum/feature/blame-range-support ([`de13b16`](https://github.com/GitoxideLabs/gitoxide/commit/de13b16728f6d29452cb97b50281aa91d498eb49)) + - Refactor ([`d4461e7`](https://github.com/GitoxideLabs/gitoxide/commit/d4461e700657d049a8cbc1552f328e35b27c92c3)) + - Add support for multiple blame ranges like `gix blame -L -L ...` ([`36a6ffe`](https://github.com/GitoxideLabs/gitoxide/commit/36a6ffeea7bbde7fb3689ddf2a107e09a50e602c)) + - Adapt to changes in `gix-blame` ([`8143d69`](https://github.com/GitoxideLabs/gitoxide/commit/8143d692e51c8d1b3d8c2323e83676e1be122f13)) +
+ ## 0.44.0 (2025-04-26) ## 0.43.0 (2025-04-25) diff --git a/gitoxide-core/CHANGELOG.md b/gitoxide-core/CHANGELOG.md index ae3d157bd5d..3aef71c62f5 100644 --- a/gitoxide-core/CHANGELOG.md +++ b/gitoxide-core/CHANGELOG.md @@ -5,13 +5,76 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add first debug version of `gix tag list` + - `gix revision list --long-hashes` for faster iteration. + The performance of the short-hash generation was improved as well. + - support for `commitgraph list from..to` to exercise the new 'hide' capability. + +### Bug Fixes + + - `gix submodule list` now prints the submodule path in debug mode + That way, special characters won't affect the terminal. + +### Commit Statistics + + + + - 25 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 4 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - `gix submodule list` now prints the submodule path in debug mode ([`a8b5751`](https://github.com/GitoxideLabs/gitoxide/commit/a8b5751369234b29199f035b98d4fb36183fced7)) + - Merge pull request #2073 from cruessler/add-tag-list ([`c7af04d`](https://github.com/GitoxideLabs/gitoxide/commit/c7af04db9b6bb1204e0f4c436d1db8f48a491e86)) + - Refactor ([`750ae9b`](https://github.com/GitoxideLabs/gitoxide/commit/750ae9bc3cf72c1d9a358307e423523324eb25fb)) + - Make output more verbose ([`a845a4b`](https://github.com/GitoxideLabs/gitoxide/commit/a845a4b5b0579cd65f1e2f5c18a751329ff9504f)) + - Add first debug version of `gix tag list` ([`37d3bf2`](https://github.com/GitoxideLabs/gitoxide/commit/37d3bf24ac1a79302f3e97b97372e4ad381c45e2)) + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2051 from GitoxideLabs/improvements ([`f933f80`](https://github.com/GitoxideLabs/gitoxide/commit/f933f8065c218ee1e9ae7158b15c8a0917140803)) + - `gix revision list --long-hashes` for faster iteration. ([`ab52a49`](https://github.com/GitoxideLabs/gitoxide/commit/ab52a49a555ab25e6cf632cb0b080eab72958a7d)) + - Merge pull request #2022 from cruessler/add-rename-tracking-to-blame ([`76eddf8`](https://github.com/GitoxideLabs/gitoxide/commit/76eddf86b91afc3535f7eb0d9004652823ccda36)) + - Refactor ([`3e5365c`](https://github.com/GitoxideLabs/gitoxide/commit/3e5365cb066895c787a22422964a2b9459f37ec3)) + - Adapt to changes in `gix-blame` ([`f899d6d`](https://github.com/GitoxideLabs/gitoxide/commit/f899d6d533b6fb0d1ce5d08d0ec6c38df294398a)) + - Merge pull request #2037 from GitoxideLabs/hide ([`92febae`](https://github.com/GitoxideLabs/gitoxide/commit/92febae025165c55e596d58511b1634fb6580b9c)) + - Support for `commitgraph list from..to` to exercise the new 'hide' capability. ([`c5bc49f`](https://github.com/GitoxideLabs/gitoxide/commit/c5bc49f2a02e9b28c2466ea4c7ae711d091ffc96)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Adapt to changes in `gix-ignore` and `gix-glob`, and more. ([`4ef7806`](https://github.com/GitoxideLabs/gitoxide/commit/4ef7806e62954d069861bddb06cb8c0baf47bb69)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.47.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +85,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.47.0 (2025-04-25) diff --git a/gix-actor/CHANGELOG.md b/gix-actor/CHANGELOG.md index bb69a18f7cf..ec95c2b47bd 100644 --- a/gix-actor/CHANGELOG.md +++ b/gix-actor/CHANGELOG.md @@ -5,13 +5,45 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - implement `From for Identity` for convenient conversions of owned types. + +### Commit Statistics + + + + - 8 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2038 from ilyagr/signature-doc ([`8f6ecfe`](https://github.com/GitoxideLabs/gitoxide/commit/8f6ecfe4b017fc6ed33d8932a1cb911ed0879713)) + - Refactor ([`aff23d6`](https://github.com/GitoxideLabs/gitoxide/commit/aff23d65a1a44e5356fb362a857d736280d3a580)) + - Gix-actor docs: document conversions between `Signature` and `SignatureRef` ([`8bebd2e`](https://github.com/GitoxideLabs/gitoxide/commit/8bebd2e84b4e9d9a31a6ff8dcd17da83534f3c95)) + - Merge pull request #2036 from GitoxideLabs/improvements ([`249bf9a`](https://github.com/GitoxideLabs/gitoxide/commit/249bf9a2add29caa339c5f9783dd63f87a718c6e)) + - Implement `From for Identity` for convenient conversions of owned types. ([`8c34d9f`](https://github.com/GitoxideLabs/gitoxide/commit/8c34d9fd3cade8e9e0cd2b648dfe70d2d73ccd40)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.35.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +54,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.35.0 (2025-04-25) diff --git a/gix-archive/CHANGELOG.md b/gix-archive/CHANGELOG.md index 9ff90248f04..6fefce521be 100644 --- a/gix-archive/CHANGELOG.md +++ b/gix-archive/CHANGELOG.md @@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2049 from joshtriplett/zip4 ([`b8f2ab6`](https://github.com/GitoxideLabs/gitoxide/commit/b8f2ab6e01f34b6f2a45c7df0ae2df7633c9038f)) + - Upgrade to zip 4, which uses zlib-rs by default ([`e768c94`](https://github.com/GitoxideLabs/gitoxide/commit/e768c94b9035fc7a026efcafee8023faa0886d4e)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.21.2 (2025-05-16) Update the `zip` dependency to the unyanked version 3.0. @@ -13,7 +44,7 @@ Update the `zip` dependency to the unyanked version 3.0. - - 7 commits contributed to the release over the course of 20 calendar days. + - 8 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 2 unique issues were worked on: [#1984](https://github.com/GitoxideLabs/gitoxide/issues/1984), [#2013](https://github.com/GitoxideLabs/gitoxide/issues/2013) @@ -29,6 +60,7 @@ Update the `zip` dependency to the unyanked version 3.0. * **[#2013](https://github.com/GitoxideLabs/gitoxide/issues/2013)** - Avoid yanked `zip` dependency ([`8692657`](https://github.com/GitoxideLabs/gitoxide/commit/8692657ec7c7ab765fcf1aeb9f0e1c55384e39d3)) * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-attributes/CHANGELOG.md b/gix-attributes/CHANGELOG.md index 37abf9e6997..28e8b297f58 100644 --- a/gix-attributes/CHANGELOG.md +++ b/gix-attributes/CHANGELOG.md @@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. + That way it can support settings and other state that affect parsing. + This affects various crates which are all marked as breaking now. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.26.1 (2025-05-16) A maintenance release without user-facing changes. @@ -13,7 +52,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +64,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-blame/CHANGELOG.md b/gix-blame/CHANGELOG.md index f7ee9927de9..26cf9d1e33d 100644 --- a/gix-blame/CHANGELOG.md +++ b/gix-blame/CHANGELOG.md @@ -5,13 +5,88 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - add `debug_track_path` and `blame_path` + - follow renames in blame + - Add `BlameRanges` to enable multi-range blame support + This update replaces single-range handling with the `BlameRanges` type, allowing multiple 1-based inclusive line ranges to be specified for blame operations. + + It hides some of the implementation details of the range logic, prepares for compatibility with `git` behavior, and adds tests to validate multi-range scenarios. + +### Commit Statistics + + + + - 40 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 3 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 2 times to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2066 from cruessler/add-test-for-file-added-in-two-different-branches ([`8007f1d`](https://github.com/GitoxideLabs/gitoxide/commit/8007f1d0bad357688acd1235d079bf164290cda6)) + - Add test for file with two roots ([`92751b7`](https://github.com/GitoxideLabs/gitoxide/commit/92751b725e9ce9f6915577fbdf50f1fac9e8db41)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Refactor ([`378b1be`](https://github.com/GitoxideLabs/gitoxide/commit/378b1beb9359f9f1ef26f01065f303ec8ec9ee28)) + - Thanks clippy ([`c7a2e80`](https://github.com/GitoxideLabs/gitoxide/commit/c7a2e802215ec2c2512262b9d54e580297964e8c)) + - Only add entry when blame was passed ([`5d748af`](https://github.com/GitoxideLabs/gitoxide/commit/5d748af0f956ee62c7327c4bf6361c6817d04fbd)) + - Add `index` to `BlamePathEntry` ([`90c2bb8`](https://github.com/GitoxideLabs/gitoxide/commit/90c2bb8701beb21a07f7dcf41401b863c638824a)) + - Add `debug_track_path` and `blame_path` ([`81297cf`](https://github.com/GitoxideLabs/gitoxide/commit/81297cf2b85072ad13824f9821a0102dc6497f80)) + - Merge pull request #2042 from cruessler/remove-unwrap-in-tests ([`e09825a`](https://github.com/GitoxideLabs/gitoxide/commit/e09825aed4b80a53e6317b75a4cea4e1ce9a759a)) + - Remove most .unwrap()'s in gix-blame tests ([`4bf61f5`](https://github.com/GitoxideLabs/gitoxide/commit/4bf61f5671b097b82605009ad0dfc48de428ff18)) + - Merge pull request #2039 from cruessler/add-test-for-rename-tracking ([`073487b`](https://github.com/GitoxideLabs/gitoxide/commit/073487b38ed40bcd7eb45dc110ae1ce84f9275a9)) + - Refactor ([`8e2bc0f`](https://github.com/GitoxideLabs/gitoxide/commit/8e2bc0fb3e0d3b3a4ac58af76317e13e11b72117)) + - Remove obsolete comment ([`2541378`](https://github.com/GitoxideLabs/gitoxide/commit/25413788e3c5c9059d39b125e3543b9b9301e8fe)) + - Add test for source file name tracking per hunk ([`8ba513c`](https://github.com/GitoxideLabs/gitoxide/commit/8ba513c64d98463e3bf7d01a02c6d882897ebee0)) + - Merge pull request #2022 from cruessler/add-rename-tracking-to-blame ([`76eddf8`](https://github.com/GitoxideLabs/gitoxide/commit/76eddf86b91afc3535f7eb0d9004652823ccda36)) + - Refactor ([`3e5365c`](https://github.com/GitoxideLabs/gitoxide/commit/3e5365cb066895c787a22422964a2b9459f37ec3)) + - Get current file_path from unblamed hunk ([`7435ed5`](https://github.com/GitoxideLabs/gitoxide/commit/7435ed5a9a7370a12332e12bd40fdbc757284a85)) + - Follow renames in blame ([`d2e98f3`](https://github.com/GitoxideLabs/gitoxide/commit/d2e98f3cf458121da3d23933d6a7421d70309a20)) + - Use `pretty_assertion::assert_equal` ([`6e6836b`](https://github.com/GitoxideLabs/gitoxide/commit/6e6836b4857fa19c20deadaacb1a079b3ef675a9)) + - Merge pull request #2023 from cruessler/add-tests-for-blame-in-sub-directory ([`f606bd5`](https://github.com/GitoxideLabs/gitoxide/commit/f606bd5090f639942834c2eb2bd4d975c009a58e)) + - Add test for blame in sub-directory ([`cca22e2`](https://github.com/GitoxideLabs/gitoxide/commit/cca22e205f0414a727639af97ca12e7c3cab0280)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1983 from cruessler/make-process-changes-work-with-overlapping-ranges ([`83e1b73`](https://github.com/GitoxideLabs/gitoxide/commit/83e1b73f1db090f76d7b0d8062975f1f91346c37)) + - Refactor ([`b2121bc`](https://github.com/GitoxideLabs/gitoxide/commit/b2121bcd8be3546cf708242dae070c7173a7d384)) + - Thanks clippy ([`ee6f5cc`](https://github.com/GitoxideLabs/gitoxide/commit/ee6f5cc1dc08975da364836adf3a3261d20c7ded)) + - Use *Blamed File* and *Source File* more consistently ([`2f6786b`](https://github.com/GitoxideLabs/gitoxide/commit/2f6786b08a0c94106b4e93f7835a708adc859fed)) + - Correctly process overlapping unblamed hunks ([`6e1ea6d`](https://github.com/GitoxideLabs/gitoxide/commit/6e1ea6d85b8396b8348498c643d92eafb832987c)) + - Provide more context in assertion ([`d46766a`](https://github.com/GitoxideLabs/gitoxide/commit/d46766aa29c4ac0bb198aa74fadb5b07ba82f03b)) + - Merge pull request #1978 from cruessler/make-mutation-more-idiomatic ([`dc3c7c9`](https://github.com/GitoxideLabs/gitoxide/commit/dc3c7c9b461a33afe422d1785e3b0b0eb194d67a)) + - Make mutation more idiomatic ([`4423cae`](https://github.com/GitoxideLabs/gitoxide/commit/4423cae45570f73a11ca34867794c5a05c342524)) + - Remove obsolete comment ([`2d2365e`](https://github.com/GitoxideLabs/gitoxide/commit/2d2365e605e568e88e0c01917a12de4e7fd724f2)) + - Merge pull request #1974 from cruessler/move-commit-time-to-either ([`8be3193`](https://github.com/GitoxideLabs/gitoxide/commit/8be3193eb34ac5deadb0ade60ba01cb3c97f6135)) + - Make use of `gix_traverse::commit::Either::commit_time()` ([`f59a794`](https://github.com/GitoxideLabs/gitoxide/commit/f59a7946eda3c6bbdb2c5710eabf32df0b1ac63d)) + - Merge pull request #1973 from holodorum/feature/blame-range-support ([`de13b16`](https://github.com/GitoxideLabs/gitoxide/commit/de13b16728f6d29452cb97b50281aa91d498eb49)) + - Refactor ([`d4461e7`](https://github.com/GitoxideLabs/gitoxide/commit/d4461e700657d049a8cbc1552f328e35b27c92c3)) + - Add `BlameRanges` to enable multi-range blame support ([`f189031`](https://github.com/GitoxideLabs/gitoxide/commit/f1890313c42d8f5b347feef1f48ec53f054dff08)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.2.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +97,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.2.0 (2025-04-25) diff --git a/gix-command/CHANGELOG.md b/gix-command/CHANGELOG.md index cc1e369e5a5..7b81fd68ff1 100644 --- a/gix-command/CHANGELOG.md +++ b/gix-command/CHANGELOG.md @@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.6.1 (2025-05-16) A maintenance release without user-facing changes. @@ -13,7 +38,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +50,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-commitgraph/CHANGELOG.md b/gix-commitgraph/CHANGELOG.md index 8cf688f71c5..95e9dc8f290 100644 --- a/gix-commitgraph/CHANGELOG.md +++ b/gix-commitgraph/CHANGELOG.md @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 1 commit contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.28.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +45,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.27.1 (2025-04-25) diff --git a/gix-config-value/CHANGELOG.md b/gix-config-value/CHANGELOG.md index 58d8e7ca87e..1883b8024c4 100644 --- a/gix-config-value/CHANGELOG.md +++ b/gix-config-value/CHANGELOG.md @@ -5,13 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.15.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.14.13 (2025-04-25) diff --git a/gix-config/CHANGELOG.md b/gix-config/CHANGELOG.md index 26fb2bcc31c..ae37ff9087d 100644 --- a/gix-config/CHANGELOG.md +++ b/gix-config/CHANGELOG.md @@ -5,13 +5,54 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 13 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Adapt `gix-config`/`gix-object` benches to changes in `criterion` ([`91aef25`](https://github.com/GitoxideLabs/gitoxide/commit/91aef25a9febd440a8c14ce9d73716b5b1de6257)) + - Adapt `gix-config` tests to changes in `tempfile` ([`eccd13a`](https://github.com/GitoxideLabs/gitoxide/commit/eccd13a4b5b39422e04a00cedc81c8991c9eba3e)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.45.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +63,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.45.0 (2025-04-25) @@ -3793,6 +3836,24 @@ This is a maintenance release without functional changes. - `len` - `from_env` - `open` + - `len` + - `from_env` + - `open` + - `len` + - `from_env` + - `open` + - `len` + - `from_env` + - `open` +- `len` +- `from_env` +- `open` +- `len` +- `from_env` +- `open` +- `len` +- `from_env` +- `open` - `len` - `from_env` - `open` @@ -4044,6 +4105,7 @@ This is a maintenance release without functional changes. `ParserFromIoError` +lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen @@ -4059,6 +4121,7 @@ lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfr + ## v0.1.1 (2021-05-09) diff --git a/gix-credentials/CHANGELOG.md b/gix-credentials/CHANGELOG.md index 6df6a675255..479d3f08a06 100644 --- a/gix-credentials/CHANGELOG.md +++ b/gix-credentials/CHANGELOG.md @@ -5,13 +5,51 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add `protocol::Context::redacted()` as convenient way to not leak secrets. + +### Bug Fixes (BREAKING) + + - pass `password_expiry_utc` and `oauth_refresh_token` in credential helper invocations + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 2 commits were understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998) + +### Commit Details + + + +
view details + + * **[#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998)** + - Pass `password_expiry_utc` and `oauth_refresh_token` in credential helper invocations ([`3a50af5`](https://github.com/GitoxideLabs/gitoxide/commit/3a50af524ad5e13bbd08bbb96cbf0817d5e89038)) + * **Uncategorized** + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #1999 from GitoxideLabs/credential-helper-protocol-fix ([`8d30ab1`](https://github.com/GitoxideLabs/gitoxide/commit/8d30ab1260fa69468b66d6df3297bb2b43530b93)) + - Adapt to changes in `gix-sec` ([`6880175`](https://github.com/GitoxideLabs/gitoxide/commit/6880175ab1bb70af39d18919cb8bfdc1df32b46f)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Add `protocol::Context::redacted()` as convenient way to not leak secrets. ([`f0cacb0`](https://github.com/GitoxideLabs/gitoxide/commit/f0cacb0e80c8aace4bc60eb228ae184744633a21)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.29.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +60,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.28.1 (2025-04-25) diff --git a/gix-date/CHANGELOG.md b/gix-date/CHANGELOG.md index 816b6b41aba..694e403c95b 100644 --- a/gix-date/CHANGELOG.md +++ b/gix-date/CHANGELOG.md @@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 65 calendar days. + - 65 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) +
+ ## 0.10.2 (2025-05-10) A maintenance release without user-facing changes. @@ -13,7 +40,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 14 calendar days. + - 6 commits contributed to the release over the course of 14 calendar days. - 14 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 2 unique issues were worked on: [#1979](https://github.com/GitoxideLabs/gitoxide/issues/1979), [#1984](https://github.com/GitoxideLabs/gitoxide/issues/1984) @@ -29,6 +56,7 @@ A maintenance release without user-facing changes. * **[#1984](https://github.com/GitoxideLabs/gitoxide/issues/1984)** - Further upgrade `jiff` to fix fuzz failures ([`0be4dd4`](https://github.com/GitoxideLabs/gitoxide/commit/0be4dd4e037e8a3080ef335913e06bc2584fd96d)) * **Uncategorized** + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Prepare changelogs prior to release of `gix-index` ([`bfc4880`](https://github.com/GitoxideLabs/gitoxide/commit/bfc48801bf3ed39cdf7ec02e01aa3cfb6181705f)) - Merge pull request #1984 from GitoxideLabs/fuzz ([`f965540`](https://github.com/GitoxideLabs/gitoxide/commit/f965540c162ed3e23bd0d7ad9083093033647e51)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-diff/CHANGELOG.md b/gix-diff/CHANGELOG.md index 36f9ca64791..dbb2ddc890e 100644 --- a/gix-diff/CHANGELOG.md +++ b/gix-diff/CHANGELOG.md @@ -5,13 +5,85 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add explicit accessors for common fields + - Add `Sink` that implements git's diffing improvement heuristics + +### Bug Fixes + + - `blob::UnifiedDiff` now produces non-overlapping hunks. + Previously it was possible to see two hunks with overlapping context lines + due to an off-by-one error. + - remove `blob::GitDiff` Sink as it doesn't work concistently. + Against better judgement I was compelled to merge this implementation in, + assuming one test must be enough given that it is a transcription. + + This, however, wasn't the case and there is strong evidence that it produces + diffs that aren't correct. + - improve rename tracking performance characteristics to make exponential runtime less likely. + This optimizes specifically for the case where there are a lot of added files, but no deletion to + pair it up with. + +### Commit Statistics + + + + - 25 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 5 commits were understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#2011](https://github.com/GitoxideLabs/gitoxide/issues/2011) + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 2 times to make code idiomatic. + +### Commit Details + + + +
view details + + * **[#2011](https://github.com/GitoxideLabs/gitoxide/issues/2011)** + - Remove `blob::GitDiff` Sink as it doesn't work concistently. ([`4f27179`](https://github.com/GitoxideLabs/gitoxide/commit/4f271796041655d80ab0435a76281446e21ad8cd)) + * **Uncategorized** + - Merge pull request #2071 from cruessler/add-accessors-to-change-ref ([`5335c84`](https://github.com/GitoxideLabs/gitoxide/commit/5335c84a68739adc5a7db31220037c83b7be2429)) + - Merge pull request #2072 from GitoxideLabs/fix-unidiff ([`f87967d`](https://github.com/GitoxideLabs/gitoxide/commit/f87967d4983f96133d184eff9d689a333c819958)) + - Reproduce unified diff issue ([`5e64298`](https://github.com/GitoxideLabs/gitoxide/commit/5e64298ba4864636779ae72e301475e9cfe01ac8)) + - Thanks clippy ([`79b8f06`](https://github.com/GitoxideLabs/gitoxide/commit/79b8f0656e34e5099cf09ecd9a9bf569f24c7c0b)) + - Reference new methods in docs for `ChangeRef::field()` ([`fad0118`](https://github.com/GitoxideLabs/gitoxide/commit/fad0118b53dbd9a18ee80e76b16f2b732496ac73)) + - Add explicit accessors for common fields ([`bd01893`](https://github.com/GitoxideLabs/gitoxide/commit/bd0189360152325b3d0eb8a19a1c96af938071b1)) + - Merge pull request #2043 from GitoxideLabs/fix-unidiff ([`08e7777`](https://github.com/GitoxideLabs/gitoxide/commit/08e7777454bdce466363321fce7b168d425bb833)) + - `blob::UnifiedDiff` now produces non-overlapping hunks. ([`0d102f4`](https://github.com/GitoxideLabs/gitoxide/commit/0d102f4bdf1450f9c5f8d4176707c73b499bd665)) + - Merge pull request #2017 from GitoxideLabs/improvements ([`3094214`](https://github.com/GitoxideLabs/gitoxide/commit/309421424fa02037f7609fc4ca0c03a99909cdb6)) + - Improve rename tracking performance characteristics to make exponential runtime less likely. ([`0eaced9`](https://github.com/GitoxideLabs/gitoxide/commit/0eaced934a4d52d80d680222fc0c9f7aae74f056)) + - Merge pull request #2011 from blinxen/main ([`fd49eee`](https://github.com/GitoxideLabs/gitoxide/commit/fd49eeeb850ea3c3956ca15be2bf4e04a3d319ad)) + - Make `GitDiff` compatible to strings and bytes. ([`5505646`](https://github.com/GitoxideLabs/gitoxide/commit/55056467e8b1d2ee327e4f29df058224fb64db5e)) + - Refactor ([`5e699d2`](https://github.com/GitoxideLabs/gitoxide/commit/5e699d26846740ee098e780bb2b861fcae2d31ca)) + - Add `Sink` that implements git's diffing improvement heuristics ([`c84296b`](https://github.com/GitoxideLabs/gitoxide/commit/c84296b98876539e1b21072f32c0339932215f42)) + - Update `imara-diff` to the latest version. ([`732adb8`](https://github.com/GitoxideLabs/gitoxide/commit/732adb87c90283bd8f8fce6d633eacc25e10b353)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1977 from GitoxideLabs/dependabot/cargo/cargo-811d7b929d ([`800738a`](https://github.com/GitoxideLabs/gitoxide/commit/800738a37f3d33926a427edfa294423bbe3f2b66)) + - Bump the cargo group with 12 updates ([`4408166`](https://github.com/GitoxideLabs/gitoxide/commit/4408166bf56197a67419277a4ef8feeba9060fee)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.52.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +94,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.52.0 (2025-04-25) diff --git a/gix-dir/CHANGELOG.md b/gix-dir/CHANGELOG.md index 24537a9e356..309b35cc0c8 100644 --- a/gix-dir/CHANGELOG.md +++ b/gix-dir/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Adapt to changes in `gix-ignore` and `gix-glob`, and more. ([`4ef7806`](https://github.com/GitoxideLabs/gitoxide/commit/4ef7806e62954d069861bddb06cb8c0baf47bb69)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.14.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.14.0 (2025-04-25) diff --git a/gix-discover/CHANGELOG.md b/gix-discover/CHANGELOG.md index 69d388d6c4f..897f623d611 100644 --- a/gix-discover/CHANGELOG.md +++ b/gix-discover/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.40.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.40.0 (2025-04-25) diff --git a/gix-features/CHANGELOG.md b/gix-features/CHANGELOG.md index 2e4271a6bd0..b2002a47f86 100644 --- a/gix-features/CHANGELOG.md +++ b/gix-features/CHANGELOG.md @@ -5,13 +5,54 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - walkdir_sorted_new adds max_depth parameter + max_depth parameter determines the maximum depth the WalkDir will + recurse into. + + Example values: + * 0 -> Returns only the root path with no children. + * 1 -> Returns the root path, with children. + * 2..n -> Returns the root path, children and {n}-grandchildren + +### Commit Statistics + + + + - 10 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) + - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) + - Walkdir_sorted_new adds max_depth parameter ([`6c77b54`](https://github.com/GitoxideLabs/gitoxide/commit/6c77b541b476656827ee0542a650b9731ba549cf)) + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.42.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +63,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.42.0 (2025-04-25) diff --git a/gix-filter/CHANGELOG.md b/gix-filter/CHANGELOG.md index 6de82166739..c7f1ef21f37 100644 --- a/gix-filter/CHANGELOG.md +++ b/gix-filter/CHANGELOG.md @@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Adapt to changes in `gix-ignore` and `gix-glob`, and more. ([`4ef7806`](https://github.com/GitoxideLabs/gitoxide/commit/4ef7806e62954d069861bddb06cb8c0baf47bb69)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.19.2 (2025-05-16) A maintenance release without user-facing changes. @@ -13,7 +42,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +54,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-fs/CHANGELOG.md b/gix-fs/CHANGELOG.md index 8ca0c0c3c7f..015d3ce7d7d 100644 --- a/gix-fs/CHANGELOG.md +++ b/gix-fs/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.15.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.14.1 (2025-04-25) diff --git a/gix-fsck/CHANGELOG.md b/gix-fsck/CHANGELOG.md index 31e9177e3f5..23293935944 100644 --- a/gix-fsck/CHANGELOG.md +++ b/gix-fsck/CHANGELOG.md @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 1 commit contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.11.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +45,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.11.0 (2025-04-25) diff --git a/gix-glob/CHANGELOG.md b/gix-glob/CHANGELOG.md index 00afacb802f..dac004ff448 100644 --- a/gix-glob/CHANGELOG.md +++ b/gix-glob/CHANGELOG.md @@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. + That way it can support settings and other state that affect parsing. + This affects various crates which are all marked as breaking now. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.20.1 (2025-05-16) A maintenance release without user-facing changes. @@ -13,7 +42,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +54,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-hash/CHANGELOG.md b/gix-hash/CHANGELOG.md index 5a346786c7f..928b1f18979 100644 --- a/gix-hash/CHANGELOG.md +++ b/gix-hash/CHANGELOG.md @@ -5,13 +5,44 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - Actually avoid `serde` as dependency, when the serde feature is off + `faster-hex` has serde as default dependency, and was not marked with + `default-features = false`. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) + - Actually avoid `serde` as dependency, when the serde feature is off ([`0d67c85`](https://github.com/GitoxideLabs/gitoxide/commit/0d67c8524058a718083d31eae827f7f60332b20a)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.18.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +53,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.17.1 (2025-04-25) diff --git a/gix-hashtable/CHANGELOG.md b/gix-hashtable/CHANGELOG.md index d30a85bd07f..3a917cbad0a 100644 --- a/gix-hashtable/CHANGELOG.md +++ b/gix-hashtable/CHANGELOG.md @@ -5,13 +5,43 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Chore (BREAKING) + + - Update hashbrown to the latest version + This updates re-exports, removing `raw` and adding `hash_table`. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2047 from blinxen/update-hashbrown ([`00bd1fa`](https://github.com/GitoxideLabs/gitoxide/commit/00bd1fac8753a98fd0d4cdd8cf239b34e62b7d80)) + - Update hashbrown to the latest version ([`c1d0868`](https://github.com/GitoxideLabs/gitoxide/commit/c1d0868c331c2f8ca8b22d22ff68744926a907b3)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.8.1 (2025-04-26) ### Commit Statistics - - 2 commits contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,6 +52,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) - Merge pull request #1919 from GitoxideLabs/release ([`420e730`](https://github.com/GitoxideLabs/gitoxide/commit/420e730f765b91e1d17daca6bb1f99bdb2e54fda))
diff --git a/gix-ignore/CHANGELOG.md b/gix-ignore/CHANGELOG.md index 572e9130d04..daf8dcca5fb 100644 --- a/gix-ignore/CHANGELOG.md +++ b/gix-ignore/CHANGELOG.md @@ -5,13 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. + That way it can support settings and other state that affect parsing. + This affects various crates which are all marked as breaking now. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.15.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.14.1 (2025-04-25) diff --git a/gix-index/CHANGELOG.md b/gix-index/CHANGELOG.md index b376b35a52c..23830871d2b 100644 --- a/gix-index/CHANGELOG.md +++ b/gix-index/CHANGELOG.md @@ -5,6 +5,37 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - Prefer the actual state over following `core.symlinks` in `entry::Mode` + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 65 calendar days. + - 65 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2047 from blinxen/update-hashbrown ([`00bd1fa`](https://github.com/GitoxideLabs/gitoxide/commit/00bd1fac8753a98fd0d4cdd8cf239b34e62b7d80)) + - Update `hashbrown` to 0.15. ([`6f569ce`](https://github.com/GitoxideLabs/gitoxide/commit/6f569cea08297501f332f4d7114065df38fa98f7)) + - Merge pull request #2016 from GitoxideLabs/improvements ([`7ae3797`](https://github.com/GitoxideLabs/gitoxide/commit/7ae3797f19cf2dd3bc3e02a6437643e5f50ed338)) + - Prefer the actual state over following `core.symlinks` in `entry::Mode` ([`c85b92d`](https://github.com/GitoxideLabs/gitoxide/commit/c85b92d991a91bb1044fe5f784524f568e72c45b)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) +
+ ## 0.40.1 (2025-05-10) ### Bug Fixes @@ -15,7 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 14 calendar days. + - 7 commits contributed to the release over the course of 14 calendar days. - 14 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +58,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Prepare changelogs prior to release of `gix-index` ([`bfc4880`](https://github.com/GitoxideLabs/gitoxide/commit/bfc48801bf3ed39cdf7ec02e01aa3cfb6181705f)) - Merge pull request #2005 from 0-wiz-0/main ([`33c4d6b`](https://github.com/GitoxideLabs/gitoxide/commit/33c4d6b6656c994ed090f2fddd70e014401baf30)) - Fix build on NetBSD ([`00e8934`](https://github.com/GitoxideLabs/gitoxide/commit/00e89341cd89f58d031eee8a4e60f6ebdcd53185)) diff --git a/gix-lock/CHANGELOG.md b/gix-lock/CHANGELOG.md index 5ea7ff4cbc8..5ca950e6aba 100644 --- a/gix-lock/CHANGELOG.md +++ b/gix-lock/CHANGELOG.md @@ -5,13 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 17.1.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 17.0.1 (2025-04-25) diff --git a/gix-mailmap/CHANGELOG.md b/gix-mailmap/CHANGELOG.md index 0a5d89cbd2b..c22ed8c3a08 100644 --- a/gix-mailmap/CHANGELOG.md +++ b/gix-mailmap/CHANGELOG.md @@ -5,13 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.27.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.27.0 (2025-04-25) diff --git a/gix-merge/CHANGELOG.md b/gix-merge/CHANGELOG.md index 1c353c70069..b482813c44b 100644 --- a/gix-merge/CHANGELOG.md +++ b/gix-merge/CHANGELOG.md @@ -5,13 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2011 from blinxen/main ([`fd49eee`](https://github.com/GitoxideLabs/gitoxide/commit/fd49eeeb850ea3c3956ca15be2bf4e04a3d319ad)) + - Update `imara-diff` to the latest version. ([`732adb8`](https://github.com/GitoxideLabs/gitoxide/commit/732adb87c90283bd8f8fce6d633eacc25e10b353)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.5.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.5.0 (2025-04-25) diff --git a/gix-negotiate/CHANGELOG.md b/gix-negotiate/CHANGELOG.md index 4f0f5e450e3..725ca1fd899 100644 --- a/gix-negotiate/CHANGELOG.md +++ b/gix-negotiate/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.20.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.20.0 (2025-04-25) diff --git a/gix-object/CHANGELOG.md b/gix-object/CHANGELOG.md index 8bad4ca0de1..45a29823d15 100644 --- a/gix-object/CHANGELOG.md +++ b/gix-object/CHANGELOG.md @@ -5,13 +5,48 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add convenience methods for common Git trailers + +### Commit Statistics + + + + - 11 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Adapt `gix-config`/`gix-object` benches to changes in `criterion` ([`91aef25`](https://github.com/GitoxideLabs/gitoxide/commit/91aef25a9febd440a8c14ce9d73716b5b1de6257)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2030 from ralphmodales/trailer-conviences ([`3820a0f`](https://github.com/GitoxideLabs/gitoxide/commit/3820a0ff32cc543a5f389a20e2bc1c6efd1cd009)) + - Refactor ([`6c6dfd0`](https://github.com/GitoxideLabs/gitoxide/commit/6c6dfd0204b65a03bbe464c312d7decce78e7c98)) + - Add convenience methods for common Git trailers ([`c9a312e`](https://github.com/GitoxideLabs/gitoxide/commit/c9a312edce09f968ece7ed51a4cf68fdcab43e8a)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.49.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +57,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.49.0 (2025-04-25) diff --git a/gix-odb/CHANGELOG.md b/gix-odb/CHANGELOG.md index 4373cefe1e6..044b93b83d7 100644 --- a/gix-odb/CHANGELOG.md +++ b/gix-odb/CHANGELOG.md @@ -5,13 +5,54 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - improve error message for when there is too many packs. + Affects https://github.com/jj-vcs/jj/issues/6906 + +### Commit Statistics + + + + - 10 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 2 times to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Improve error message for when there is too many packs. ([`a773854`](https://github.com/GitoxideLabs/gitoxide/commit/a773854a798bb2315dcce347d86b856b8fac8dc9)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.69.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +63,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.69.0 (2025-04-25) diff --git a/gix-pack/CHANGELOG.md b/gix-pack/CHANGELOG.md index 224eec74073..1447f8803a8 100644 --- a/gix-pack/CHANGELOG.md +++ b/gix-pack/CHANGELOG.md @@ -5,13 +5,49 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Other + + - delta application is a fallible operation + +### Commit Statistics + + + + - 12 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2059 from bradlarsen/main ([`52906fb`](https://github.com/GitoxideLabs/gitoxide/commit/52906fb848e8ba088dc2662c4cd44a0a74148ceb)) + - Refactor ([`56ca4bf`](https://github.com/GitoxideLabs/gitoxide/commit/56ca4bf8e818bbdc14ee9dda68e39acded8f0287)) + - Delta application is a fallible operation ([`fce7095`](https://github.com/GitoxideLabs/gitoxide/commit/fce70950006892f51b32af233656be6fe5de9df3)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.59.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +58,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.59.0 (2025-04-25) diff --git a/gix-packetline-blocking/CHANGELOG.md b/gix-packetline-blocking/CHANGELOG.md index 802e870db8e..adf5a5e4c8d 100644 --- a/gix-packetline-blocking/CHANGELOG.md +++ b/gix-packetline-blocking/CHANGELOG.md @@ -5,13 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - Actually avoid `serde` as dependency, when the serde feature is off + `faster-hex` has serde as default dependency, and was not marked with + `default-features = false`. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) + - Actually avoid `serde` as dependency, when the serde feature is off ([`0d67c85`](https://github.com/GitoxideLabs/gitoxide/commit/0d67c8524058a718083d31eae827f7f60332b20a)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.19.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.18.4 (2025-04-25) diff --git a/gix-packetline/CHANGELOG.md b/gix-packetline/CHANGELOG.md index deebf1094fe..240769f78d3 100644 --- a/gix-packetline/CHANGELOG.md +++ b/gix-packetline/CHANGELOG.md @@ -5,13 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - Actually avoid `serde` as dependency, when the serde feature is off + `faster-hex` has serde as default dependency, and was not marked with + `default-features = false`. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) + - Actually avoid `serde` as dependency, when the serde feature is off ([`0d67c85`](https://github.com/GitoxideLabs/gitoxide/commit/0d67c8524058a718083d31eae827f7f60332b20a)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.19.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.18.5 (2025-04-25) diff --git a/gix-path/CHANGELOG.md b/gix-path/CHANGELOG.md index 991876ede72..54409c08d60 100644 --- a/gix-path/CHANGELOG.md +++ b/gix-path/CHANGELOG.md @@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Other + + - Improve and correct `normalize()` documentation + +### Commit Statistics + + + + - 4 commits contributed to the release over the course of 65 calendar days. + - 65 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074) + +### Commit Details + + + +
view details + + * **[#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074)** + - Improve and correct `normalize()` documentation ([`45b369c`](https://github.com/GitoxideLabs/gitoxide/commit/45b369c65e7d36d42c8250b020ea5523615046e3)) + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) +
+ ## 0.10.18 (2025-05-10) A maintenance release without user-facing changes. @@ -13,7 +42,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 14 calendar days. + - 5 commits contributed to the release over the course of 14 calendar days. - 14 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +60,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Prepare changelogs prior to release of `gix-index` ([`bfc4880`](https://github.com/GitoxideLabs/gitoxide/commit/bfc48801bf3ed39cdf7ec02e01aa3cfb6181705f)) - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) @@ -149,6 +179,14 @@ A maintenance release without user-facing changes. - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 + - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 diff --git a/gix-pathspec/CHANGELOG.md b/gix-pathspec/CHANGELOG.md index 70844566be0..879d2481efc 100644 --- a/gix-pathspec/CHANGELOG.md +++ b/gix-pathspec/CHANGELOG.md @@ -5,13 +5,48 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.11.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +57,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.10.1 (2025-04-25) diff --git a/gix-prompt/CHANGELOG.md b/gix-prompt/CHANGELOG.md index c9f9d7251ca..c25bbd05a04 100644 --- a/gix-prompt/CHANGELOG.md +++ b/gix-prompt/CHANGELOG.md @@ -5,13 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #1977 from GitoxideLabs/dependabot/cargo/cargo-811d7b929d ([`800738a`](https://github.com/GitoxideLabs/gitoxide/commit/800738a37f3d33926a427edfa294423bbe3f2b66)) + - Bump the cargo group with 12 updates ([`4408166`](https://github.com/GitoxideLabs/gitoxide/commit/4408166bf56197a67419277a4ef8feeba9060fee)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.11.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.10.1 (2025-04-25) diff --git a/gix-protocol/CHANGELOG.md b/gix-protocol/CHANGELOG.md index 47a44ac32ee..0d3f8e411bf 100644 --- a/gix-protocol/CHANGELOG.md +++ b/gix-protocol/CHANGELOG.md @@ -5,13 +5,50 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.50.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +59,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.50.0 (2025-04-25) diff --git a/gix-ref/CHANGELOG.md b/gix-ref/CHANGELOG.md index cfab4776ca2..20f3acaec85 100644 --- a/gix-ref/CHANGELOG.md +++ b/gix-ref/CHANGELOG.md @@ -5,13 +5,62 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - refs support pseudo refs + - add `Category::to_full_name()` to easily generate full names from short ones. + - add `file::Store::is_empty()` + +### Commit Statistics + + + + - 17 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 3 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) + - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) + - Refs support pseudo refs ([`fdf5153`](https://github.com/GitoxideLabs/gitoxide/commit/fdf5153d9fe5e7c059b5a9687b7041e16ba54683)) + - Adapt to changes in gix_features::walkdir_sorted_new ([`a2741da`](https://github.com/GitoxideLabs/gitoxide/commit/a2741da85fe04907f8773a99813e3802333b402d)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - Merge pull request #2036 from GitoxideLabs/improvements ([`249bf9a`](https://github.com/GitoxideLabs/gitoxide/commit/249bf9a2add29caa339c5f9783dd63f87a718c6e)) + - Add `Category::to_full_name()` to easily generate full names from short ones. ([`f8b87f1`](https://github.com/GitoxideLabs/gitoxide/commit/f8b87f1ffb871ca3ce8c6ef6538c64780bd1b452)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2016 from GitoxideLabs/improvements ([`7ae3797`](https://github.com/GitoxideLabs/gitoxide/commit/7ae3797f19cf2dd3bc3e02a6437643e5f50ed338)) + - Add `file::Store::is_empty()` ([`c8a63ab`](https://github.com/GitoxideLabs/gitoxide/commit/c8a63ab4618d3a71176703a04ab69da02d850267)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1977 from GitoxideLabs/dependabot/cargo/cargo-811d7b929d ([`800738a`](https://github.com/GitoxideLabs/gitoxide/commit/800738a37f3d33926a427edfa294423bbe3f2b66)) + - Bump the cargo group with 12 updates ([`4408166`](https://github.com/GitoxideLabs/gitoxide/commit/4408166bf56197a67419277a4ef8feeba9060fee)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.52.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +71,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.52.0 (2025-04-25) diff --git a/gix-refspec/CHANGELOG.md b/gix-refspec/CHANGELOG.md index 858f2e2b992..0ef650d241e 100644 --- a/gix-refspec/CHANGELOG.md +++ b/gix-refspec/CHANGELOG.md @@ -5,13 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.30.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.30.0 (2025-04-25) diff --git a/gix-revision/CHANGELOG.md b/gix-revision/CHANGELOG.md index 52400e0b7e2..5192e67452c 100644 --- a/gix-revision/CHANGELOG.md +++ b/gix-revision/CHANGELOG.md @@ -5,13 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.34.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.34.0 (2025-04-25) diff --git a/gix-revwalk/CHANGELOG.md b/gix-revwalk/CHANGELOG.md index 3f95a6b47c3..a365b37bef7 100644 --- a/gix-revwalk/CHANGELOG.md +++ b/gix-revwalk/CHANGELOG.md @@ -5,13 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.20.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +47,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.20.0 (2025-04-25) diff --git a/gix-sec/CHANGELOG.md b/gix-sec/CHANGELOG.md index b72a0fdcd02..e3e7640eb87 100644 --- a/gix-sec/CHANGELOG.md +++ b/gix-sec/CHANGELOG.md @@ -5,13 +5,47 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - Add optional `oauth_refresh_token` field to `identity::Account` + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998) + +### Commit Details + + + +
view details + + * **[#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998)** + - Add optional `oauth_refresh_token` field to `identity::Account` ([`dc9b103`](https://github.com/GitoxideLabs/gitoxide/commit/dc9b103c2ef813931becefcf082daeda5a3cf869)) + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1999 from GitoxideLabs/credential-helper-protocol-fix ([`8d30ab1`](https://github.com/GitoxideLabs/gitoxide/commit/8d30ab1260fa69468b66d6df3297bb2b43530b93)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.11.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +56,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.10.13 (2025-04-25) diff --git a/gix-shallow/CHANGELOG.md b/gix-shallow/CHANGELOG.md index 0124fb815f4..1072b07730c 100644 --- a/gix-shallow/CHANGELOG.md +++ b/gix-shallow/CHANGELOG.md @@ -5,13 +5,36 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 1 commit contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.4.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +45,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.3.1 (2025-04-25) diff --git a/gix-status/CHANGELOG.md b/gix-status/CHANGELOG.md index f81078b25fd..daa001907d6 100644 --- a/gix-status/CHANGELOG.md +++ b/gix-status/CHANGELOG.md @@ -5,13 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - if `core.symlinks=false`, don't misclassify actual symlinks as files. + Thus, prefer the actual observation over the stored and maybe incorrect filesystem settings. + This avoids false-positives when checking for changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2016 from GitoxideLabs/improvements ([`7ae3797`](https://github.com/GitoxideLabs/gitoxide/commit/7ae3797f19cf2dd3bc3e02a6437643e5f50ed338)) + - If `core.symlinks=false`, don't misclassify actual symlinks as files. ([`376ed0c`](https://github.com/GitoxideLabs/gitoxide/commit/376ed0cb602e4df457b0b6c87fe16af027bdff48)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.19.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.19.0 (2025-04-25) diff --git a/gix-submodule/CHANGELOG.md b/gix-submodule/CHANGELOG.md index 5fbb2691be5..345d4902b7d 100644 --- a/gix-submodule/CHANGELOG.md +++ b/gix-submodule/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) + - Adapt to changes in gix_features::walkdir_sorted_new ([`a2741da`](https://github.com/GitoxideLabs/gitoxide/commit/a2741da85fe04907f8773a99813e3802333b402d)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.19.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.19.0 (2025-04-25) diff --git a/gix-tempfile/CHANGELOG.md b/gix-tempfile/CHANGELOG.md index 61a5589842d..4fef671571d 100644 --- a/gix-tempfile/CHANGELOG.md +++ b/gix-tempfile/CHANGELOG.md @@ -5,13 +5,42 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 17.1.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +51,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 17.0.1 (2025-04-25) diff --git a/gix-trace/CHANGELOG.md b/gix-trace/CHANGELOG.md index c5198d21303..79d4215311f 100644 --- a/gix-trace/CHANGELOG.md +++ b/gix-trace/CHANGELOG.md @@ -5,6 +5,30 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #1778 from GitoxideLabs/new-release ([`8df0db2`](https://github.com/GitoxideLabs/gitoxide/commit/8df0db2f8fe1832a5efd86d6aba6fb12c4c855de)) +
+ ## 0.1.12 (2025-01-18) @@ -19,7 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 4 commits contributed to the release. + - 5 commits contributed to the release. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -30,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-utils v0.1.14, gix-actor v0.33.2, gix-hash v0.16.0, gix-trace v0.1.12, gix-features v0.40.0, gix-hashtable v0.7.0, gix-path v0.10.14, gix-validate v0.9.3, gix-object v0.47.0, gix-glob v0.18.0, gix-quote v0.4.15, gix-attributes v0.24.0, gix-command v0.4.1, gix-packetline-blocking v0.18.2, gix-filter v0.17.0, gix-fs v0.13.0, gix-chunk v0.4.11, gix-commitgraph v0.26.0, gix-revwalk v0.18.0, gix-traverse v0.44.0, gix-worktree-stream v0.19.0, gix-archive v0.19.0, gix-bitmap v0.2.14, gix-tempfile v16.0.0, gix-lock v16.0.0, gix-index v0.38.0, gix-config-value v0.14.11, gix-pathspec v0.9.0, gix-ignore v0.13.0, gix-worktree v0.39.0, gix-diff v0.50.0, gix-blame v0.0.0, gix-ref v0.50.0, gix-sec v0.10.11, gix-config v0.43.0, gix-prompt v0.9.1, gix-url v0.29.0, gix-credentials v0.27.0, gix-discover v0.38.0, gix-dir v0.12.0, gix-mailmap v0.25.2, gix-revision v0.32.0, gix-merge v0.3.0, gix-negotiate v0.18.0, gix-pack v0.57.0, gix-odb v0.67.0, gix-refspec v0.28.0, gix-shallow v0.2.0, gix-packetline v0.18.3, gix-transport v0.45.0, gix-protocol v0.48.0, gix-status v0.17.0, gix-submodule v0.17.0, gix-worktree-state v0.17.0, gix v0.70.0, gix-fsck v0.9.0, gitoxide-core v0.45.0, gitoxide v0.41.0, safety bump 42 crates ([`dea106a`](https://github.com/GitoxideLabs/gitoxide/commit/dea106a8c4fecc1f0a8f891a2691ad9c63964d25)) - Update all changelogs prior to release ([`1f6390c`](https://github.com/GitoxideLabs/gitoxide/commit/1f6390c53ba68ce203ae59eb3545e2631dd8a106)) - Merge pull request #1762 from GitoxideLabs/fix-1759 ([`7ec21bb`](https://github.com/GitoxideLabs/gitoxide/commit/7ec21bb96ce05b29dde74b2efdf22b6e43189aab)) - Bump `rust-version` to 1.70 ([`17835bc`](https://github.com/GitoxideLabs/gitoxide/commit/17835bccb066bbc47cc137e8ec5d9fe7d5665af0)) diff --git a/gix-transport/CHANGELOG.md b/gix-transport/CHANGELOG.md index 32ce7d3f4ad..4b7355324e0 100644 --- a/gix-transport/CHANGELOG.md +++ b/gix-transport/CHANGELOG.md @@ -5,13 +5,54 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 13 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #1999 from GitoxideLabs/credential-helper-protocol-fix ([`8d30ab1`](https://github.com/GitoxideLabs/gitoxide/commit/8d30ab1260fa69468b66d6df3297bb2b43530b93)) + - Adapt to changes in `gix-sec` ([`6880175`](https://github.com/GitoxideLabs/gitoxide/commit/6880175ab1bb70af39d18919cb8bfdc1df32b46f)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Thanks clippy ([`dbf65c9`](https://github.com/GitoxideLabs/gitoxide/commit/dbf65c95644e6a134e7f9b75e7871479720b4deb)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.47.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +63,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.46.1 (2025-04-25) diff --git a/gix-traverse/CHANGELOG.md b/gix-traverse/CHANGELOG.md index 80f60db630d..b0d8163f9b7 100644 --- a/gix-traverse/CHANGELOG.md +++ b/gix-traverse/CHANGELOG.md @@ -5,6 +5,38 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add `commit::Simple::hide()` to hide a given set of tips. + That means, these tips and all their ancestors will be hidden from + the traversal. + +### Commit Statistics + + + + - 6 commits contributed to the release over the course of 65 calendar days. + - 65 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2037 from GitoxideLabs/hide ([`92febae`](https://github.com/GitoxideLabs/gitoxide/commit/92febae025165c55e596d58511b1634fb6580b9c)) + - Improve traversal performance when hidden tips are used. ([`219655f`](https://github.com/GitoxideLabs/gitoxide/commit/219655fb0001b4e88a56fdcaebed1679ff6e7118)) + - Add `commit::Simple::hide()` to hide a given set of tips. ([`1b08fd9`](https://github.com/GitoxideLabs/gitoxide/commit/1b08fd937056d0a674b1d4bba40ad3098f54ffbf)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) +
+ ## 0.46.2 (2025-05-10) ### New Features @@ -15,7 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 14 calendar days. + - 8 commits contributed to the release over the course of 14 calendar days. - 14 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Prepare changelogs prior to release of `gix-index` ([`bfc4880`](https://github.com/GitoxideLabs/gitoxide/commit/bfc48801bf3ed39cdf7ec02e01aa3cfb6181705f)) - Merge pull request #1977 from GitoxideLabs/dependabot/cargo/cargo-811d7b929d ([`800738a`](https://github.com/GitoxideLabs/gitoxide/commit/800738a37f3d33926a427edfa294423bbe3f2b66)) - Bump the cargo group with 12 updates ([`4408166`](https://github.com/GitoxideLabs/gitoxide/commit/4408166bf56197a67419277a4ef8feeba9060fee)) diff --git a/gix-url/CHANGELOG.md b/gix-url/CHANGELOG.md index c7bf2981b14..23937a1cfa6 100644 --- a/gix-url/CHANGELOG.md +++ b/gix-url/CHANGELOG.md @@ -5,13 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### Bug Fixes + + - username in scp-like url is no longer percent-encoded + Since Git doesn't percent-decode characters in scp-like URL, we shouldn't encode + username at all. + +### Commit Statistics + + + + - 6 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#2056](https://github.com/GitoxideLabs/gitoxide/issues/2056) + +### Commit Details + + + +
view details + + * **[#2056](https://github.com/GitoxideLabs/gitoxide/issues/2056)** + - Username in scp-like url is no longer percent-encoded ([`04bc4a8`](https://github.com/GitoxideLabs/gitoxide/commit/04bc4a81614146f56f341e15b459dfc1a880bd45)) + * **Uncategorized** + - Merge pull request #2060 from yuja/push-urolxnurwtsn ([`68d761c`](https://github.com/GitoxideLabs/gitoxide/commit/68d761cdc87a46b72028153e096f1a22012239bc)) + - Add baseline tests for `_` and `@` in username ([`212b618`](https://github.com/GitoxideLabs/gitoxide/commit/212b618c5f99cc75ed612431669dcc2ec4c49a5e)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.31.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.30.1 (2025-04-25) diff --git a/gix-worktree-state/CHANGELOG.md b/gix-worktree-state/CHANGELOG.md index 132e7dd03f0..9d91682cd2c 100644 --- a/gix-worktree-state/CHANGELOG.md +++ b/gix-worktree-state/CHANGELOG.md @@ -5,13 +5,40 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.19.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +49,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.18.1 (2025-04-25) diff --git a/gix-worktree-stream/CHANGELOG.md b/gix-worktree-stream/CHANGELOG.md index 9fbb3f99f18..cc95deca803 100644 --- a/gix-worktree-stream/CHANGELOG.md +++ b/gix-worktree-stream/CHANGELOG.md @@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 59 calendar days. + - 59 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) +
+ ## 0.21.2 (2025-05-16) A maintenance release without user-facing changes. @@ -13,7 +38,7 @@ A maintenance release without user-facing changes. - - 4 commits contributed to the release over the course of 20 calendar days. + - 5 commits contributed to the release over the course of 20 calendar days. - 20 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +50,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Update changelogs prior to release ([`31b86ee`](https://github.com/GitoxideLabs/gitoxide/commit/31b86ee6774ad6762f941aa0e8377e709bd41f5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) diff --git a/gix-worktree/CHANGELOG.md b/gix-worktree/CHANGELOG.md index c65a15f352f..335d33328ed 100644 --- a/gix-worktree/CHANGELOG.md +++ b/gix-worktree/CHANGELOG.md @@ -5,13 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features (BREAKING) + + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. + That way it can support settings and other state that affect parsing. + This affects various crates which are all marked as breaking now. + +### Commit Statistics + + + + - 7 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.41.0 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +55,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.40.1 (2025-04-25) diff --git a/gix/CHANGELOG.md b/gix/CHANGELOG.md index ff4a1dfc594..1371d56b49a 100644 --- a/gix/CHANGELOG.md +++ b/gix/CHANGELOG.md @@ -5,13 +5,125 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +### New Features + + - add `repo.references().pseudo()` for traversing refs like `HEAD` and `FETCH_HEAD`. + - add `Repository::committer_or_set_generic_fallback()`. + That way one can always obtain a committer, even though it might + not represent the entity actually committing. + - add `revision::walk::Platform::hide()`. + This finally makes safe traversals possible and is what most people would want to use + instead of `boundary()`. + - add `gitoxide.parsePrecious` configuration key to opt-in to precious file parsing. + - add `Repository::is_empty()` to emulate the similar `git2` API + - add `Repository::merge_bases_many()` for simplified retrieval of multiple mergebases. + - add `tree::EntryRef::to_owned()`. + That way it's in a more reasonable spot as sibling to `Entry` and it's clearer how to convert noe into the other. + - add `EntryRef::kind()` as shortcut for `EntryRef::mode().kind()`. + +### Bug Fixes + + - don't panic if `remote::Connection::ref_map()` doesn't finish the handshake + - `Repository::branch_remote_ref_name()` won't fail on short names anymore. + Instead, these partial names are turned into branch names, which seems more + in line with what Git can do. + - `strict_config` in conjunction with `GIT_WORK_TREE` no longer triggers an error. + +### Other + + - Fixed no_locations options for diffing + +### Bug Fixes (BREAKING) + + - allow querying `Repository::submodules()` in an unborn repository. + It's a breaking change merely because the error type changed. + +### Commit Statistics + + + + - 51 commits contributed to the release over the course of 79 calendar days. + - 79 days passed between releases. + - 13 commits were understood as [conventional](https://www.conventionalcommits.org). + - 2 unique issues were worked on: [#1985](https://github.com/GitoxideLabs/gitoxide/issues/1985), [#2055](https://github.com/GitoxideLabs/gitoxide/issues/2055) + +### Thanks Clippy + + + +[Clippy](https://github.com/rust-lang/rust-clippy) helped 1 time to make code idiomatic. + +### Commit Details + + + +
view details + + * **[#1985](https://github.com/GitoxideLabs/gitoxide/issues/1985)** + - `strict_config` in conjunction with `GIT_WORK_TREE` no longer triggers an error. ([`3f85bf5`](https://github.com/GitoxideLabs/gitoxide/commit/3f85bf5e97cee359264051bb64357361c7a0f33e)) + * **[#2055](https://github.com/GitoxideLabs/gitoxide/issues/2055)** + - Don't panic if `remote::Connection::ref_map()` doesn't finish the handshake ([`427274b`](https://github.com/GitoxideLabs/gitoxide/commit/427274bdf64d30e3bcd330e849ea067e359588fe)) + * **Uncategorized** + - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) + - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) + - Add `repo.references().pseudo()` for traversing refs like `HEAD` and `FETCH_HEAD`. ([`2affbab`](https://github.com/GitoxideLabs/gitoxide/commit/2affbab7491d6b4667572d4d17db864c5b703c7a)) + - Merge pull request #2071 from cruessler/add-accessors-to-change-ref ([`5335c84`](https://github.com/GitoxideLabs/gitoxide/commit/5335c84a68739adc5a7db31220037c83b7be2429)) + - Adapt to changes in `gix-diff` ([`a0cef8b`](https://github.com/GitoxideLabs/gitoxide/commit/a0cef8bd5351acd334459b115c139a9c75e41f55)) + - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) + - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) + - Merge pull request #2065 from cruessler/add-asset-dir-to-blame-copy-royal ([`3f2be40`](https://github.com/GitoxideLabs/gitoxide/commit/3f2be402e20f7642f89721a6a7b9ce7e833dfce7)) + - Fix CI by not using `-t bad` ([`73a30f8`](https://github.com/GitoxideLabs/gitoxide/commit/73a30f8a91fcf5db1244a9a5388e05f4349b0c2e)) + - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) + - Merge pull request #2057 from GitoxideLabs/improvements ([`e8b7a4e`](https://github.com/GitoxideLabs/gitoxide/commit/e8b7a4e9a0d94236af58e693aab2d1b981166704)) + - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) + - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) + - `Repository::branch_remote_ref_name()` won't fail on short names anymore. ([`a75b4a2`](https://github.com/GitoxideLabs/gitoxide/commit/a75b4a2bc0cc602da336421ebcfda11dd36545b7)) + - Merge pull request #2048 from ralphmodales/fetch-without-commiter-config ([`5cf6d05`](https://github.com/GitoxideLabs/gitoxide/commit/5cf6d05e41bf0bf9077be80e158fabc2126d7c7b)) + - Add `Repository::committer_or_set_generic_fallback()`. ([`d7db360`](https://github.com/GitoxideLabs/gitoxide/commit/d7db360d5b42ec9d2b4d9977f7b7bee0f6cc4d58)) + - Add committer fallback for fetch ([`62e4bab`](https://github.com/GitoxideLabs/gitoxide/commit/62e4bab024ee1cdefe4026e35098da8fff18fb0d)) + - Merge pull request #2045 from uberroot4/main ([`298f22e`](https://github.com/GitoxideLabs/gitoxide/commit/298f22ee0086df86e1cae45bcb76cc8b9cad9102)) + - Fixed no_locations options for diffing ([`b7c1f2c`](https://github.com/GitoxideLabs/gitoxide/commit/b7c1f2c25c7485095022fec290492aa4b7c5c5a2)) + - Merge pull request #2037 from GitoxideLabs/hide ([`92febae`](https://github.com/GitoxideLabs/gitoxide/commit/92febae025165c55e596d58511b1634fb6580b9c)) + - Add `revision::walk::Platform::hide()`. ([`a9befb2`](https://github.com/GitoxideLabs/gitoxide/commit/a9befb284dc17d3656cf83859836bc221a42d67e)) + - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) + - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) + - Merge pull request #2029 from GitoxideLabs/submodule-all ([`b199c6e`](https://github.com/GitoxideLabs/gitoxide/commit/b199c6eacedad0a0617cfae83541b2e7dfd1cefd)) + - Add a test to assure `subomdule..ignore = all` is handled correctly. ([`657dec4`](https://github.com/GitoxideLabs/gitoxide/commit/657dec4f10bc6babbfa71a4506b1ff1439c06eaf)) + - Merge pull request #2026 from EliahKagan/run-ci/check-msrv-next ([`40f5a56`](https://github.com/GitoxideLabs/gitoxide/commit/40f5a56937ecdd9ecebd5e2d1f28c31d9f6b1b70)) + - Use `gix` manifest `rust-version` in all MSRV checks ([`654a8fa`](https://github.com/GitoxideLabs/gitoxide/commit/654a8fa1a84ac0b9b872aa09b4cbd3cf94157d6f)) + - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) + - Adapt to changes in `gix-ignore` and `gix-glob`, and more. ([`4ef7806`](https://github.com/GitoxideLabs/gitoxide/commit/4ef7806e62954d069861bddb06cb8c0baf47bb69)) + - Add `gitoxide.parsePrecious` configuration key to opt-in to precious file parsing. ([`85a24b3`](https://github.com/GitoxideLabs/gitoxide/commit/85a24b3a07f08bc83a3ef34c3f07ed00cdbd9fe2)) + - Merge pull request #2016 from GitoxideLabs/improvements ([`7ae3797`](https://github.com/GitoxideLabs/gitoxide/commit/7ae3797f19cf2dd3bc3e02a6437643e5f50ed338)) + - Add `Repository::is_empty()` to emulate the similar `git2` API ([`b985766`](https://github.com/GitoxideLabs/gitoxide/commit/b985766c9c9c5eb09ea4c4b17be9e380bfdad9b4)) + - Allow querying `Repository::submodules()` in an unborn repository. ([`26ae766`](https://github.com/GitoxideLabs/gitoxide/commit/26ae766b182218151ae4c3f30306b6d41bab358a)) + - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) + - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) + - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) + - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) + - Merge pull request #2000 from GitoxideLabs/improvements ([`fdfb239`](https://github.com/GitoxideLabs/gitoxide/commit/fdfb2398d09fa496b1daa8e7318acfc40a3bd3f7)) + - Add `Repository::merge_bases_many()` for simplified retrieval of multiple mergebases. ([`f687cb1`](https://github.com/GitoxideLabs/gitoxide/commit/f687cb16676dcae37db517c5d6905be08cd9395a)) + - Merge pull request #1993 from EliahKagan/run-ci/baseline ([`7a33e2a`](https://github.com/GitoxideLabs/gitoxide/commit/7a33e2a0496e3456fcda09428f37c20907a015bb)) + - Completely remove `:/` baseline skip ([`b623bf1`](https://github.com/GitoxideLabs/gitoxide/commit/b623bf1802474d92dbd0b63856c0b3b1f664e8d7)) + - Flip `:/` baseline skip from CI to local and extend ([`2400158`](https://github.com/GitoxideLabs/gitoxide/commit/2400158d6ce2ff28d428402f2d4030c04cd5f470)) + - Merge pull request #1987 from GitoxideLabs/fix-1985 ([`189d1a0`](https://github.com/GitoxideLabs/gitoxide/commit/189d1a0a8674e52e9ad2393fc296f3231e85e689)) + - Merge pull request #1975 from GitoxideLabs/improvements ([`28935a5`](https://github.com/GitoxideLabs/gitoxide/commit/28935a56ff91f1fc2c17a7d23b057cf7119144e9)) + - Add `tree::EntryRef::to_owned()`. ([`3a5068e`](https://github.com/GitoxideLabs/gitoxide/commit/3a5068eb3f9e112cf21c4c6a8bd17aa3081c5edf)) + - Merge pull request #1977 from GitoxideLabs/dependabot/cargo/cargo-811d7b929d ([`800738a`](https://github.com/GitoxideLabs/gitoxide/commit/800738a37f3d33926a427edfa294423bbe3f2b66)) + - Bump the cargo group with 12 updates ([`4408166`](https://github.com/GitoxideLabs/gitoxide/commit/4408166bf56197a67419277a4ef8feeba9060fee)) + - Add `EntryRef::kind()` as shortcut for `EntryRef::mode().kind()`. ([`3ef6b55`](https://github.com/GitoxideLabs/gitoxide/commit/3ef6b5595f6d71d27a00b178fbe356257fe4b8a5)) + - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) +
+ ## 0.72.1 (2025-04-26) ### Commit Statistics - - 1 commit contributed to the release. + - 3 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -22,7 +134,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.1, gix-utils v0.3.0, gix-actor v0.35.1, gix-validate v0.10.0, gix-path v0.10.17, gix-features v0.42.1, gix-hash v0.18.0, gix-hashtable v0.8.1, gix-object v0.49.1, gix-glob v0.20.0, gix-quote v0.6.0, gix-attributes v0.26.0, gix-command v0.6.0, gix-packetline-blocking v0.19.0, gix-filter v0.19.1, gix-fs v0.15.0, gix-commitgraph v0.28.0, gix-revwalk v0.20.1, gix-traverse v0.46.1, gix-worktree-stream v0.21.1, gix-archive v0.21.1, gix-tempfile v17.1.0, gix-lock v17.1.0, gix-index v0.40.0, gix-config-value v0.15.0, gix-pathspec v0.11.0, gix-ignore v0.15.0, gix-worktree v0.41.0, gix-diff v0.52.1, gix-blame v0.2.1, gix-ref v0.52.1, gix-sec v0.11.0, gix-config v0.45.1, gix-prompt v0.11.0, gix-url v0.31.0, gix-credentials v0.29.0, gix-discover v0.40.1, gix-dir v0.14.1, gix-mailmap v0.27.1, gix-revision v0.34.1, gix-merge v0.5.1, gix-negotiate v0.20.1, gix-pack v0.59.1, gix-odb v0.69.1, gix-refspec v0.30.1, gix-shallow v0.4.0, gix-packetline v0.19.0, gix-transport v0.47.0, gix-protocol v0.50.1, gix-status v0.19.1, gix-submodule v0.19.1, gix-worktree-state v0.19.0, gix v0.72.1, gix-fsck v0.11.1, gitoxide-core v0.47.1, gitoxide v0.44.0 ([`e104545`](https://github.com/GitoxideLabs/gitoxide/commit/e104545b78951ca882481d4a58f4425a8bc81c87)) - Bump all prior pratch levels to majors ([`5f7f805`](https://github.com/GitoxideLabs/gitoxide/commit/5f7f80570e1a5522e76ea58cccbb957249a0dffe)) + - Merge pull request #1969 from GitoxideLabs/new-release ([`631f07a`](https://github.com/GitoxideLabs/gitoxide/commit/631f07ad0c1cb93d9da42cf2c8499584fe91880a))
## 0.72.0 (2025-04-25) From 5a919c48393020d47c7034946108577dd213b80a Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 15 Jul 2025 05:30:53 +0200 Subject: [PATCH 050/296] Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates SAFETY BUMP: gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-config v0.46.0, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, gix-testtools v0.17.0 --- CHANGELOG.md | 2 +- Cargo.lock | 110 +++++++++++++-------------- Cargo.toml | 8 +- gitoxide-core/CHANGELOG.md | 5 +- gitoxide-core/Cargo.toml | 16 ++-- gix-actor/CHANGELOG.md | 5 +- gix-actor/Cargo.toml | 4 +- gix-archive/CHANGELOG.md | 5 +- gix-archive/Cargo.toml | 10 +-- gix-attributes/CHANGELOG.md | 5 +- gix-attributes/Cargo.toml | 8 +- gix-blame/CHANGELOG.md | 5 +- gix-blame/Cargo.toml | 20 ++--- gix-command/CHANGELOG.md | 5 +- gix-command/Cargo.toml | 6 +- gix-commitgraph/CHANGELOG.md | 5 +- gix-commitgraph/Cargo.toml | 4 +- gix-config-value/CHANGELOG.md | 5 +- gix-config-value/Cargo.toml | 4 +- gix-config/CHANGELOG.md | 25 +++++- gix-config/Cargo.toml | 14 ++-- gix-credentials/CHANGELOG.md | 5 +- gix-credentials/Cargo.toml | 18 ++--- gix-date/CHANGELOG.md | 5 +- gix-date/Cargo.toml | 2 +- gix-diff/CHANGELOG.md | 5 +- gix-diff/Cargo.toml | 28 +++---- gix-dir/CHANGELOG.md | 5 +- gix-dir/Cargo.toml | 20 ++--- gix-discover/CHANGELOG.md | 5 +- gix-discover/Cargo.toml | 12 +-- gix-features/CHANGELOG.md | 9 ++- gix-features/Cargo.toml | 6 +- gix-filter/CHANGELOG.md | 5 +- gix-filter/Cargo.toml | 16 ++-- gix-fs/CHANGELOG.md | 5 +- gix-fs/Cargo.toml | 6 +- gix-fsck/CHANGELOG.md | 5 +- gix-fsck/Cargo.toml | 8 +- gix-glob/CHANGELOG.md | 5 +- gix-glob/Cargo.toml | 6 +- gix-hash/CHANGELOG.md | 5 +- gix-hash/Cargo.toml | 4 +- gix-hashtable/CHANGELOG.md | 7 +- gix-hashtable/Cargo.toml | 4 +- gix-ignore/CHANGELOG.md | 5 +- gix-ignore/Cargo.toml | 8 +- gix-index/CHANGELOG.md | 5 +- gix-index/Cargo.toml | 14 ++-- gix-lock/CHANGELOG.md | 5 +- gix-lock/Cargo.toml | 4 +- gix-mailmap/CHANGELOG.md | 5 +- gix-mailmap/Cargo.toml | 6 +- gix-merge/CHANGELOG.md | 5 +- gix-merge/Cargo.toml | 28 +++---- gix-negotiate/CHANGELOG.md | 5 +- gix-negotiate/Cargo.toml | 12 +-- gix-object/CHANGELOG.md | 5 +- gix-object/Cargo.toml | 14 ++-- gix-odb/CHANGELOG.md | 5 +- gix-odb/Cargo.toml | 18 ++--- gix-pack/CHANGELOG.md | 7 +- gix-pack/Cargo.toml | 18 ++--- gix-packetline-blocking/CHANGELOG.md | 5 +- gix-packetline-blocking/Cargo.toml | 4 +- gix-packetline/CHANGELOG.md | 5 +- gix-packetline/Cargo.toml | 4 +- gix-path/CHANGELOG.md | 16 +++- gix-path/Cargo.toml | 4 +- gix-pathspec/CHANGELOG.md | 5 +- gix-pathspec/Cargo.toml | 10 +-- gix-prompt/CHANGELOG.md | 5 +- gix-prompt/Cargo.toml | 6 +- gix-protocol/CHANGELOG.md | 5 +- gix-protocol/Cargo.toml | 30 ++++---- gix-ref/CHANGELOG.md | 5 +- gix-ref/Cargo.toml | 18 ++--- gix-refspec/CHANGELOG.md | 5 +- gix-refspec/Cargo.toml | 6 +- gix-revision/CHANGELOG.md | 5 +- gix-revision/Cargo.toml | 16 ++-- gix-revwalk/CHANGELOG.md | 5 +- gix-revwalk/Cargo.toml | 12 +-- gix-sec/CHANGELOG.md | 5 +- gix-sec/Cargo.toml | 4 +- gix-shallow/CHANGELOG.md | 5 +- gix-shallow/Cargo.toml | 6 +- gix-status/CHANGELOG.md | 5 +- gix-status/Cargo.toml | 26 +++---- gix-submodule/CHANGELOG.md | 5 +- gix-submodule/Cargo.toml | 12 +-- gix-tempfile/CHANGELOG.md | 5 +- gix-tempfile/Cargo.toml | 4 +- gix-trace/CHANGELOG.md | 5 +- gix-trace/Cargo.toml | 2 +- gix-transport/CHANGELOG.md | 5 +- gix-transport/Cargo.toml | 14 ++-- gix-traverse/CHANGELOG.md | 5 +- gix-traverse/Cargo.toml | 14 ++-- gix-url/CHANGELOG.md | 5 +- gix-url/Cargo.toml | 6 +- gix-worktree-state/CHANGELOG.md | 5 +- gix-worktree-state/Cargo.toml | 20 ++--- gix-worktree-stream/CHANGELOG.md | 5 +- gix-worktree-stream/Cargo.toml | 18 ++--- gix-worktree/CHANGELOG.md | 5 +- gix-worktree/Cargo.toml | 20 ++--- gix/CHANGELOG.md | 7 +- gix/Cargo.toml | 102 ++++++++++++------------- tests/it/Cargo.toml | 2 +- tests/tools/Cargo.toml | 12 +-- 111 files changed, 613 insertions(+), 523 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70adf625851..1beae24740e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.45.0 (2025-07-15) ### New Features diff --git a/Cargo.lock b/Cargo.lock index a809a7fba01..729c8a61507 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1302,7 +1302,7 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "gitoxide" -version = "0.44.0" +version = "0.45.0" dependencies = [ "anyhow", "clap", @@ -1326,7 +1326,7 @@ dependencies = [ [[package]] name = "gitoxide-core" -version = "0.47.1" +version = "0.48.0" dependencies = [ "anyhow", "async-io", @@ -1364,7 +1364,7 @@ dependencies = [ [[package]] name = "gix" -version = "0.72.1" +version = "0.73.0" dependencies = [ "anyhow", "async-std", @@ -1438,7 +1438,7 @@ dependencies = [ [[package]] name = "gix-actor" -version = "0.35.1" +version = "0.35.2" dependencies = [ "bstr", "document-features", @@ -1455,7 +1455,7 @@ dependencies = [ [[package]] name = "gix-archive" -version = "0.21.2" +version = "0.22.0" dependencies = [ "bstr", "document-features", @@ -1478,7 +1478,7 @@ dependencies = [ [[package]] name = "gix-attributes" -version = "0.26.1" +version = "0.27.0" dependencies = [ "bstr", "document-features", @@ -1505,7 +1505,7 @@ dependencies = [ [[package]] name = "gix-blame" -version = "0.2.1" +version = "0.3.0" dependencies = [ "gix-commitgraph", "gix-date", @@ -1536,7 +1536,7 @@ dependencies = [ [[package]] name = "gix-command" -version = "0.6.1" +version = "0.6.2" dependencies = [ "bstr", "gix-path", @@ -1549,7 +1549,7 @@ dependencies = [ [[package]] name = "gix-commitgraph" -version = "0.28.0" +version = "0.29.0" dependencies = [ "bstr", "document-features", @@ -1564,7 +1564,7 @@ dependencies = [ [[package]] name = "gix-config" -version = "0.45.1" +version = "0.46.0" dependencies = [ "bstr", "criterion", @@ -1601,7 +1601,7 @@ dependencies = [ [[package]] name = "gix-config-value" -version = "0.15.0" +version = "0.15.1" dependencies = [ "bitflags 2.9.1", "bstr", @@ -1614,7 +1614,7 @@ dependencies = [ [[package]] name = "gix-credentials" -version = "0.29.0" +version = "0.30.0" dependencies = [ "bstr", "document-features", @@ -1634,7 +1634,7 @@ dependencies = [ [[package]] name = "gix-date" -version = "0.10.2" +version = "0.10.3" dependencies = [ "bstr", "document-features", @@ -1651,7 +1651,7 @@ dependencies = [ [[package]] name = "gix-diff" -version = "0.52.1" +version = "0.53.0" dependencies = [ "bstr", "document-features", @@ -1696,7 +1696,7 @@ dependencies = [ [[package]] name = "gix-dir" -version = "0.14.1" +version = "0.15.0" dependencies = [ "bstr", "gix-discover", @@ -1716,7 +1716,7 @@ dependencies = [ [[package]] name = "gix-discover" -version = "0.40.1" +version = "0.41.0" dependencies = [ "bstr", "defer", @@ -1735,7 +1735,7 @@ dependencies = [ [[package]] name = "gix-features" -version = "0.42.1" +version = "0.43.0" dependencies = [ "bstr", "bytes", @@ -1761,7 +1761,7 @@ version = "0.0.0" [[package]] name = "gix-filter" -version = "0.19.2" +version = "0.20.0" dependencies = [ "bstr", "encoding_rs", @@ -1783,7 +1783,7 @@ dependencies = [ [[package]] name = "gix-fs" -version = "0.15.0" +version = "0.16.0" dependencies = [ "bstr", "crossbeam-channel", @@ -1799,7 +1799,7 @@ dependencies = [ [[package]] name = "gix-fsck" -version = "0.11.1" +version = "0.12.0" dependencies = [ "gix-hash", "gix-hashtable", @@ -1810,7 +1810,7 @@ dependencies = [ [[package]] name = "gix-glob" -version = "0.20.1" +version = "0.21.0" dependencies = [ "bitflags 2.9.1", "bstr", @@ -1823,7 +1823,7 @@ dependencies = [ [[package]] name = "gix-hash" -version = "0.18.0" +version = "0.19.0" dependencies = [ "document-features", "faster-hex", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "gix-hashtable" -version = "0.8.1" +version = "0.9.0" dependencies = [ "gix-hash", "hashbrown 0.15.4", @@ -1845,7 +1845,7 @@ dependencies = [ [[package]] name = "gix-ignore" -version = "0.15.0" +version = "0.16.0" dependencies = [ "bstr", "document-features", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "gix-index" -version = "0.40.1" +version = "0.41.0" dependencies = [ "bitflags 2.9.1", "bstr", @@ -1907,7 +1907,7 @@ version = "0.0.0" [[package]] name = "gix-lock" -version = "17.1.0" +version = "18.0.0" dependencies = [ "gix-tempfile", "gix-utils", @@ -1927,7 +1927,7 @@ dependencies = [ [[package]] name = "gix-mailmap" -version = "0.27.1" +version = "0.27.2" dependencies = [ "bstr", "document-features", @@ -1940,7 +1940,7 @@ dependencies = [ [[package]] name = "gix-merge" -version = "0.5.1" +version = "0.6.0" dependencies = [ "bstr", "document-features", @@ -1970,7 +1970,7 @@ dependencies = [ [[package]] name = "gix-negotiate" -version = "0.20.1" +version = "0.21.0" dependencies = [ "bitflags 2.9.1", "gix-commitgraph", @@ -1991,7 +1991,7 @@ version = "0.0.0" [[package]] name = "gix-object" -version = "0.49.1" +version = "0.50.0" dependencies = [ "bstr", "criterion", @@ -2017,7 +2017,7 @@ dependencies = [ [[package]] name = "gix-odb" -version = "0.69.1" +version = "0.70.0" dependencies = [ "arc-swap", "document-features", @@ -2056,7 +2056,7 @@ dependencies = [ [[package]] name = "gix-pack" -version = "0.59.1" +version = "0.60.0" dependencies = [ "clru", "document-features", @@ -2096,7 +2096,7 @@ dependencies = [ [[package]] name = "gix-packetline" -version = "0.19.0" +version = "0.19.1" dependencies = [ "async-std", "bstr", @@ -2116,7 +2116,7 @@ dependencies = [ [[package]] name = "gix-packetline-blocking" -version = "0.19.0" +version = "0.19.1" dependencies = [ "bstr", "document-features", @@ -2128,7 +2128,7 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.10.18" +version = "0.10.19" dependencies = [ "bstr", "gix-testtools", @@ -2145,7 +2145,7 @@ dependencies = [ [[package]] name = "gix-pathspec" -version = "0.11.0" +version = "0.12.0" dependencies = [ "bitflags 2.9.1", "bstr", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "gix-prompt" -version = "0.11.0" +version = "0.11.1" dependencies = [ "expectrl", "gix-command", @@ -2175,7 +2175,7 @@ dependencies = [ [[package]] name = "gix-protocol" -version = "0.50.1" +version = "0.51.0" dependencies = [ "async-std", "async-trait", @@ -2219,7 +2219,7 @@ version = "0.0.0" [[package]] name = "gix-ref" -version = "0.52.1" +version = "0.53.0" dependencies = [ "document-features", "gix-actor", @@ -2261,7 +2261,7 @@ dependencies = [ [[package]] name = "gix-refspec" -version = "0.30.1" +version = "0.31.0" dependencies = [ "bstr", "gix-hash", @@ -2274,7 +2274,7 @@ dependencies = [ [[package]] name = "gix-revision" -version = "0.34.1" +version = "0.35.0" dependencies = [ "bitflags 2.9.1", "bstr", @@ -2295,7 +2295,7 @@ dependencies = [ [[package]] name = "gix-revwalk" -version = "0.20.1" +version = "0.21.0" dependencies = [ "gix-commitgraph", "gix-date", @@ -2309,7 +2309,7 @@ dependencies = [ [[package]] name = "gix-sec" -version = "0.11.0" +version = "0.12.0" dependencies = [ "bitflags 2.9.1", "document-features", @@ -2326,7 +2326,7 @@ version = "0.0.0" [[package]] name = "gix-shallow" -version = "0.4.0" +version = "0.5.0" dependencies = [ "bstr", "gix-hash", @@ -2337,7 +2337,7 @@ dependencies = [ [[package]] name = "gix-status" -version = "0.19.1" +version = "0.20.0" dependencies = [ "bstr", "document-features", @@ -2382,7 +2382,7 @@ dependencies = [ [[package]] name = "gix-submodule" -version = "0.19.1" +version = "0.20.0" dependencies = [ "bstr", "gix-config", @@ -2397,7 +2397,7 @@ dependencies = [ [[package]] name = "gix-tempfile" -version = "17.1.0" +version = "18.0.0" dependencies = [ "dashmap", "document-features", @@ -2412,7 +2412,7 @@ dependencies = [ [[package]] name = "gix-testtools" -version = "0.16.1" +version = "0.17.0" dependencies = [ "bstr", "crc", @@ -2441,7 +2441,7 @@ version = "0.0.0" [[package]] name = "gix-trace" -version = "0.1.12" +version = "0.1.13" dependencies = [ "document-features", "tracing-core", @@ -2449,7 +2449,7 @@ dependencies = [ [[package]] name = "gix-transport" -version = "0.47.0" +version = "0.48.0" dependencies = [ "async-std", "async-trait", @@ -2478,7 +2478,7 @@ dependencies = [ [[package]] name = "gix-traverse" -version = "0.46.2" +version = "0.47.0" dependencies = [ "bitflags 2.9.1", "gix-commitgraph", @@ -2511,7 +2511,7 @@ version = "0.0.0" [[package]] name = "gix-url" -version = "0.31.0" +version = "0.32.0" dependencies = [ "assert_matches", "bstr", @@ -2545,7 +2545,7 @@ dependencies = [ [[package]] name = "gix-worktree" -version = "0.41.0" +version = "0.42.0" dependencies = [ "bstr", "document-features", @@ -2564,7 +2564,7 @@ dependencies = [ [[package]] name = "gix-worktree-state" -version = "0.19.0" +version = "0.20.0" dependencies = [ "bstr", "gix-features", @@ -2601,7 +2601,7 @@ dependencies = [ [[package]] name = "gix-worktree-stream" -version = "0.21.2" +version = "0.22.0" dependencies = [ "gix-attributes", "gix-features", diff --git a/Cargo.toml b/Cargo.toml index a9e1f0ae63a..913f727b4bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,7 +7,7 @@ repository = "https://github.com/GitoxideLabs/gitoxide" authors = ["Sebastian Thiel "] edition = "2021" license = "MIT OR Apache-2.0" -version = "0.44.0" +version = "0.45.0" rust-version = "1.74" default-run = "gix" include = ["src/**/*", "/build.rs", "LICENSE-*", "README.md"] @@ -151,9 +151,9 @@ gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"] [dependencies] anyhow = "1.0.98" -gitoxide-core = { version = "^0.47.1", path = "gitoxide-core" } -gix-features = { version = "^0.42.1", path = "gix-features" } -gix = { version = "^0.72.1", path = "gix", default-features = false } +gitoxide-core = { version = "^0.48.0", path = "gitoxide-core" } +gix-features = { version = "^0.43.0", path = "gix-features" } +gix = { version = "^0.73.0", path = "gix", default-features = false } clap = { version = "4.5.40", features = ["derive", "cargo"] } clap_complete = "4.5.54" diff --git a/gitoxide-core/CHANGELOG.md b/gitoxide-core/CHANGELOG.md index 3aef71c62f5..00679072d60 100644 --- a/gitoxide-core/CHANGELOG.md +++ b/gitoxide-core/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.48.0 (2025-07-15) ### New Features @@ -23,7 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 25 commits contributed to the release over the course of 79 calendar days. + - 26 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 4 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -41,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - `gix submodule list` now prints the submodule path in debug mode ([`a8b5751`](https://github.com/GitoxideLabs/gitoxide/commit/a8b5751369234b29199f035b98d4fb36183fced7)) - Merge pull request #2073 from cruessler/add-tag-list ([`c7af04d`](https://github.com/GitoxideLabs/gitoxide/commit/c7af04db9b6bb1204e0f4c436d1db8f48a491e86)) - Refactor ([`750ae9b`](https://github.com/GitoxideLabs/gitoxide/commit/750ae9bc3cf72c1d9a358307e423523324eb25fb)) diff --git a/gitoxide-core/Cargo.toml b/gitoxide-core/Cargo.toml index 8769ace145a..82d80486002 100644 --- a/gitoxide-core/Cargo.toml +++ b/gitoxide-core/Cargo.toml @@ -4,7 +4,7 @@ lints.workspace = true name = "gitoxide-core" description = "The library implementing all capabilities of the gitoxide CLI" repository = "https://github.com/GitoxideLabs/gitoxide" -version = "0.47.1" +version = "0.48.0" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" edition = "2021" @@ -49,12 +49,12 @@ serde = ["gix/serde", "dep:serde_json", "dep:serde", "bytesize/serde"] [dependencies] # deselect everything else (like "performance") as this should be controllable by the parent application. -gix = { version = "^0.72.1", path = "../gix", default-features = false, features = ["merge", "blob-diff", "blame", "revision", "mailmap", "excludes", "attributes", "worktree-mutation", "credentials", "interrupt", "status", "dirwalk"] } -gix-pack-for-configuration-only = { package = "gix-pack", version = "^0.59.1", path = "../gix-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static", "generate", "streaming-input"] } -gix-transport-configuration-only = { package = "gix-transport", version = "^0.47.0", path = "../gix-transport", default-features = false } -gix-archive-for-configuration-only = { package = "gix-archive", version = "^0.21.2", path = "../gix-archive", optional = true, features = ["tar", "tar_gz"] } -gix-status = { version = "^0.19.1", path = "../gix-status" } -gix-fsck = { version = "^0.11.1", path = "../gix-fsck" } +gix = { version = "^0.73.0", path = "../gix", default-features = false, features = ["merge", "blob-diff", "blame", "revision", "mailmap", "excludes", "attributes", "worktree-mutation", "credentials", "interrupt", "status", "dirwalk"] } +gix-pack-for-configuration-only = { package = "gix-pack", version = "^0.60.0", path = "../gix-pack", default-features = false, features = ["pack-cache-lru-dynamic", "pack-cache-lru-static", "generate", "streaming-input"] } +gix-transport-configuration-only = { package = "gix-transport", version = "^0.48.0", path = "../gix-transport", default-features = false } +gix-archive-for-configuration-only = { package = "gix-archive", version = "^0.22.0", path = "../gix-archive", optional = true, features = ["tar", "tar_gz"] } +gix-status = { version = "^0.20.0", path = "../gix-status" } +gix-fsck = { version = "^0.12.0", path = "../gix-fsck" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } anyhow = "1.0.98" thiserror = "2.0.0" @@ -70,7 +70,7 @@ futures-io = { version = "0.3.16", optional = true } blocking = { version = "1.0.2", optional = true } # for 'organize' functionality -gix-url = { version = "^0.31.0", path = "../gix-url", optional = true } +gix-url = { version = "^0.32.0", path = "../gix-url", optional = true } jwalk = { version = "0.8.0", optional = true } # for 'hours' diff --git a/gix-actor/CHANGELOG.md b/gix-actor/CHANGELOG.md index ec95c2b47bd..411844ce75d 100644 --- a/gix-actor/CHANGELOG.md +++ b/gix-actor/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.35.2 (2025-07-15) ### New Features @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 8 commits contributed to the release over the course of 79 calendar days. + - 9 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2038 from ilyagr/signature-doc ([`8f6ecfe`](https://github.com/GitoxideLabs/gitoxide/commit/8f6ecfe4b017fc6ed33d8932a1cb911ed0879713)) - Refactor ([`aff23d6`](https://github.com/GitoxideLabs/gitoxide/commit/aff23d65a1a44e5356fb362a857d736280d3a580)) - Gix-actor docs: document conversions between `Signature` and `SignatureRef` ([`8bebd2e`](https://github.com/GitoxideLabs/gitoxide/commit/8bebd2e84b4e9d9a31a6ff8dcd17da83534f3c95)) diff --git a/gix-actor/Cargo.toml b/gix-actor/Cargo.toml index a67f5de1575..5b63b6262cf 100644 --- a/gix-actor/Cargo.toml +++ b/gix-actor/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-actor" -version = "0.35.1" +version = "0.35.2" description = "A way to identify git actors" authors = ["Sebastian Thiel "] repository = "https://github.com/GitoxideLabs/gitoxide" @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-date/serde"] [dependencies] -gix-date = { version = "^0.10.1", path = "../gix-date" } +gix-date = { version = "^0.10.3", path = "../gix-date" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } thiserror = "2.0.0" diff --git a/gix-archive/CHANGELOG.md b/gix-archive/CHANGELOG.md index 6fefce521be..2e981bbc87e 100644 --- a/gix-archive/CHANGELOG.md +++ b/gix-archive/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.22.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 9 commits contributed to the release over the course of 59 calendar days. + - 10 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index 16fa629efe5..0bb3c1802cd 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-archive" -version = "0.21.2" +version = "0.22.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "archive generation from of a worktree stream" @@ -27,10 +27,10 @@ zip = ["dep:zip"] [dependencies] -gix-worktree-stream = { version = "^0.21.2", path = "../gix-worktree-stream" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-path = { version = "^0.10.18", path = "../gix-path", optional = true } -gix-date = { version = "^0.10.2", path = "../gix-date" } +gix-worktree-stream = { version = "^0.22.0", path = "../gix-worktree-stream" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } +gix-date = { version = "^0.10.3", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } zip = { version = "4.2.0", optional = true, default-features = false, features = ["deflate-flate2"] } diff --git a/gix-attributes/CHANGELOG.md b/gix-attributes/CHANGELOG.md index 28e8b297f58..fa1666cbce8 100644 --- a/gix-attributes/CHANGELOG.md +++ b/gix-attributes/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.27.0 (2025-07-15) ### New Features (BREAKING) @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 59 calendar days. + - 8 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) diff --git a/gix-attributes/Cargo.toml b/gix-attributes/Cargo.toml index 7b5ac5822f0..28b0e10e471 100644 --- a/gix-attributes/Cargo.toml +++ b/gix-attributes/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-attributes" -version = "0.26.1" +version = "0.27.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing .gitattributes files" @@ -19,10 +19,10 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-glob/serde", "kstring/serde"] [dependencies] -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-path = { version = "^0.10.19", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } smallvec = "1.15.1" diff --git a/gix-blame/CHANGELOG.md b/gix-blame/CHANGELOG.md index 26cf9d1e33d..b853bd54f22 100644 --- a/gix-blame/CHANGELOG.md +++ b/gix-blame/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.3.0 (2025-07-15) ### New Features (BREAKING) @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 40 commits contributed to the release over the course of 79 calendar days. + - 41 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 3 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -38,6 +38,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2066 from cruessler/add-test-for-file-added-in-two-different-branches ([`8007f1d`](https://github.com/GitoxideLabs/gitoxide/commit/8007f1d0bad357688acd1235d079bf164290cda6)) diff --git a/gix-blame/Cargo.toml b/gix-blame/Cargo.toml index ed39ae34b08..32609fcf720 100644 --- a/gix-blame/Cargo.toml +++ b/gix-blame/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-blame" -version = "0.2.1" +version = "0.3.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dedicated to implementing a 'blame' algorithm" @@ -11,15 +11,15 @@ edition = "2021" rust-version = "1.70" [dependencies] -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false, features = ["blob"] } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } -gix-traverse = { version = "^0.46.2", path = "../gix-traverse" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, features = ["blob"] } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } smallvec = "1.15.1" thiserror = "2.0.0" diff --git a/gix-command/CHANGELOG.md b/gix-command/CHANGELOG.md index 7b81fd68ff1..f4e9386bcff 100644 --- a/gix-command/CHANGELOG.md +++ b/gix-command/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.6.2 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 59 calendar days. + - 4 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-command/Cargo.toml b/gix-command/Cargo.toml index 016cf31ca25..92a392ad88c 100644 --- a/gix-command/Cargo.toml +++ b/gix-command/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-command" -version = "0.6.1" +version = "0.6.2" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project handling internal git command execution" @@ -15,8 +15,8 @@ include = ["src/lib.rs", "LICENSE-*"] doctest = false [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } +gix-path = { version = "^0.10.19", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } diff --git a/gix-commitgraph/CHANGELOG.md b/gix-commitgraph/CHANGELOG.md index 95e9dc8f290..5e6bdd762a8 100644 --- a/gix-commitgraph/CHANGELOG.md +++ b/gix-commitgraph/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.29.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 1 commit contributed to the release over the course of 79 calendar days. + - 2 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13))
diff --git a/gix-commitgraph/Cargo.toml b/gix-commitgraph/Cargo.toml index 8eff229eef5..8bb51a89b8d 100644 --- a/gix-commitgraph/Cargo.toml +++ b/gix-commitgraph/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-commitgraph" -version = "0.28.0" +version = "0.29.0" repository = "https://github.com/GitoxideLabs/gitoxide" documentation = "https://git-scm.com/docs/commit-graph" license = "MIT OR Apache-2.0" @@ -20,7 +20,7 @@ doctest = false serde = ["dep:serde", "gix-hash/serde", "bstr/serde"] [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-chunk = { version = "^0.4.11", path = "../gix-chunk" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } diff --git a/gix-config-value/CHANGELOG.md b/gix-config-value/CHANGELOG.md index 1883b8024c4..933581c6b4c 100644 --- a/gix-config-value/CHANGELOG.md +++ b/gix-config-value/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.15.1 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-config-value/Cargo.toml b/gix-config-value/Cargo.toml index ccccf115e47..32ba0ff9f30 100644 --- a/gix-config-value/Cargo.toml +++ b/gix-config-value/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-config-value" -version = "0.15.0" +version = "0.15.1" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project providing git-config value parsing" @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde"] [dependencies] -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-path = { version = "^0.10.19", path = "../gix-path" } thiserror = "2.0.0" bstr = { version = "1.12.0", default-features = false, features = ["std"] } diff --git a/gix-config/CHANGELOG.md b/gix-config/CHANGELOG.md index ae37ff9087d..4eb089694aa 100644 --- a/gix-config/CHANGELOG.md +++ b/gix-config/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.46.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 13 commits contributed to the release over the course of 79 calendar days. + - 14 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +31,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) @@ -3845,6 +3846,24 @@ This is a maintenance release without functional changes. - `len` - `from_env` - `open` + - `len` + - `from_env` + - `open` + - `len` + - `from_env` + - `open` + - `len` + - `from_env` + - `open` +- `len` +- `from_env` +- `open` +- `len` +- `from_env` +- `open` +- `len` +- `from_env` +- `open` - `len` - `from_env` - `open` @@ -4105,6 +4124,7 @@ This is a maintenance release without functional changes. `ParserFromIoError` +lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopen @@ -4122,6 +4142,7 @@ lenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfrom_envopenlenfr + ## v0.1.1 (2021-05-09) diff --git a/gix-config/Cargo.toml b/gix-config/Cargo.toml index ce9151307c2..f37ab3ed10d 100644 --- a/gix-config/Cargo.toml +++ b/gix-config/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-config" -version = "0.45.1" +version = "0.46.0" repository = "https://github.com/GitoxideLabs/gitoxide" description = "A git-config file parser and editor from the gitoxide project" license = "MIT OR Apache-2.0" @@ -19,12 +19,12 @@ autotests = false serde = ["dep:serde", "bstr/serde", "gix-sec/serde", "gix-ref/serde", "gix-glob/serde", "gix-config-value/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features" } -gix-config-value = { version = "^0.15.0", path = "../gix-config-value" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-sec = { version = "^0.11.0", path = "../gix-sec" } -gix-ref = { version = "^0.52.1", path = "../gix-ref" } -gix-glob = { version = "^0.20.1", path = "../gix-glob" } +gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-sec = { version = "^0.12.0", path = "../gix-sec" } +gix-ref = { version = "^0.53.0", path = "../gix-ref" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } winnow = { version = "0.7.10", features = ["simd"] } memchr = "2" diff --git a/gix-credentials/CHANGELOG.md b/gix-credentials/CHANGELOG.md index 479d3f08a06..93ad1367da2 100644 --- a/gix-credentials/CHANGELOG.md +++ b/gix-credentials/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.30.0 (2025-07-15) ### New Features @@ -19,7 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 9 commits contributed to the release over the course of 79 calendar days. + - 10 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 2 commits were understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998) @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998)** - Pass `password_expiry_utc` and `oauth_refresh_token` in credential helper invocations ([`3a50af5`](https://github.com/GitoxideLabs/gitoxide/commit/3a50af524ad5e13bbd08bbb96cbf0817d5e89038)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Merge pull request #1999 from GitoxideLabs/credential-helper-protocol-fix ([`8d30ab1`](https://github.com/GitoxideLabs/gitoxide/commit/8d30ab1260fa69468b66d6df3297bb2b43530b93)) diff --git a/gix-credentials/Cargo.toml b/gix-credentials/Cargo.toml index 453addbfad0..772667c262b 100644 --- a/gix-credentials/Cargo.toml +++ b/gix-credentials/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-credentials" -version = "0.29.0" +version = "0.30.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project to interact with git credentials helpers" @@ -19,14 +19,14 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-sec/serde"] [dependencies] -gix-sec = { version = "^0.11.0", path = "../gix-sec" } -gix-url = { version = "^0.31.0", path = "../gix-url" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-command = { version = "^0.6.1", path = "../gix-command" } -gix-config-value = { version = "^0.15.0", path = "../gix-config-value" } -gix-prompt = { version = "^0.11.0", path = "../gix-prompt" } -gix-date = { version = "^0.10.1", path = "../gix-date" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-sec = { version = "^0.12.0", path = "../gix-sec" } +gix-url = { version = "^0.32.0", path = "../gix-url" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-command = { version = "^0.6.2", path = "../gix-command" } +gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } +gix-prompt = { version = "^0.11.1", path = "../gix-prompt" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-date/CHANGELOG.md b/gix-date/CHANGELOG.md index 694e403c95b..3dc15cbbf78 100644 --- a/gix-date/CHANGELOG.md +++ b/gix-date/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.10.3 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 65 calendar days. + - 6 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) diff --git a/gix-date/Cargo.toml b/gix-date/Cargo.toml index 1c810711ae5..369906b80c0 100644 --- a/gix-date/Cargo.toml +++ b/gix-date/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-date" -version = "0.10.2" +version = "0.10.3" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project parsing dates the way git does" diff --git a/gix-diff/CHANGELOG.md b/gix-diff/CHANGELOG.md index dbb2ddc890e..738d1a6f4cb 100644 --- a/gix-diff/CHANGELOG.md +++ b/gix-diff/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.53.0 (2025-07-15) ### New Features @@ -31,7 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 25 commits contributed to the release over the course of 79 calendar days. + - 26 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 5 commits were understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#2011](https://github.com/GitoxideLabs/gitoxide/issues/2011) @@ -51,6 +51,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#2011](https://github.com/GitoxideLabs/gitoxide/issues/2011)** - Remove `blob::GitDiff` Sink as it doesn't work concistently. ([`4f27179`](https://github.com/GitoxideLabs/gitoxide/commit/4f271796041655d80ab0435a76281446e21ad8cd)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2071 from cruessler/add-accessors-to-change-ref ([`5335c84`](https://github.com/GitoxideLabs/gitoxide/commit/5335c84a68739adc5a7db31220037c83b7be2429)) - Merge pull request #2072 from GitoxideLabs/fix-unidiff ([`f87967d`](https://github.com/GitoxideLabs/gitoxide/commit/f87967d4983f96133d184eff9d689a333c819958)) - Reproduce unified diff issue ([`5e64298`](https://github.com/GitoxideLabs/gitoxide/commit/5e64298ba4864636779ae72e301475e9cfe01ac8)) diff --git a/gix-diff/Cargo.toml b/gix-diff/Cargo.toml index e251aa5d33e..1e81f480d20 100644 --- a/gix-diff/Cargo.toml +++ b/gix-diff/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-diff" -version = "0.52.1" +version = "0.53.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "Calculate differences between various git objects" @@ -27,19 +27,19 @@ wasm = ["dep:getrandom"] doctest = false [dependencies] -gix-index = { version = "^0.40.1", path = "../gix-index", optional = true } -gix-pathspec = { version = "^0.11.0", path = "../gix-pathspec", optional = true } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes", optional = true } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-filter = { version = "^0.19.2", path = "../gix-filter", optional = true } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"], optional = true } -gix-command = { version = "^0.6.1", path = "../gix-command", optional = true } -gix-path = { version = "^0.10.18", path = "../gix-path", optional = true } -gix-fs = { version = "^0.15.0", path = "../gix-fs", optional = true } -gix-tempfile = { version = "^17.1.0", path = "../gix-tempfile", optional = true } -gix-trace = { version = "^0.1.12", path = "../gix-trace", optional = true } -gix-traverse = { version = "^0.46.2", path = "../gix-traverse", optional = true } +gix-index = { version = "^0.41.0", path = "../gix-index", optional = true } +gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec", optional = true } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes", optional = true } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-filter = { version = "^0.20.0", path = "../gix-filter", optional = true } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"], optional = true } +gix-command = { version = "^0.6.2", path = "../gix-command", optional = true } +gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } +gix-fs = { version = "^0.16.0", path = "../gix-fs", optional = true } +gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile", optional = true } +gix-trace = { version = "^0.1.13", path = "../gix-trace", optional = true } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse", optional = true } thiserror = "2.0.0" imara-diff = { version = "0.1.8", optional = true } diff --git a/gix-dir/CHANGELOG.md b/gix-dir/CHANGELOG.md index 309b35cc0c8..cbc7ecc9252 100644 --- a/gix-dir/CHANGELOG.md +++ b/gix-dir/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.15.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) - Adapt to changes in `gix-ignore` and `gix-glob`, and more. ([`4ef7806`](https://github.com/GitoxideLabs/gitoxide/commit/4ef7806e62954d069861bddb06cb8c0baf47bb69)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-dir/Cargo.toml b/gix-dir/Cargo.toml index 86bb7178c75..358e2dccf19 100644 --- a/gix-dir/Cargo.toml +++ b/gix-dir/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-dir" -version = "0.14.1" +version = "0.15.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing with directory walks" @@ -15,15 +15,15 @@ doctest = false test = false [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } -gix-index = { version = "^0.40.1", path = "../gix-index" } -gix-discover = { version = "^0.40.1", path = "../gix-discover" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-pathspec = { version = "^0.11.0", path = "../gix-pathspec" } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-ignore = { version = "^0.15.0", path = "../gix-ignore" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } +gix-index = { version = "^0.41.0", path = "../gix-index" } +gix-discover = { version = "^0.41.0", path = "../gix-discover" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-ignore = { version = "^0.16.0", path = "../gix-ignore" } gix-utils = { version = "^0.3.0", path = "../gix-utils", features = ["bstr"] } bstr = { version = "1.12.0", default-features = false } diff --git a/gix-discover/CHANGELOG.md b/gix-discover/CHANGELOG.md index 897f623d611..75bc4faa431 100644 --- a/gix-discover/CHANGELOG.md +++ b/gix-discover/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.41.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-discover/Cargo.toml b/gix-discover/Cargo.toml index 82e91690209..fb3e7b81ce6 100644 --- a/gix-discover/Cargo.toml +++ b/gix-discover/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-discover" -version = "0.40.1" +version = "0.41.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "Discover git repositories and check if a directory is a git repository" @@ -15,11 +15,11 @@ rust-version = "1.70" doctest = false [dependencies] -gix-sec = { version = "^0.11.0", path = "../gix-sec" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-ref = { version = "^0.52.1", path = "../gix-ref" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } +gix-sec = { version = "^0.12.0", path = "../gix-sec" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-ref = { version = "^0.53.0", path = "../gix-ref" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } thiserror = "2.0.0" diff --git a/gix-features/CHANGELOG.md b/gix-features/CHANGELOG.md index b2002a47f86..4822046699f 100644 --- a/gix-features/CHANGELOG.md +++ b/gix-features/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.43.0 (2025-07-15) ### New Features (BREAKING) @@ -15,14 +15,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Example values: * 0 -> Returns only the root path with no children. - * 1 -> Returns the root path, with children. - * 2..n -> Returns the root path, children and {n}-grandchildren +* 1 -> Returns the root path, with children. +* 2..n -> Returns the root path, children and {n}-grandchildren ### Commit Statistics - - 10 commits contributed to the release over the course of 79 calendar days. + - 11 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) - Walkdir_sorted_new adds max_depth parameter ([`6c77b54`](https://github.com/GitoxideLabs/gitoxide/commit/6c77b541b476656827ee0542a650b9731ba549cf)) diff --git a/gix-features/Cargo.toml b/gix-features/Cargo.toml index e89ac4b233c..b7d6cf860ac 100644 --- a/gix-features/Cargo.toml +++ b/gix-features/Cargo.toml @@ -4,7 +4,7 @@ lints.workspace = true name = "gix-features" description = "A crate to integrate various capabilities using compile-time feature flags" repository = "https://github.com/GitoxideLabs/gitoxide" -version = "0.42.1" +version = "0.43.0" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" edition = "2021" @@ -98,10 +98,10 @@ path = "tests/pipe.rs" required-features = ["io-pipe"] [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } # for walkdir -gix-path = { version = "^0.10.17", path = "../gix-path", optional = true } +gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } gix-utils = { version = "^0.3.0", path = "../gix-utils", optional = true } # 'parallel' feature diff --git a/gix-filter/CHANGELOG.md b/gix-filter/CHANGELOG.md index c7f1ef21f37..ed9cf6a298f 100644 --- a/gix-filter/CHANGELOG.md +++ b/gix-filter/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.20.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 59 calendar days. + - 8 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-filter/Cargo.toml b/gix-filter/Cargo.toml index 3347968cfe2..404b8c879dd 100644 --- a/gix-filter/Cargo.toml +++ b/gix-filter/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-filter" -version = "0.19.2" +version = "0.20.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing git filters" @@ -15,15 +15,15 @@ include = ["src/**/*", "LICENSE-*"] doctest = false [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-command = { version = "^0.6.1", path = "../gix-command" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-command = { version = "^0.6.2", path = "../gix-command" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-packetline-blocking = { version = "^0.19.0", path = "../gix-packetline-blocking" } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-packetline-blocking = { version = "^0.19.1", path = "../gix-packetline-blocking" } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } encoding_rs = "0.8.32" bstr = { version = "1.12.0", default-features = false, features = ["std"] } diff --git a/gix-fs/CHANGELOG.md b/gix-fs/CHANGELOG.md index 015d3ce7d7d..0a15fe38424 100644 --- a/gix-fs/CHANGELOG.md +++ b/gix-fs/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.16.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) diff --git a/gix-fs/Cargo.toml b/gix-fs/Cargo.toml index 432c2ee58fb..fede567c066 100644 --- a/gix-fs/Cargo.toml +++ b/gix-fs/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-fs" -version = "0.15.0" +version = "0.16.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate providing file system specific utilities to `gitoxide`" @@ -20,8 +20,8 @@ serde = ["dep:serde"] [dependencies] bstr = "1.12.0" -gix-path = { version = "^0.10.17", path = "../gix-path" } -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["fs-read-dir"] } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["fs-read-dir"] } gix-utils = { version = "^0.3.0", path = "../gix-utils" } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } diff --git a/gix-fsck/CHANGELOG.md b/gix-fsck/CHANGELOG.md index 23293935944..8982763bce4 100644 --- a/gix-fsck/CHANGELOG.md +++ b/gix-fsck/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.12.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 1 commit contributed to the release over the course of 79 calendar days. + - 2 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13))
diff --git a/gix-fsck/Cargo.toml b/gix-fsck/Cargo.toml index cc58864459e..e9a283275ef 100644 --- a/gix-fsck/Cargo.toml +++ b/gix-fsck/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-fsck" -version = "0.11.1" +version = "0.12.0" repository = "https://github.com/GitoxideLabs/gitoxide" authors = ["Cameron Esfahani ", "Sebastian Thiel "] license = "MIT OR Apache-2.0" @@ -15,9 +15,9 @@ rust-version = "1.70" doctest = false [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } -gix-object = { version = "^0.49.1", path = "../gix-object" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } +gix-object = { version = "^0.50.0", path = "../gix-object" } [dev-dependencies] gix-odb = { path = "../gix-odb" } diff --git a/gix-glob/CHANGELOG.md b/gix-glob/CHANGELOG.md index dac004ff448..83b941d412a 100644 --- a/gix-glob/CHANGELOG.md +++ b/gix-glob/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.21.0 (2025-07-15) ### New Features (BREAKING) @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 3 commits contributed to the release over the course of 59 calendar days. + - 4 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-glob/Cargo.toml b/gix-glob/Cargo.toml index bd2972da231..9af3e476aa5 100644 --- a/gix-glob/Cargo.toml +++ b/gix-glob/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-glob" -version = "0.20.1" +version = "0.21.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing with pattern matching" @@ -19,8 +19,8 @@ doctest = false serde = ["dep:serde", "bstr/serde", "bitflags/serde"] [dependencies] -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-features = { version = "^0.42.1", path = "../gix-features" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } bitflags = "2" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-hash/CHANGELOG.md b/gix-hash/CHANGELOG.md index 928b1f18979..34f516529ec 100644 --- a/gix-hash/CHANGELOG.md +++ b/gix-hash/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.19.0 (2025-07-15) ### Bug Fixes @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) diff --git a/gix-hash/Cargo.toml b/gix-hash/Cargo.toml index 018e9fddc25..bb6da2f0e3b 100644 --- a/gix-hash/Cargo.toml +++ b/gix-hash/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-hash" -version = "0.18.0" +version = "0.19.0" description = "Borrowed and owned git hash digests used to identify git objects" authors = ["Sebastian Thiel "] repository = "https://github.com/GitoxideLabs/gitoxide" @@ -20,7 +20,7 @@ test = false serde = ["dep:serde", "faster-hex/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["progress"] } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["progress"] } thiserror = "2.0.0" faster-hex = { version = "0.10.0", default-features = false, features = ["std"] } diff --git a/gix-hashtable/CHANGELOG.md b/gix-hashtable/CHANGELOG.md index 3a917cbad0a..fcaeb5b5352 100644 --- a/gix-hashtable/CHANGELOG.md +++ b/gix-hashtable/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.9.0 (2025-07-15) + + ### Chore (BREAKING) @@ -16,7 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -28,6 +30,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2047 from blinxen/update-hashbrown ([`00bd1fa`](https://github.com/GitoxideLabs/gitoxide/commit/00bd1fac8753a98fd0d4cdd8cf239b34e62b7d80)) - Update hashbrown to the latest version ([`c1d0868`](https://github.com/GitoxideLabs/gitoxide/commit/c1d0868c331c2f8ca8b22d22ff68744926a907b3)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) diff --git a/gix-hashtable/Cargo.toml b/gix-hashtable/Cargo.toml index 3b84f51cac2..61b8663c8ef 100644 --- a/gix-hashtable/Cargo.toml +++ b/gix-hashtable/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-hashtable" -version = "0.8.1" +version = "0.9.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate that provides hashtable based data structures optimized to utilize ObjectId keys" @@ -17,4 +17,4 @@ doctest = false [dependencies] parking_lot = "0.12.4" hashbrown = { version = "0.15.4", default-features = false, features = ["inline-more"] } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } diff --git a/gix-ignore/CHANGELOG.md b/gix-ignore/CHANGELOG.md index daf8dcca5fb..d85e93d77b5 100644 --- a/gix-ignore/CHANGELOG.md +++ b/gix-ignore/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.16.0 (2025-07-15) ### New Features (BREAKING) @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-ignore/Cargo.toml b/gix-ignore/Cargo.toml index b3d445f6a46..f50b836c323 100644 --- a/gix-ignore/Cargo.toml +++ b/gix-ignore/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-ignore" -version = "0.15.0" +version = "0.16.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing .gitignore files" @@ -19,9 +19,9 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-glob/serde"] [dependencies] -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } unicode-bom = { version = "2.0.3" } diff --git a/gix-index/CHANGELOG.md b/gix-index/CHANGELOG.md index 23830871d2b..800d747b6aa 100644 --- a/gix-index/CHANGELOG.md +++ b/gix-index/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.41.0 (2025-07-15) ### Bug Fixes @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 65 calendar days. + - 8 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2047 from blinxen/update-hashbrown ([`00bd1fa`](https://github.com/GitoxideLabs/gitoxide/commit/00bd1fac8753a98fd0d4cdd8cf239b34e62b7d80)) diff --git a/gix-index/Cargo.toml b/gix-index/Cargo.toml index c5a00c68c07..e3b9038621b 100644 --- a/gix-index/Cargo.toml +++ b/gix-index/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-index" -version = "0.40.1" +version = "0.41.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A work-in-progress crate of the gitoxide project dedicated implementing the git index file" @@ -22,16 +22,16 @@ test = true serde = ["dep:serde", "smallvec/serde", "gix-hash/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = [ +gix-features = { version = "^0.43.0", path = "../gix-features", features = [ "progress", ] } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-bitmap = { version = "^0.2.14", path = "../gix-bitmap" } -gix-object = { version = "^0.49.1", path = "../gix-object" } +gix-object = { version = "^0.50.0", path = "../gix-object" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-traverse = { version = "^0.46.2", path = "../gix-traverse" } -gix-lock = { version = "^17.1.0", path = "../gix-lock" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } +gix-lock = { version = "^18.0.0", path = "../gix-lock" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } hashbrown = "0.15.4" diff --git a/gix-lock/CHANGELOG.md b/gix-lock/CHANGELOG.md index 5ca950e6aba..c072c944fda 100644 --- a/gix-lock/CHANGELOG.md +++ b/gix-lock/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 18.0.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-lock/Cargo.toml b/gix-lock/Cargo.toml index 545e0ea51b0..855a17c83f1 100644 --- a/gix-lock/Cargo.toml +++ b/gix-lock/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-lock" -version = "17.1.0" +version = "18.0.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A git-style lock-file implementation" @@ -17,7 +17,7 @@ test = true [dependencies] gix-utils = { version = "^0.3.0", default-features = false, path = "../gix-utils" } -gix-tempfile = { version = "^17.1.0", default-features = false, path = "../gix-tempfile" } +gix-tempfile = { version = "^18.0.0", default-features = false, path = "../gix-tempfile" } thiserror = "2.0.0" [dev-dependencies] diff --git a/gix-mailmap/CHANGELOG.md b/gix-mailmap/CHANGELOG.md index c22ed8c3a08..fca0a330606 100644 --- a/gix-mailmap/CHANGELOG.md +++ b/gix-mailmap/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.27.2 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-mailmap/Cargo.toml b/gix-mailmap/Cargo.toml index 13da1780038..d7e373f02e0 100644 --- a/gix-mailmap/Cargo.toml +++ b/gix-mailmap/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-mailmap" -version = "0.27.1" +version = "0.27.2" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project for parsing mailmap files" @@ -19,8 +19,8 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-actor/serde"] [dependencies] -gix-actor = { version = "^0.35.1", path = "../gix-actor" } -gix-date = { version = "^0.10.2", path = "../gix-date" } +gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-date = { version = "^0.10.3", path = "../gix-date" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-merge/CHANGELOG.md b/gix-merge/CHANGELOG.md index b482813c44b..d108d71b195 100644 --- a/gix-merge/CHANGELOG.md +++ b/gix-merge/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.6.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2011 from blinxen/main ([`fd49eee`](https://github.com/GitoxideLabs/gitoxide/commit/fd49eeeb850ea3c3956ca15be2bf4e04a3d319ad)) - Update `imara-diff` to the latest version. ([`732adb8`](https://github.com/GitoxideLabs/gitoxide/commit/732adb87c90283bd8f8fce6d633eacc25e10b353)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-merge/Cargo.toml b/gix-merge/Cargo.toml index 2a0faaa6431..bccbee29cb6 100644 --- a/gix-merge/Cargo.toml +++ b/gix-merge/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "gix-merge" -version = "0.5.1" +version = "0.6.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing merge algorithms" @@ -19,20 +19,20 @@ doctest = false serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-filter = { version = "^0.19.2", path = "../gix-filter" } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } -gix-command = { version = "^0.6.1", path = "../gix-command" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-tempfile = { version = "^17.1.0", path = "../gix-tempfile" } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-filter = { version = "^0.20.0", path = "../gix-filter" } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } +gix-command = { version = "^0.6.2", path = "../gix-command" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } -gix-revision = { version = "^0.34.1", path = "../gix-revision", default-features = false, features = ["merge_base"] } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } -gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false, features = ["blob"] } -gix-index = { version = "^0.40.1", path = "../gix-index" } +gix-revision = { version = "^0.35.0", path = "../gix-revision", default-features = false, features = ["merge_base"] } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } +gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, features = ["blob"] } +gix-index = { version = "^0.41.0", path = "../gix-index" } thiserror = "2.0.0" imara-diff = { version = "0.1.8" } diff --git a/gix-negotiate/CHANGELOG.md b/gix-negotiate/CHANGELOG.md index 725ca1fd899..875d132eeae 100644 --- a/gix-negotiate/CHANGELOG.md +++ b/gix-negotiate/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.21.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-negotiate/Cargo.toml b/gix-negotiate/Cargo.toml index 7a409c7d05d..c9b7dfff7ac 100644 --- a/gix-negotiate/Cargo.toml +++ b/gix-negotiate/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-negotiate" -version = "0.20.1" +version = "0.21.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing negotiation algorithms" @@ -16,11 +16,11 @@ doctest = false test = false [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } thiserror = "2.0.0" smallvec = "1.15.1" bitflags = "2" diff --git a/gix-object/CHANGELOG.md b/gix-object/CHANGELOG.md index 45a29823d15..c3aba9dbfcb 100644 --- a/gix-object/CHANGELOG.md +++ b/gix-object/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.50.0 (2025-07-15) ### New Features @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 11 commits contributed to the release over the course of 79 calendar days. + - 12 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +27,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index 0d9b89fbe64..a53028e1342 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-object" -version = "0.49.1" +version = "0.50.0" description = "Immutable and mutable git objects with decoding and encoding support" authors = ["Sebastian Thiel "] repository = "https://github.com/GitoxideLabs/gitoxide" @@ -41,15 +41,15 @@ serde = [ verbose-object-parsing-errors = ["winnow/std"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = [ +gix-features = { version = "^0.43.0", path = "../gix-features", features = [ "progress", ] } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-actor = { version = "^0.35.1", path = "../gix-actor" } -gix-date = { version = "^0.10.1", path = "../gix-date" } -gix-path = { version = "^0.10.17", path = "../gix-path" } +gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-path = { version = "^0.10.19", path = "../gix-path" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } itoa = "1.0.1" diff --git a/gix-odb/CHANGELOG.md b/gix-odb/CHANGELOG.md index 044b93b83d7..b1c088c5efd 100644 --- a/gix-odb/CHANGELOG.md +++ b/gix-odb/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.70.0 (2025-07-15) ### Bug Fixes @@ -16,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 10 commits contributed to the release over the course of 79 calendar days. + - 11 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Improve error message for when there is too many packs. ([`a773854`](https://github.com/GitoxideLabs/gitoxide/commit/a773854a798bb2315dcce347d86b856b8fac8dc9)) - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) - Thanks clippy ([`554ce13`](https://github.com/GitoxideLabs/gitoxide/commit/554ce134bc4b514b52a935f17f57f76ebf23ab97)) diff --git a/gix-odb/Cargo.toml b/gix-odb/Cargo.toml index 8dca99eecf0..8cc5e0df69a 100644 --- a/gix-odb/Cargo.toml +++ b/gix-odb/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-odb" -version = "0.69.1" +version = "0.70.0" repository = "https://github.com/GitoxideLabs/gitoxide" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" @@ -20,15 +20,15 @@ doctest = false serde = ["dep:serde", "gix-hash/serde", "gix-object/serde", "gix-pack/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["walkdir", "zlib", "crc32"] } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["walkdir", "zlib", "crc32"] } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-path = { version = "^0.10.19", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-pack = { version = "^0.59.1", path = "../gix-pack", default-features = false } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-pack = { version = "^0.60.0", path = "../gix-pack", default-features = false } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } tempfile = "3.20.0" diff --git a/gix-pack/CHANGELOG.md b/gix-pack/CHANGELOG.md index 1447f8803a8..85c4bd33229 100644 --- a/gix-pack/CHANGELOG.md +++ b/gix-pack/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.60.0 (2025-07-15) + + ### Other @@ -15,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 12 commits contributed to the release over the course of 79 calendar days. + - 13 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-pack/Cargo.toml b/gix-pack/Cargo.toml index 1ae3c6edbd1..23bfb66652b 100644 --- a/gix-pack/Cargo.toml +++ b/gix-pack/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-pack" -version = "0.59.1" +version = "0.60.0" repository = "https://github.com/GitoxideLabs/gitoxide" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" @@ -34,16 +34,16 @@ serde = ["dep:serde", "gix-object/serde"] wasm = ["gix-diff?/wasm"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["crc32", "progress", "zlib"] } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["crc32", "progress", "zlib"] } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-chunk = { version = "^0.4.11", path = "../gix-chunk" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable", optional = true } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true } # for streaming of packs (input, output) -gix-traverse = { version = "^0.46.2", path = "../gix-traverse", optional = true } -gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false, optional = true } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse", optional = true } +gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, optional = true } memmap2 = "0.9.0" smallvec = "1.15.1" @@ -60,7 +60,7 @@ document-features = { version = "0.2.0", optional = true } [target.'cfg(not(target_arch = "wasm32"))'.dependencies] -gix-tempfile = { version = "^17.1.0", default-features = false, path = "../gix-tempfile", optional = true } +gix-tempfile = { version = "^18.0.0", default-features = false, path = "../gix-tempfile", optional = true } [dev-dependencies] gix-testtools = { path = "../tests/tools" } diff --git a/gix-packetline-blocking/CHANGELOG.md b/gix-packetline-blocking/CHANGELOG.md index adf5a5e4c8d..1d7ef18b1c0 100644 --- a/gix-packetline-blocking/CHANGELOG.md +++ b/gix-packetline-blocking/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.19.1 (2025-07-15) ### Bug Fixes @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) - Actually avoid `serde` as dependency, when the serde feature is off ([`0d67c85`](https://github.com/GitoxideLabs/gitoxide/commit/0d67c8524058a718083d31eae827f7f60332b20a)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-packetline-blocking/Cargo.toml b/gix-packetline-blocking/Cargo.toml index bfb46086f49..5c72b35e8b2 100644 --- a/gix-packetline-blocking/Cargo.toml +++ b/gix-packetline-blocking/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-packetline-blocking" -version = "0.19.0" +version = "0.19.1" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A duplicate of `gix-packetline` with the `blocking-io` feature pre-selected" @@ -29,7 +29,7 @@ async-io = [] serde = ["dep:serde", "bstr/serde", "faster-hex/serde"] [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } thiserror = "2.0.0" diff --git a/gix-packetline/CHANGELOG.md b/gix-packetline/CHANGELOG.md index 240769f78d3..846fce99f90 100644 --- a/gix-packetline/CHANGELOG.md +++ b/gix-packetline/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.19.1 (2025-07-15) ### Bug Fixes @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2031 from bpeetz/serde ([`874cc38`](https://github.com/GitoxideLabs/gitoxide/commit/874cc388e1e6af558e7cab4e9238f447e8c122e1)) - Actually avoid `serde` as dependency, when the serde feature is off ([`0d67c85`](https://github.com/GitoxideLabs/gitoxide/commit/0d67c8524058a718083d31eae827f7f60332b20a)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-packetline/Cargo.toml b/gix-packetline/Cargo.toml index 71caa3a327d..8d2a8a80f42 100644 --- a/gix-packetline/Cargo.toml +++ b/gix-packetline/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-packetline" -version = "0.19.0" +version = "0.19.1" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing the pkt-line serialization format" @@ -42,7 +42,7 @@ path = "tests/blocking-packetline.rs" required-features = ["blocking-io", "maybe-async/is_sync"] [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } thiserror = "2.0.0" diff --git a/gix-path/CHANGELOG.md b/gix-path/CHANGELOG.md index 54409c08d60..783be232fb4 100644 --- a/gix-path/CHANGELOG.md +++ b/gix-path/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.10.19 (2025-07-15) + + ### Other @@ -15,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 4 commits contributed to the release over the course of 65 calendar days. + - 5 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074) @@ -29,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074)** - Improve and correct `normalize()` documentation ([`45b369c`](https://github.com/GitoxideLabs/gitoxide/commit/45b369c65e7d36d42c8250b020ea5523615046e3)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) @@ -180,6 +183,15 @@ A maintenance release without user-facing changes. - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 + - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml index e5644dbb062..2320d85bac4 100644 --- a/gix-path/Cargo.toml +++ b/gix-path/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-path" -version = "0.10.18" +version = "0.10.19" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing paths and their conversions" @@ -15,7 +15,7 @@ rust-version = "1.70" doctest = true [dependencies] -gix-trace = { version = "^0.1.12", path = "../gix-trace" } +gix-trace = { version = "^0.1.13", path = "../gix-trace" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } thiserror = "2.0.0" diff --git a/gix-pathspec/CHANGELOG.md b/gix-pathspec/CHANGELOG.md index 879d2481efc..cd510e8246c 100644 --- a/gix-pathspec/CHANGELOG.md +++ b/gix-pathspec/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.12.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +31,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-pathspec/Cargo.toml b/gix-pathspec/Cargo.toml index 4985ea67778..1068a411fe0 100644 --- a/gix-pathspec/Cargo.toml +++ b/gix-pathspec/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-pathspec" -version = "0.11.0" +version = "0.12.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing magical pathspecs" @@ -15,10 +15,10 @@ include = ["src/**/*", "LICENSE-*", "README.md"] doctest = false [dependencies] -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes" } -gix-config-value = { version = "^0.15.0", path = "../gix-config-value" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } +gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } bitflags = "2" diff --git a/gix-prompt/CHANGELOG.md b/gix-prompt/CHANGELOG.md index c25bbd05a04..dce27cc5325 100644 --- a/gix-prompt/CHANGELOG.md +++ b/gix-prompt/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.11.1 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-prompt/Cargo.toml b/gix-prompt/Cargo.toml index cce12ffc93d..c3f36a36fe5 100644 --- a/gix-prompt/Cargo.toml +++ b/gix-prompt/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-prompt" -version = "0.11.0" +version = "0.11.1" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project for handling prompts in the terminal" @@ -15,8 +15,8 @@ rust-version = "1.70" doctest = false [dependencies] -gix-command = { version = "^0.6.1", path = "../gix-command" } -gix-config-value = { version = "^0.15.0", path = "../gix-config-value" } +gix-command = { version = "^0.6.2", path = "../gix-command" } +gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } thiserror = "2.0.0" diff --git a/gix-protocol/CHANGELOG.md b/gix-protocol/CHANGELOG.md index 0d3f8e411bf..cc0f3a7ecb6 100644 --- a/gix-protocol/CHANGELOG.md +++ b/gix-protocol/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.51.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 9 commits contributed to the release over the course of 79 calendar days. + - 10 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +31,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) - Small documentation fixes ([`bfb1c34`](https://github.com/GitoxideLabs/gitoxide/commit/bfb1c34f75997a603b8f85fca75bf9e1ca310be0)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) diff --git a/gix-protocol/Cargo.toml b/gix-protocol/Cargo.toml index 5afdd6da987..e2818e221a2 100644 --- a/gix-protocol/Cargo.toml +++ b/gix-protocol/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-protocol" -version = "0.50.1" +version = "0.51.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project for implementing git protocols" @@ -68,23 +68,23 @@ path = "tests/async-protocol.rs" required-features = ["async-client"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = [ +gix-features = { version = "^0.43.0", path = "../gix-features", features = [ "progress", ] } -gix-transport = { version = "^0.47.0", path = "../gix-transport" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-shallow = { version = "^0.4.0", path = "../gix-shallow" } -gix-date = { version = "^0.10.2", path = "../gix-date" } +gix-transport = { version = "^0.48.0", path = "../gix-transport" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-shallow = { version = "^0.5.0", path = "../gix-shallow" } +gix-date = { version = "^0.10.3", path = "../gix-date" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } -gix-ref = { version = "^0.52.1", path = "../gix-ref" } +gix-ref = { version = "^0.53.0", path = "../gix-ref" } -gix-trace = { version = "^0.1.12", path = "../gix-trace", optional = true } -gix-negotiate = { version = "^0.20.1", path = "../gix-negotiate", optional = true } -gix-object = { version = "^0.49.1", path = "../gix-object", optional = true } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk", optional = true } -gix-credentials = { version = "^0.29.0", path = "../gix-credentials", optional = true } -gix-refspec = { version = "^0.30.1", path = "../gix-refspec", optional = true } -gix-lock = { version = "^17.1.0", path = "../gix-lock", optional = true } +gix-trace = { version = "^0.1.13", path = "../gix-trace", optional = true } +gix-negotiate = { version = "^0.21.0", path = "../gix-negotiate", optional = true } +gix-object = { version = "^0.50.0", path = "../gix-object", optional = true } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk", optional = true } +gix-credentials = { version = "^0.30.0", path = "../gix-credentials", optional = true } +gix-refspec = { version = "^0.31.0", path = "../gix-refspec", optional = true } +gix-lock = { version = "^18.0.0", path = "../gix-lock", optional = true } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = [ @@ -106,7 +106,7 @@ document-features = { version = "0.2.0", optional = true } [dev-dependencies] async-std = { version = "1.9.0", features = ["attributes"] } -gix-packetline = { path = "../gix-packetline", version = "^0.19.0" } +gix-packetline = { path = "../gix-packetline", version = "^0.19.1" } [package.metadata.docs.rs] features = ["blocking-client", "document-features", "serde"] diff --git a/gix-ref/CHANGELOG.md b/gix-ref/CHANGELOG.md index 20f3acaec85..f12d2281725 100644 --- a/gix-ref/CHANGELOG.md +++ b/gix-ref/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.53.0 (2025-07-15) ### New Features @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 17 commits contributed to the release over the course of 79 calendar days. + - 18 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 3 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -35,6 +35,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) - Refs support pseudo refs ([`fdf5153`](https://github.com/GitoxideLabs/gitoxide/commit/fdf5153d9fe5e7c059b5a9687b7041e16ba54683)) diff --git a/gix-ref/Cargo.toml b/gix-ref/Cargo.toml index c878727a601..97fc548b629 100644 --- a/gix-ref/Cargo.toml +++ b/gix-ref/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-ref" -version = "0.52.1" +version = "0.53.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate to handle git references" @@ -21,16 +21,16 @@ test = true serde = ["dep:serde", "gix-hash/serde", "gix-actor/serde", "gix-object/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["walkdir"] } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["walkdir"] } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-actor = { version = "^0.35.1", path = "../gix-actor" } -gix-lock = { version = "^17.1.0", path = "../gix-lock" } -gix-tempfile = { version = "^17.1.0", default-features = false, path = "../gix-tempfile" } +gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-lock = { version = "^18.0.0", path = "../gix-lock" } +gix-tempfile = { version = "^18.0.0", default-features = false, path = "../gix-tempfile" } thiserror = "2.0.0" winnow = { version = "0.7.10", features = ["simd"] } diff --git a/gix-refspec/CHANGELOG.md b/gix-refspec/CHANGELOG.md index 0ef650d241e..287f4825384 100644 --- a/gix-refspec/CHANGELOG.md +++ b/gix-refspec/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.31.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +31,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2041 from cruessler/add-blame-extraction ([`dd5f0a4`](https://github.com/GitoxideLabs/gitoxide/commit/dd5f0a4811bc738051f7af164b8d2815aaa23220)) diff --git a/gix-refspec/Cargo.toml b/gix-refspec/Cargo.toml index aa9fa5f89a8..f4b48508e36 100644 --- a/gix-refspec/Cargo.toml +++ b/gix-refspec/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-refspec" -version = "0.30.1" +version = "0.31.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project for parsing and representing refspecs" @@ -15,9 +15,9 @@ rust-version = "1.70" doctest = false [dependencies] -gix-revision = { version = "^0.34.1", path = "../gix-revision", default-features = false } +gix-revision = { version = "^0.35.0", path = "../gix-revision", default-features = false } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } thiserror = "2.0.0" diff --git a/gix-revision/CHANGELOG.md b/gix-revision/CHANGELOG.md index 5192e67452c..9447ec0070b 100644 --- a/gix-revision/CHANGELOG.md +++ b/gix-revision/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.35.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) - Release gix-path v0.10.18, gix-date v0.10.2, gix-traverse v0.46.2, gix-index v0.40.1 ([`d2b4c44`](https://github.com/GitoxideLabs/gitoxide/commit/d2b4c44fcb2bf43e80d67532262631a5086f08de)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-revision/Cargo.toml b/gix-revision/Cargo.toml index 4a9aabed1bf..e6d382b6ac3 100644 --- a/gix-revision/Cargo.toml +++ b/gix-revision/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-revision" -version = "0.34.1" +version = "0.35.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing with finding names for revisions and parsing specifications" @@ -27,13 +27,13 @@ merge_base = ["dep:gix-trace", "dep:bitflags"] serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable", optional = true } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } -gix-trace = { version = "^0.1.12", path = "../gix-trace", optional = true } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } +gix-trace = { version = "^0.1.13", path = "../gix-trace", optional = true } bstr = { version = "1.12.0", default-features = false, features = ["std"] } bitflags = { version = "2", optional = true } diff --git a/gix-revwalk/CHANGELOG.md b/gix-revwalk/CHANGELOG.md index a365b37bef7..969045b4cc7 100644 --- a/gix-revwalk/CHANGELOG.md +++ b/gix-revwalk/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.21.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 79 calendar days. + - 4 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13)) diff --git a/gix-revwalk/Cargo.toml b/gix-revwalk/Cargo.toml index ca5a3183f95..3f343e336d2 100644 --- a/gix-revwalk/Cargo.toml +++ b/gix-revwalk/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-revwalk" -version = "0.20.1" +version = "0.21.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate providing utilities for walking the revision graph" @@ -15,11 +15,11 @@ rust-version = "1.70" doctest = false [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-date = { version = "^0.10.1", path = "../gix-date" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } thiserror = "2.0.0" smallvec = "1.15.1" diff --git a/gix-sec/CHANGELOG.md b/gix-sec/CHANGELOG.md index e3e7640eb87..3e867ba928b 100644 --- a/gix-sec/CHANGELOG.md +++ b/gix-sec/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.12.0 (2025-07-15) ### New Features (BREAKING) @@ -15,7 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 9 commits contributed to the release over the course of 79 calendar days. + - 10 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998) @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#1998](https://github.com/GitoxideLabs/gitoxide/issues/1998)** - Add optional `oauth_refresh_token` field to `identity::Account` ([`dc9b103`](https://github.com/GitoxideLabs/gitoxide/commit/dc9b103c2ef813931becefcf082daeda5a3cf869)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) diff --git a/gix-sec/Cargo.toml b/gix-sec/Cargo.toml index 8ea90242095..a0d3332b723 100644 --- a/gix-sec/Cargo.toml +++ b/gix-sec/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-sec" -version = "0.11.0" +version = "0.12.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project providing a shared trust model" @@ -31,7 +31,7 @@ document-features = { version = "0.2.1", optional = true } libc = "0.2.174" [target.'cfg(windows)'.dependencies] -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-path = { version = "^0.10.19", path = "../gix-path" } windows-sys = { version = "0.59.0", features = [ "Win32_Foundation", "Win32_Security_Authorization", diff --git a/gix-shallow/CHANGELOG.md b/gix-shallow/CHANGELOG.md index 1072b07730c..c6f577f3fa2 100644 --- a/gix-shallow/CHANGELOG.md +++ b/gix-shallow/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.5.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 1 commit contributed to the release over the course of 79 calendar days. + - 2 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #1971 from GitoxideLabs/new-release ([`8d4c4d1`](https://github.com/GitoxideLabs/gitoxide/commit/8d4c4d1e09f84c962c29d98a686c64228196ac13))
diff --git a/gix-shallow/Cargo.toml b/gix-shallow/Cargo.toml index 258d57dc964..85d38ef5f20 100644 --- a/gix-shallow/Cargo.toml +++ b/gix-shallow/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-shallow" -version = "0.4.0" +version = "0.5.0" repository = "https://github.com/GitoxideLabs/gitoxide" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" @@ -20,8 +20,8 @@ test = false serde = ["dep:serde", "gix-hash/serde"] [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-lock = { version = "^17.1.0", path = "../gix-lock" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-lock = { version = "^18.0.0", path = "../gix-lock" } thiserror = "2.0.0" bstr = { version = "1.12.0", default-features = false } diff --git a/gix-status/CHANGELOG.md b/gix-status/CHANGELOG.md index daa001907d6..08b0f43e7a7 100644 --- a/gix-status/CHANGELOG.md +++ b/gix-status/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.20.0 (2025-07-15) ### Bug Fixes @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2016 from GitoxideLabs/improvements ([`7ae3797`](https://github.com/GitoxideLabs/gitoxide/commit/7ae3797f19cf2dd3bc3e02a6437643e5f50ed338)) - If `core.symlinks=false`, don't misclassify actual symlinks as files. ([`376ed0c`](https://github.com/GitoxideLabs/gitoxide/commit/376ed0cb602e4df457b0b6c87fe16af027bdff48)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-status/Cargo.toml b/gix-status/Cargo.toml index 10fc9dea619..2c3ca420f52 100644 --- a/gix-status/Cargo.toml +++ b/gix-status/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-status" -version = "0.19.1" +version = "0.20.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing with 'git status'-like functionality" @@ -20,18 +20,18 @@ doctest = false worktree-rewrites = ["dep:gix-dir", "dep:gix-diff"] [dependencies] -gix-index = { version = "^0.40.1", path = "../gix-index" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["progress"] } -gix-filter = { version = "^0.19.2", path = "../gix-filter" } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } -gix-pathspec = { version = "^0.11.0", path = "../gix-pathspec" } - -gix-dir = { version = "^0.14.1", path = "../gix-dir", optional = true } -gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false, features = ["blob"], optional = true } +gix-index = { version = "^0.41.0", path = "../gix-index" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["progress"] } +gix-filter = { version = "^0.20.0", path = "../gix-filter" } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } +gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } + +gix-dir = { version = "^0.15.0", path = "../gix-dir", optional = true } +gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, features = ["blob"], optional = true } thiserror = "2.0.0" filetime = "0.2.15" diff --git a/gix-submodule/CHANGELOG.md b/gix-submodule/CHANGELOG.md index 345d4902b7d..4966f8fbbca 100644 --- a/gix-submodule/CHANGELOG.md +++ b/gix-submodule/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.20.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) - Adapt to changes in gix_features::walkdir_sorted_new ([`a2741da`](https://github.com/GitoxideLabs/gitoxide/commit/a2741da85fe04907f8773a99813e3802333b402d)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-submodule/Cargo.toml b/gix-submodule/Cargo.toml index 20253c388a3..df940ed0508 100644 --- a/gix-submodule/Cargo.toml +++ b/gix-submodule/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-submodule" -version = "0.19.1" +version = "0.20.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing git submodules" @@ -15,11 +15,11 @@ include = ["src/**/*", "LICENSE-*"] doctest = false [dependencies] -gix-pathspec = { version = "^0.11.0", path = "../gix-pathspec" } -gix-refspec = { version = "^0.30.1", path = "../gix-refspec" } -gix-config = { version = "^0.45.1", path = "../gix-config" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-url = { version = "^0.31.0", path = "../gix-url" } +gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } +gix-refspec = { version = "^0.31.0", path = "../gix-refspec" } +gix-config = { version = "^0.46.0", path = "../gix-config" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-url = { version = "^0.32.0", path = "../gix-url" } bstr = { version = "1.12.0", default-features = false } thiserror = "2.0.0" diff --git a/gix-tempfile/CHANGELOG.md b/gix-tempfile/CHANGELOG.md index 4fef671571d..60607d320b9 100644 --- a/gix-tempfile/CHANGELOG.md +++ b/gix-tempfile/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 18.0.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-tempfile/Cargo.toml b/gix-tempfile/Cargo.toml index a52a1d048bb..257f94256ae 100644 --- a/gix-tempfile/Cargo.toml +++ b/gix-tempfile/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-tempfile" -version = "17.1.0" +version = "18.0.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A tempfile implementation with a global registry to assure cleanup" @@ -31,7 +31,7 @@ doctest = false test = true [dependencies] -gix-fs = { version = "^0.15.0", path = "../gix-fs" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } parking_lot = "0.12.4" dashmap = { version = "6.0.1", optional = true } once_cell = { version = "1.21.3", default-features = false, features = ["race", "std"] } diff --git a/gix-trace/CHANGELOG.md b/gix-trace/CHANGELOG.md index 79d4215311f..2642526b117 100644 --- a/gix-trace/CHANGELOG.md +++ b/gix-trace/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.1.13 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release. + - 4 commits contributed to the release. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -24,6 +24,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #1778 from GitoxideLabs/new-release ([`8df0db2`](https://github.com/GitoxideLabs/gitoxide/commit/8df0db2f8fe1832a5efd86d6aba6fb12c4c855de)) diff --git a/gix-trace/Cargo.toml b/gix-trace/Cargo.toml index 5fb8b3bcf1d..e956b5ec20b 100644 --- a/gix-trace/Cargo.toml +++ b/gix-trace/Cargo.toml @@ -4,7 +4,7 @@ lints.workspace = true name = "gix-trace" description = "A crate to provide minimal `tracing` support that can be turned off to zero cost" repository = "https://github.com/GitoxideLabs/gitoxide" -version = "0.1.12" +version = "0.1.13" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" edition = "2021" diff --git a/gix-transport/CHANGELOG.md b/gix-transport/CHANGELOG.md index 4b7355324e0..19b381c1a38 100644 --- a/gix-transport/CHANGELOG.md +++ b/gix-transport/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.48.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 13 commits contributed to the release over the course of 79 calendar days. + - 14 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -31,6 +31,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2062 from rickprice/minor_documentation_fixups ([`c2eb0c1`](https://github.com/GitoxideLabs/gitoxide/commit/c2eb0c144dd21cac87fd08829f4a5ca02f85008d)) diff --git a/gix-transport/Cargo.toml b/gix-transport/Cargo.toml index e1abc0443eb..d54c822ad39 100644 --- a/gix-transport/Cargo.toml +++ b/gix-transport/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-transport" -version = "0.47.0" +version = "0.48.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dedicated to implementing the git transport layer" @@ -81,12 +81,12 @@ path = "tests/async-transport.rs" required-features = ["async-client"] [dependencies] -gix-command = { version = "^0.6.1", path = "../gix-command" } -gix-features = { version = "^0.42.1", path = "../gix-features" } -gix-url = { version = "^0.31.0", path = "../gix-url" } -gix-sec = { version = "^0.11.0", path = "../gix-sec" } -gix-packetline = { version = "^0.19.0", path = "../gix-packetline" } -gix-credentials = { version = "^0.29.0", path = "../gix-credentials", optional = true } +gix-command = { version = "^0.6.2", path = "../gix-command" } +gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-url = { version = "^0.32.0", path = "../gix-url" } +gix-sec = { version = "^0.12.0", path = "../gix-sec" } +gix-packetline = { version = "^0.19.1", path = "../gix-packetline" } +gix-credentials = { version = "^0.30.0", path = "../gix-credentials", optional = true } gix-quote = { version = "^0.6.0", path = "../gix-quote" } serde = { version = "1.0.114", optional = true, default-features = false, features = [ diff --git a/gix-traverse/CHANGELOG.md b/gix-traverse/CHANGELOG.md index b0d8163f9b7..30bf8f1c4d6 100644 --- a/gix-traverse/CHANGELOG.md +++ b/gix-traverse/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.47.0 (2025-07-15) ### New Features @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 65 calendar days. + - 7 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) - Merge pull request #2037 from GitoxideLabs/hide ([`92febae`](https://github.com/GitoxideLabs/gitoxide/commit/92febae025165c55e596d58511b1634fb6580b9c)) diff --git a/gix-traverse/Cargo.toml b/gix-traverse/Cargo.toml index 0dfb2a0e31b..6f6d88666d7 100644 --- a/gix-traverse/Cargo.toml +++ b/gix-traverse/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-traverse" -version = "0.46.2" +version = "0.47.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project" @@ -16,12 +16,12 @@ autotests = false doctest = false [dependencies] -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } smallvec = "1.15.1" thiserror = "2.0.0" bitflags = "2" diff --git a/gix-url/CHANGELOG.md b/gix-url/CHANGELOG.md index 23937a1cfa6..5e284e0f8fa 100644 --- a/gix-url/CHANGELOG.md +++ b/gix-url/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.32.0 (2025-07-15) ### Bug Fixes @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 6 commits contributed to the release over the course of 79 calendar days. + - 7 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#2056](https://github.com/GitoxideLabs/gitoxide/issues/2056) @@ -31,6 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#2056](https://github.com/GitoxideLabs/gitoxide/issues/2056)** - Username in scp-like url is no longer percent-encoded ([`04bc4a8`](https://github.com/GitoxideLabs/gitoxide/commit/04bc4a81614146f56f341e15b459dfc1a880bd45)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2060 from yuja/push-urolxnurwtsn ([`68d761c`](https://github.com/GitoxideLabs/gitoxide/commit/68d761cdc87a46b72028153e096f1a22012239bc)) - Add baseline tests for `_` and `@` in username ([`212b618`](https://github.com/GitoxideLabs/gitoxide/commit/212b618c5f99cc75ed612431669dcc2ec4c49a5e)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-url/Cargo.toml b/gix-url/Cargo.toml index 5735f397f6d..3accb66343c 100644 --- a/gix-url/Cargo.toml +++ b/gix-url/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-url" -version = "0.31.0" +version = "0.32.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing parsing and serialization of gix-url" @@ -19,8 +19,8 @@ doctest = false serde = ["dep:serde", "bstr/serde"] [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features" } -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-path = { version = "^0.10.19", path = "../gix-path" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } thiserror = "2.0.0" diff --git a/gix-worktree-state/CHANGELOG.md b/gix-worktree-state/CHANGELOG.md index 9d91682cd2c..d3583211b6d 100644 --- a/gix-worktree-state/CHANGELOG.md +++ b/gix-worktree-state/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.20.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 79 calendar days. + - 6 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) - Release gix-glob v0.20.1, gix-attributes v0.26.1, gix-command v0.6.1, gix-filter v0.19.2, gix-worktree-stream v0.21.2, gix-archive v0.21.2 ([`f0ed2cc`](https://github.com/GitoxideLabs/gitoxide/commit/f0ed2cc0046f866e67944bff9aef0579c12d5852)) - Merge pull request #2009 from GitoxideLabs/release-gix-index ([`c3f06ae`](https://github.com/GitoxideLabs/gitoxide/commit/c3f06ae424ab4e1918a364cabe8276297465a73a)) diff --git a/gix-worktree-state/Cargo.toml b/gix-worktree-state/Cargo.toml index 90497ff6f9c..44249909b37 100644 --- a/gix-worktree-state/Cargo.toml +++ b/gix-worktree-state/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-worktree-state" -version = "0.19.0" +version = "0.20.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project implementing setting the worktree to a particular state" @@ -16,15 +16,15 @@ autotests = false doctest = false [dependencies] -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } -gix-index = { version = "^0.40.1", path = "../gix-index" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-features = { version = "^0.42.1", path = "../gix-features" } -gix-filter = { version = "^0.19.2", path = "../gix-filter" } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } +gix-index = { version = "^0.41.0", path = "../gix-index" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-filter = { version = "^0.20.0", path = "../gix-filter" } io-close = "0.3.7" thiserror = "2.0.0" diff --git a/gix-worktree-stream/CHANGELOG.md b/gix-worktree-stream/CHANGELOG.md index cc95deca803..6889b0df4af 100644 --- a/gix-worktree-stream/CHANGELOG.md +++ b/gix-worktree-stream/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.22.0 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 59 calendar days. + - 4 commits contributed to the release over the course of 59 calendar days. - 59 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2033 from GitoxideLabs/dependabot/cargo/cargo-b72232998d ([`f8d7c0a`](https://github.com/GitoxideLabs/gitoxide/commit/f8d7c0ad8fa7745c973c6b87e7eee70831300207)) - Bump the cargo group with 56 updates ([`151e3a5`](https://github.com/GitoxideLabs/gitoxide/commit/151e3a5cca06444eea4c6a362649e66c831673d6)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-worktree-stream/Cargo.toml b/gix-worktree-stream/Cargo.toml index 6200b1e9933..7cccc2c9a23 100644 --- a/gix-worktree-stream/Cargo.toml +++ b/gix-worktree-stream/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-worktree-stream" -version = "0.21.2" +version = "0.22.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "generate a byte-stream from a git-tree" @@ -15,14 +15,14 @@ include = ["src/**/*", "LICENSE-*"] doctest = false [dependencies] -gix-features = { version = "^0.42.1", path = "../gix-features", features = ["progress", "io-pipe"] } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes" } -gix-filter = { version = "^0.19.2", path = "../gix-filter" } -gix-traverse = { version = "^0.46.2", path = "../gix-traverse" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-path = { version = "^0.10.18", path = "../gix-path" } +gix-features = { version = "^0.43.0", path = "../gix-features", features = ["progress", "io-pipe"] } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } +gix-filter = { version = "^0.20.0", path = "../gix-filter" } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-path = { version = "^0.10.19", path = "../gix-path" } thiserror = "2.0.0" parking_lot = "0.12.4" diff --git a/gix-worktree/CHANGELOG.md b/gix-worktree/CHANGELOG.md index 335d33328ed..e334a92dbde 100644 --- a/gix-worktree/CHANGELOG.md +++ b/gix-worktree/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.42.0 (2025-07-15) ### New Features (BREAKING) @@ -17,7 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 7 commits contributed to the release over the course of 79 calendar days. + - 8 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2019 from GitoxideLabs/precious-opt-in ([`5f9de52`](https://github.com/GitoxideLabs/gitoxide/commit/5f9de52cf286163b503047b1ab3b51dfa093b4d4)) - Pattern parser in is now stateful to allow options for how to parse ignore patterns. ([`828e903`](https://github.com/GitoxideLabs/gitoxide/commit/828e9035a40796f79650cf5e3becb8d8e5e29883)) - Merge pull request #2014 from GitoxideLabs/zip ([`648022b`](https://github.com/GitoxideLabs/gitoxide/commit/648022b44e12f597cae55cc45830d0a19b87eb4c)) diff --git a/gix-worktree/Cargo.toml b/gix-worktree/Cargo.toml index 2751fd1fd92..d464fc2e944 100644 --- a/gix-worktree/Cargo.toml +++ b/gix-worktree/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-worktree" -version = "0.41.0" +version = "0.42.0" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project for shared worktree related types and utilities." @@ -23,16 +23,16 @@ attributes = ["dep:gix-attributes", "dep:gix-validate"] serde = ["dep:serde", "bstr/serde", "gix-index/serde", "gix-hash/serde", "gix-object/serde", "gix-attributes?/serde", "gix-ignore/serde"] [dependencies] -gix-index = { version = "^0.40.1", path = "../gix-index" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes", optional = true } +gix-index = { version = "^0.41.0", path = "../gix-index" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes", optional = true } gix-validate = { version = "^0.10.0", path = "../gix-validate", optional = true } -gix-ignore = { version = "^0.15.0", path = "../gix-ignore" } -gix-features = { version = "^0.42.1", path = "../gix-features" } +gix-ignore = { version = "^0.16.0", path = "../gix-ignore" } +gix-features = { version = "^0.43.0", path = "../gix-features" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } bstr = { version = "1.12.0", default-features = false } diff --git a/gix/CHANGELOG.md b/gix/CHANGELOG.md index 1371d56b49a..c147fc85164 100644 --- a/gix/CHANGELOG.md +++ b/gix/CHANGELOG.md @@ -5,7 +5,9 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.73.0 (2025-07-15) + + ### New Features @@ -44,7 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 51 commits contributed to the release over the course of 79 calendar days. + - 52 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 13 commits were understood as [conventional](https://www.conventionalcommits.org). - 2 unique issues were worked on: [#1985](https://github.com/GitoxideLabs/gitoxide/issues/1985), [#2055](https://github.com/GitoxideLabs/gitoxide/issues/2055) @@ -66,6 +68,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#2055](https://github.com/GitoxideLabs/gitoxide/issues/2055)** - Don't panic if `remote::Connection::ref_map()` doesn't finish the handshake ([`427274b`](https://github.com/GitoxideLabs/gitoxide/commit/427274bdf64d30e3bcd330e849ea067e359588fe)) * **Uncategorized** + - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) - Add `repo.references().pseudo()` for traversing refs like `HEAD` and `FETCH_HEAD`. ([`2affbab`](https://github.com/GitoxideLabs/gitoxide/commit/2affbab7491d6b4667572d4d17db864c5b703c7a)) diff --git a/gix/Cargo.toml b/gix/Cargo.toml index 9413dd575a3..1150ddb3aba 100644 --- a/gix/Cargo.toml +++ b/gix/Cargo.toml @@ -5,7 +5,7 @@ name = "gix" repository = "https://github.com/GitoxideLabs/gitoxide" description = "Interact with git repositories just like git would" license = "MIT OR Apache-2.0" -version = "0.72.1" +version = "0.73.0" authors = ["Sebastian Thiel "] edition = "2021" include = ["src/**/*", "LICENSE-*"] @@ -307,67 +307,67 @@ cache-efficiency-debug = ["gix-features/cache-efficiency-debug"] [dependencies] gix-utils = { version = "^0.3.0", path = "../gix-utils" } -gix-fs = { version = "^0.15.0", path = "../gix-fs" } -gix-ref = { version = "^0.52.1", path = "../gix-ref" } -gix-discover = { version = "^0.40.1", path = "../gix-discover" } -gix-tempfile = { version = "^17.1.0", path = "../gix-tempfile", default-features = false } -gix-lock = { version = "^17.1.0", path = "../gix-lock" } +gix-fs = { version = "^0.16.0", path = "../gix-fs" } +gix-ref = { version = "^0.53.0", path = "../gix-ref" } +gix-discover = { version = "^0.41.0", path = "../gix-discover" } +gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile", default-features = false } +gix-lock = { version = "^18.0.0", path = "../gix-lock" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-sec = { version = "^0.11.0", path = "../gix-sec" } -gix-date = { version = "^0.10.2", path = "../gix-date" } -gix-refspec = { version = "^0.30.1", path = "../gix-refspec" } -gix-filter = { version = "^0.19.2", path = "../gix-filter", optional = true } -gix-dir = { version = "^0.14.1", path = "../gix-dir", optional = true } - -gix-config = { version = "^0.45.1", path = "../gix-config" } -gix-odb = { version = "^0.69.1", path = "../gix-odb" } -gix-hash = { version = "^0.18.0", path = "../gix-hash" } -gix-shallow = { version = "^0.4.0", path = "../gix-shallow" } -gix-object = { version = "^0.49.1", path = "../gix-object" } -gix-actor = { version = "^0.35.1", path = "../gix-actor" } -gix-pack = { version = "^0.59.1", path = "../gix-pack", default-features = false, features = [ +gix-sec = { version = "^0.12.0", path = "../gix-sec" } +gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-refspec = { version = "^0.31.0", path = "../gix-refspec" } +gix-filter = { version = "^0.20.0", path = "../gix-filter", optional = true } +gix-dir = { version = "^0.15.0", path = "../gix-dir", optional = true } + +gix-config = { version = "^0.46.0", path = "../gix-config" } +gix-odb = { version = "^0.70.0", path = "../gix-odb" } +gix-hash = { version = "^0.19.0", path = "../gix-hash" } +gix-shallow = { version = "^0.5.0", path = "../gix-shallow" } +gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-pack = { version = "^0.60.0", path = "../gix-pack", default-features = false, features = [ "object-cache-dynamic", ] } -gix-revision = { version = "^0.34.1", path = "../gix-revision", default-features = false } -gix-revwalk = { version = "^0.20.1", path = "../gix-revwalk" } -gix-negotiate = { version = "^0.20.1", path = "../gix-negotiate", optional = true } - -gix-path = { version = "^0.10.18", path = "../gix-path" } -gix-url = { version = "^0.31.0", path = "../gix-url" } -gix-traverse = { version = "^0.46.2", path = "../gix-traverse" } -gix-diff = { version = "^0.52.1", path = "../gix-diff", default-features = false } -gix-merge = { version = "^0.5.1", path = "../gix-merge", default-features = false, optional = true } -gix-mailmap = { version = "^0.27.1", path = "../gix-mailmap", optional = true } -gix-features = { version = "^0.42.1", path = "../gix-features", features = [ +gix-revision = { version = "^0.35.0", path = "../gix-revision", default-features = false } +gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } +gix-negotiate = { version = "^0.21.0", path = "../gix-negotiate", optional = true } + +gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-url = { version = "^0.32.0", path = "../gix-url" } +gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } +gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false } +gix-merge = { version = "^0.6.0", path = "../gix-merge", default-features = false, optional = true } +gix-mailmap = { version = "^0.27.2", path = "../gix-mailmap", optional = true } +gix-features = { version = "^0.43.0", path = "../gix-features", features = [ "progress", "once_cell", ] } -gix-trace = { version = "^0.1.12", path = "../gix-trace" } - -gix-glob = { version = "^0.20.1", path = "../gix-glob" } -gix-credentials = { version = "^0.29.0", path = "../gix-credentials", optional = true } -gix-prompt = { version = "^0.11.0", path = "../gix-prompt", optional = true } -gix-index = { version = "^0.40.1", path = "../gix-index", optional = true } -gix-attributes = { version = "^0.26.1", path = "../gix-attributes", optional = true } -gix-ignore = { version = "^0.15.0", path = "../gix-ignore", optional = true } -gix-worktree = { version = "^0.41.0", path = "../gix-worktree", optional = true, default-features = false } -gix-worktree-state = { version = "^0.19.0", path = "../gix-worktree-state", optional = true } -gix-hashtable = { version = "^0.8.1", path = "../gix-hashtable" } -gix-commitgraph = { version = "^0.28.0", path = "../gix-commitgraph" } -gix-pathspec = { version = "^0.11.0", path = "../gix-pathspec", optional = true } -gix-submodule = { version = "^0.19.1", path = "../gix-submodule", optional = true } -gix-status = { version = "^0.19.1", path = "../gix-status", optional = true, features = [ +gix-trace = { version = "^0.1.13", path = "../gix-trace" } + +gix-glob = { version = "^0.21.0", path = "../gix-glob" } +gix-credentials = { version = "^0.30.0", path = "../gix-credentials", optional = true } +gix-prompt = { version = "^0.11.1", path = "../gix-prompt", optional = true } +gix-index = { version = "^0.41.0", path = "../gix-index", optional = true } +gix-attributes = { version = "^0.27.0", path = "../gix-attributes", optional = true } +gix-ignore = { version = "^0.16.0", path = "../gix-ignore", optional = true } +gix-worktree = { version = "^0.42.0", path = "../gix-worktree", optional = true, default-features = false } +gix-worktree-state = { version = "^0.20.0", path = "../gix-worktree-state", optional = true } +gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } +gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } +gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec", optional = true } +gix-submodule = { version = "^0.20.0", path = "../gix-submodule", optional = true } +gix-status = { version = "^0.20.0", path = "../gix-status", optional = true, features = [ "worktree-rewrites", ] } -gix-command = { version = "^0.6.1", path = "../gix-command", optional = true } +gix-command = { version = "^0.6.2", path = "../gix-command", optional = true } -gix-worktree-stream = { version = "^0.21.2", path = "../gix-worktree-stream", optional = true } -gix-archive = { version = "^0.21.2", path = "../gix-archive", default-features = false, optional = true } -gix-blame = { version = "^0.2.1", path = "../gix-blame", optional = true } +gix-worktree-stream = { version = "^0.22.0", path = "../gix-worktree-stream", optional = true } +gix-archive = { version = "^0.22.0", path = "../gix-archive", default-features = false, optional = true } +gix-blame = { version = "^0.3.0", path = "../gix-blame", optional = true } # For communication with remotes -gix-protocol = { version = "^0.50.1", path = "../gix-protocol" } -gix-transport = { version = "^0.47.0", path = "../gix-transport", optional = true } +gix-protocol = { version = "^0.51.0", path = "../gix-protocol" } +gix-transport = { version = "^0.48.0", path = "../gix-transport", optional = true } # Just to get the progress-tree feature prodash = { version = "30.0.1", optional = true, features = ["progress-tree"] } diff --git a/tests/it/Cargo.toml b/tests/it/Cargo.toml index 25abc5edad7..dc8ac71bd0e 100644 --- a/tests/it/Cargo.toml +++ b/tests/it/Cargo.toml @@ -17,6 +17,6 @@ path = "src/main.rs" [dependencies] anyhow = "1.0.98" clap = { version = "4.5.40", features = ["derive"] } -gix = { version = "^0.72.1", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "revision"] } +gix = { version = "^0.73.0", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "revision"] } once_cell = "1.21.3" regex = { version = "1.11.1", default-features = false, features = ["std"] } diff --git a/tests/tools/Cargo.toml b/tests/tools/Cargo.toml index 083002b64d4..c591a8a6a74 100644 --- a/tests/tools/Cargo.toml +++ b/tests/tools/Cargo.toml @@ -3,7 +3,7 @@ lints.workspace = true [package] name = "gix-testtools" description = "Shared code for gitoxide crates to facilitate testing" -version = "0.16.1" +version = "0.17.0" authors = ["Sebastian Thiel "] edition = "2021" license = "MIT OR Apache-2.0" @@ -25,11 +25,11 @@ default = [] xz = ["dep:xz2"] [dependencies] -gix-lock = { version = "17.1.0", path = "../../gix-lock" } -gix-discover = { version = "0.40.1", path = "../../gix-discover" } -gix-worktree = { version = "0.41.0", path = "../../gix-worktree" } -gix-fs = { version = "0.15.0", path = "../../gix-fs" } -gix-tempfile = { version = "17.1.0", path = "../../gix-tempfile", default-features = false, features = ["signals"] } +gix-lock = { version = "^18.0.0", path = "../../gix-lock" } +gix-discover = { version = "^0.41.0", path = "../../gix-discover" } +gix-worktree = { version = "^0.42.0", path = "../../gix-worktree" } +gix-fs = { version = "^0.16.0", path = "../../gix-fs" } +gix-tempfile = { version = "^18.0.0", path = "../../gix-tempfile", default-features = false, features = ["signals"] } winnow = { version = "0.7.10", features = ["simd"] } fastrand = "2.0.0" From a91e4462b695f9e7a93e824224252bfdf2634f85 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 22 Jul 2025 04:55:26 +0200 Subject: [PATCH 051/296] monthly report 07/25 --- etc/reports/25-07.md | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 etc/reports/25-07.md diff --git a/etc/reports/25-07.md b/etc/reports/25-07.md new file mode 100644 index 00000000000..29b46cf26e5 --- /dev/null +++ b/etc/reports/25-07.md @@ -0,0 +1,60 @@ +This month feels like one of these summer months when not much has been happening, despite me being busy as usual. +However, there have been contributions with one being very exciting in particular. + +## Community + +### Better Release Handling + +Thanks to [Eliah](https://github.com/EliahKagan) creating new releases and triggering a release build is now easier than ever with `just roll-release`. Thanks to him, we finally figured out why the release build isn't triggered just when pushing tags. It turns out that pushing more than 3 tags at once won't trigger individual events anymore. + +There probably is a good reason for that, but it did confuse me a lot, particularly since this breaking change was made sometime in the past without notice or any indication that it actually ignored event generation - more than an hour of my life went into trying to figure this out for sure. + +In any case, I could also imagine that `cargo smart-release` could one day learn to push top-level tags separately from plumbing tags, but until that day `just` will do fine. + +### An iterator over Pseudo-Refs + +It's now also possible to traverse refs in the root of the Git repository with `repo.references().pseudo()`, thanks to [a recent contribution](https://github.com/GitoxideLabs/gitoxide/pull/2061). +This means references like `HEAD`, `FETCH_HEAD` or similar `*_HEAD` can now be explored by traversal. + +A recent conversion with [Patrick Steinhardt](https://about.gitlab.com/blog/authors/patrick-steinhardt/) about the matter revealed that in the way it's implemented, the method name is a misnomer as it technically traverses the recently termed *Root References*. Pseudo-refs are actually only two references, `FETCH_HEAD` and `MERGE_HEAD`, as these contain additional information despite being readable as simple references as well. + +Breaking change incoming 😅. + +### RefTable support is incubating + +In that same conversation with [Patrick Steinhardt](https://about.gitlab.com/blog/authors/patrick-steinhardt/) we also decided to work together on bringing RefTable support to `gitoxide`. The idea is to just sit down and get started, him teaching me the format, and me assisting to get started with an idiomatic Rust implementation. + +Can't wait to see this come to fruition, as it turns out RefTables will be the default in Git 3.0, along with SHA256 as default. + +### `gix tag list` + +Thanks to [Christoph Rüßler](https://github.com/cruessler) we now have a first and very simple way of listing tags, with the specialty of making clear which tags are annotated (i.e. points to a `Tag` object). + +I also hope that one day it can learn to auto-sort by semantic version, as that would allow me to use it in place of `git tag --sort='version:refname'`. + +### Native `russh` based SSH transport is incubating + +And [here is the PR](https://github.com/GitoxideLabs/gitoxide/pull/2081). + +This is quite an undertaking but apparently the current implementation level already manages to complete a handshake successfully. + +And this is already all I know as I didn't have the time yet to disect it sufficiently. Getting this ready for production and protecting it from regression is going to be major effort though, and regression tests to me are an unsolved problem given how elaborate a test-setup would have to be. + +My hope is that we can wire it up to `gix` right away so journey tests could be used for simple SSH transport tests. + +It's early days here though, and I am sure you will hear more about it as it progresses. + +### Zlib-rs is now the default + +I don't actually know if it was mentioned sufficiently already, but thanks to [Josh Triplett](https://github.com/joshtriplett) many projects now use `zlib-rs` as default way of dealing with zip streams. `zlib-rs` is essentially `zlib-ng` written in Rust, and it solved a couple of portability and toolchain problems, while reducing complexity in our Cargo manifests as zlib-related feature toggles can soon be removed. + +### Gix in Cargo + +It took some pushing (of myself) to finally get [`cargo package` PR](https://github.com/rust-lang/cargo/pull/15534), and I can't wait for it to pass the review for more correctness during `cargo package` change detection, and at least 25% more performance thanks to faster dirty-files checking. + +Assuming this will be getting merged soon, I'd actually have nothing in the pipeline for Cargo anymore, with no obvious candidate in sight. However, when `git reset` is implemented, plenty of Cargo interactions with local Git clones could also be converted to Git. + +Cheers +Sebastian + +PS: The latest timesheets can be found [here (2025)](https://github.com/Byron/byron/blob/main/timesheets/2025.csv). \ No newline at end of file From ec26d3287f6b81daccf068d944966e216ea98d12 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 25 Jul 2025 09:18:50 +0200 Subject: [PATCH 052/296] fix: textconf programs are now always run through a shell. This is based on what Git does, see https://github.com/git/git/commit/41a457e4f814a0e514548b3178e7692129f0fcfe . This originally surfaced in https://github.com/gitbutlerapp/gitbutler/issues/9540 . --- gix-diff/src/blob/pipeline.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gix-diff/src/blob/pipeline.rs b/gix-diff/src/blob/pipeline.rs index f11a5147b58..0bcbff1af06 100644 --- a/gix-diff/src/blob/pipeline.rs +++ b/gix-diff/src/blob/pipeline.rs @@ -549,7 +549,7 @@ impl Driver { let cmd = gix_command::prepare(gix_path::from_bstr(command).into_owned()) // TODO: Add support for an actual Context, validate it *can* match Git .with_context(Default::default()) - .command_may_be_shell_script() + .with_shell() .stdin(Stdio::null()) .stdout(Stdio::piped()) .stderr(Stdio::piped()) From 7d619bb616443c366129b9c1076b04ca8a5db35a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20R=C3=BC=C3=9Fler?= Date: Fri, 25 Jul 2025 11:18:32 +0200 Subject: [PATCH 053/296] Sort tags as versions by default --- gitoxide-core/src/repository/tag.rs | 208 ++++++++++++++++++++++++---- 1 file changed, 184 insertions(+), 24 deletions(-) diff --git a/gitoxide-core/src/repository/tag.rs b/gitoxide-core/src/repository/tag.rs index 2bc109020e5..127f7b5a79e 100644 --- a/gitoxide-core/src/repository/tag.rs +++ b/gitoxide-core/src/repository/tag.rs @@ -1,33 +1,193 @@ -pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Result<()> { - let platform = repo.references()?; +use std::cmp::Ordering; + +use gix::bstr::{BStr, ByteSlice}; + +#[derive(Eq, PartialEq)] +enum VersionPart { + String(String), + Number(usize), +} + +impl Ord for VersionPart { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + match (self, other) { + (VersionPart::String(a), VersionPart::String(b)) => a.cmp(b), + (VersionPart::String(_), VersionPart::Number(_)) => Ordering::Less, + (VersionPart::Number(_), VersionPart::String(_)) => Ordering::Greater, + (VersionPart::Number(a), VersionPart::Number(b)) => a.cmp(b), + } + } +} + +impl PartialOrd for VersionPart { + fn partial_cmp(&self, other: &Self) -> Option { + Some(Ord::cmp(self, other)) + } +} + +/// `Version` is used to store multi-part version numbers. It does so in a rather naive way, +/// only distinguishing between parts that can be parsed as an integer and those that cannot. +/// +/// `Version` does not parse version numbers in any structure-aware way, so `v0.a` is parsed into +/// `v`, `0`, `.a`. +/// +/// Comparing two `Version`s comes down to comparing their `parts`. `parts` are either compared +/// numerically or lexicographically, depending on whether they are an integer or not. That way, +/// `v0.9` sorts before `v0.10` as one would expect from a version number. +/// +/// When comparing versions of different lengths, shorter versions sort before longer ones (e.g., +/// `v1.0` < `v1.0.1`). String parts always sort before numeric parts when compared directly. +/// +/// The sorting does not respect `versionsort.suffix` yet. +#[derive(Eq, PartialEq)] +struct Version { + parts: Vec, +} - for mut reference in platform.tags()?.flatten() { - let tag = reference.peel_to_tag(); - let tag_ref = tag.as_ref().map(gix::Tag::decode); - - // `name` is the name of the file in `refs/tags/`. - // This applies to both lightweight and annotated tags. - let name = reference.name().shorten(); - let mut fields = Vec::new(); - match tag_ref { - Ok(Ok(tag_ref)) => { - // `tag_name` is the name provided by the user via `git tag -a/-s/-u`. - // It is only present for annotated tags. - fields.push(format!( - "tag name: {}", - if name == tag_ref.name { "*".into() } else { tag_ref.name } - )); - if tag_ref.pgp_signature.is_some() { - fields.push("signed".into()); +impl Version { + fn parse(version: &BStr) -> Self { + let parts = version + .chunk_by(|a, b| a.is_ascii_digit() == b.is_ascii_digit()) + .map(|part| { + if let Ok(part) = part.to_str() { + match part.parse::() { + Ok(number) => VersionPart::Number(number), + Err(_) => VersionPart::String(part.to_string()), + } + } else { + VersionPart::String(String::from_utf8_lossy(part).to_string()) } + }) + .collect(); - writeln!(out, "{name} [{fields}]", fields = fields.join(", "))?; - } - _ => { - writeln!(out, "{name}")?; + Self { parts } + } +} + +impl Ord for Version { + fn cmp(&self, other: &Self) -> std::cmp::Ordering { + let mut a_iter = self.parts.iter(); + let mut b_iter = other.parts.iter(); + + loop { + match (a_iter.next(), b_iter.next()) { + (Some(a), Some(b)) => match a.cmp(b) { + Ordering::Equal => continue, + other => return other, + }, + (Some(_), None) => return Ordering::Greater, + (None, Some(_)) => return Ordering::Less, + (None, None) => return Ordering::Equal, } } } +} + +impl PartialOrd for Version { + fn partial_cmp(&self, other: &Self) -> Option { + Some(Ord::cmp(self, other)) + } +} + +pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Result<()> { + let platform = repo.references()?; + + let mut tags: Vec<_> = platform + .tags()? + .flatten() + .map(|mut reference| { + let tag = reference.peel_to_tag(); + let tag_ref = tag.as_ref().map(gix::Tag::decode); + + // `name` is the name of the file in `refs/tags/`. + // This applies to both lightweight and annotated tags. + let name = reference.name().shorten(); + let mut fields = Vec::new(); + let version = Version::parse(name); + match tag_ref { + Ok(Ok(tag_ref)) => { + // `tag_name` is the name provided by the user via `git tag -a/-s/-u`. + // It is only present for annotated tags. + fields.push(format!( + "tag name: {}", + if name == tag_ref.name { "*".into() } else { tag_ref.name } + )); + if tag_ref.pgp_signature.is_some() { + fields.push("signed".into()); + } + + (version, format!("{name} [{fields}]", fields = fields.join(", "))) + } + _ => (version, name.to_string()), + } + }) + .collect(); + + tags.sort_by(|a, b| a.0.cmp(&b.0)); + + for (_, tag) in tags { + writeln!(out, "{tag}")?; + } Ok(()) } + +#[cfg(test)] +mod tests { + use super::*; + use gix::bstr::BStr; + + #[test] + fn sorts_versions_correctly() { + let mut actual = vec![ + "v2.0.0", + "v1.10.0", + "v1.2.1", + "v1.0.0-beta", + "v1.2", + "v0.10.0", + "v0.9.0", + "v1.2.0", + "v0.1.a", + "v0.1.0", + "v10.0.0", + "1.0.0", + "v1.0.0-alpha", + "v1.0.0", + ]; + + actual.sort_by(|a, b| { + let version_a = Version::parse(BStr::new(a.as_bytes())); + let version_b = Version::parse(BStr::new(b.as_bytes())); + version_a.cmp(&version_b) + }); + + let expected = vec![ + "v0.1.0", + "v0.1.a", + "v0.9.0", + "v0.10.0", + "v1.0.0", + "v1.0.0-alpha", + "v1.0.0-beta", + "v1.2", + "v1.2.0", + "v1.2.1", + "v1.10.0", + "v2.0.0", + "v10.0.0", + "1.0.0", + ]; + + assert_eq!(actual, expected); + } + + #[test] + fn sorts_versions_with_different_lengths_correctly() { + let v1 = Version::parse(BStr::new(b"v1.0")); + let v2 = Version::parse(BStr::new(b"v1.0.1")); + + assert_eq!(v1.cmp(&v2), Ordering::Less); + assert_eq!(v2.cmp(&v1), Ordering::Greater); + } +} From 2961f602d1bf7de00634fb6915e81d7e0a922e5d Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sat, 26 Jul 2025 06:11:13 +0200 Subject: [PATCH 054/296] refactor - remove a lot of code that can be derived - remove comment that suggests we deal with the Git sorting 'scheme', which I don't think is relevant here. - cleanup tests a bit --- .../src/repository/revision/resolve.rs | 4 +- gitoxide-core/src/repository/tag.rs | 77 +++---------------- 2 files changed, 13 insertions(+), 68 deletions(-) diff --git a/gitoxide-core/src/repository/revision/resolve.rs b/gitoxide-core/src/repository/revision/resolve.rs index 7ef4c5bd9a2..bd5f06fd654 100644 --- a/gitoxide-core/src/repository/revision/resolve.rs +++ b/gitoxide-core/src/repository/revision/resolve.rs @@ -25,8 +25,6 @@ pub enum BlobFormat { pub(crate) mod function { use std::ffi::OsString; - use gix::revision::Spec; - use super::Options; use crate::{ repository::{cat::display_object, revision, revision::resolve::BlobFormat}, @@ -97,7 +95,7 @@ pub(crate) mod function { gix::path::os_str_into_bstr(&spec) .map_err(anyhow::Error::from) .and_then(|spec| repo.rev_parse(spec).map_err(Into::into)) - .map(Spec::detach) + .map(gix::revision::Spec::detach) }) .collect::, _>>()?, )?; diff --git a/gitoxide-core/src/repository/tag.rs b/gitoxide-core/src/repository/tag.rs index 127f7b5a79e..24f1572f1ef 100644 --- a/gitoxide-core/src/repository/tag.rs +++ b/gitoxide-core/src/repository/tag.rs @@ -1,30 +1,11 @@ -use std::cmp::Ordering; +use gix::bstr::{BStr, BString, ByteSlice}; -use gix::bstr::{BStr, ByteSlice}; - -#[derive(Eq, PartialEq)] +#[derive(Eq, PartialEq, PartialOrd, Ord)] enum VersionPart { - String(String), + String(BString), Number(usize), } -impl Ord for VersionPart { - fn cmp(&self, other: &Self) -> std::cmp::Ordering { - match (self, other) { - (VersionPart::String(a), VersionPart::String(b)) => a.cmp(b), - (VersionPart::String(_), VersionPart::Number(_)) => Ordering::Less, - (VersionPart::Number(_), VersionPart::String(_)) => Ordering::Greater, - (VersionPart::Number(a), VersionPart::Number(b)) => a.cmp(b), - } - } -} - -impl PartialOrd for VersionPart { - fn partial_cmp(&self, other: &Self) -> Option { - Some(Ord::cmp(self, other)) - } -} - /// `Version` is used to store multi-part version numbers. It does so in a rather naive way, /// only distinguishing between parts that can be parsed as an integer and those that cannot. /// @@ -37,9 +18,7 @@ impl PartialOrd for VersionPart { /// /// When comparing versions of different lengths, shorter versions sort before longer ones (e.g., /// `v1.0` < `v1.0.1`). String parts always sort before numeric parts when compared directly. -/// -/// The sorting does not respect `versionsort.suffix` yet. -#[derive(Eq, PartialEq)] +#[derive(Eq, PartialEq, Ord, PartialOrd)] struct Version { parts: Vec, } @@ -50,12 +29,10 @@ impl Version { .chunk_by(|a, b| a.is_ascii_digit() == b.is_ascii_digit()) .map(|part| { if let Ok(part) = part.to_str() { - match part.parse::() { - Ok(number) => VersionPart::Number(number), - Err(_) => VersionPart::String(part.to_string()), - } + part.parse::() + .map_or_else(|_| VersionPart::String(part.into()), VersionPart::Number) } else { - VersionPart::String(String::from_utf8_lossy(part).to_string()) + VersionPart::String(part.into()) } }) .collect(); @@ -64,31 +41,6 @@ impl Version { } } -impl Ord for Version { - fn cmp(&self, other: &Self) -> std::cmp::Ordering { - let mut a_iter = self.parts.iter(); - let mut b_iter = other.parts.iter(); - - loop { - match (a_iter.next(), b_iter.next()) { - (Some(a), Some(b)) => match a.cmp(b) { - Ordering::Equal => continue, - other => return other, - }, - (Some(_), None) => return Ordering::Greater, - (None, Some(_)) => return Ordering::Less, - (None, None) => return Ordering::Equal, - } - } - } -} - -impl PartialOrd for Version { - fn partial_cmp(&self, other: &Self) -> Option { - Some(Ord::cmp(self, other)) - } -} - pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Result<()> { let platform = repo.references()?; @@ -135,7 +87,7 @@ pub fn list(repo: gix::Repository, out: &mut dyn std::io::Write) -> anyhow::Resu #[cfg(test)] mod tests { use super::*; - use gix::bstr::BStr; + use std::cmp::Ordering; #[test] fn sorts_versions_correctly() { @@ -156,13 +108,8 @@ mod tests { "v1.0.0", ]; - actual.sort_by(|a, b| { - let version_a = Version::parse(BStr::new(a.as_bytes())); - let version_b = Version::parse(BStr::new(b.as_bytes())); - version_a.cmp(&version_b) - }); - - let expected = vec![ + actual.sort_by(|&a, &b| Version::parse(a.into()).cmp(&Version::parse(b.into()))); + let expected = [ "v0.1.0", "v0.1.a", "v0.9.0", @@ -184,8 +131,8 @@ mod tests { #[test] fn sorts_versions_with_different_lengths_correctly() { - let v1 = Version::parse(BStr::new(b"v1.0")); - let v2 = Version::parse(BStr::new(b"v1.0.1")); + let v1 = Version::parse("v1.0".into()); + let v2 = Version::parse("v1.0.1".into()); assert_eq!(v1.cmp(&v2), Ordering::Less); assert_eq!(v2.cmp(&v1), Ordering::Greater); From a5ba202f6f60afa79ca061a2bca833a29101bcb6 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sat, 26 Jul 2025 06:52:43 +0200 Subject: [PATCH 055/296] fix: `Prepare::with_shell()` now assures manual argument splitting isn't done on Windows either. That way `with_shell()` means what it says, previously it was a trap that was impossible to get right on Windows. --- gix-command/src/lib.rs | 5 +++++ gix-command/tests/command.rs | 11 ++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/gix-command/src/lib.rs b/gix-command/src/lib.rs index 2ad032c3bf8..438e8299aea 100644 --- a/gix-command/src/lib.rs +++ b/gix-command/src/lib.rs @@ -134,8 +134,13 @@ mod prepare { /// commands are always executed verbatim and directly, without the use of a shell. (But /// see [`command_may_be_shell_script()`](Self::command_may_be_shell_script()) on other /// methods that call that method.) + /// + /// We also disallow manual argument splitting + /// (see [`command_may_be_shell_script_disallow_manual_argument_splitting`](Self::command_may_be_shell_script_disallow_manual_argument_splitting())) + /// to assure a shell is indeed used, no matter what. pub fn with_shell(mut self) -> Self { self.use_shell = true; + self.allow_manual_arg_splitting = false; self } diff --git a/gix-command/tests/command.rs b/gix-command/tests/command.rs index 6ab8775afe9..867f55694c7 100644 --- a/gix-command/tests/command.rs +++ b/gix-command/tests/command.rs @@ -319,7 +319,7 @@ mod prepare { let sh = *SH; format!(r#""{sh}" "-c" "ls --foo \"a b\" \"$@\"" "--" "additional""#) }, - "with shell, this works as it performs word splitting" + "with shell, this works as it performs word splitting, on windows we can avoid the shell" ); } @@ -345,12 +345,7 @@ mod prepare { #[test] fn single_and_simple_arguments_without_auto_split_with_shell() { - let cmd = std::process::Command::from( - gix_command::prepare("ls") - .arg("--foo=a b") - .command_may_be_shell_script_disallow_manual_argument_splitting() - .with_shell(), - ); + let cmd = std::process::Command::from(gix_command::prepare("ls").arg("--foo=a b").with_shell()); assert_eq!( format!("{cmd:?}"), quoted(&[*SH, "-c", r#"ls \"$@\""#, "--", "--foo=a b"]) @@ -362,7 +357,6 @@ mod prepare { let cmd = std::process::Command::from( gix_command::prepare("ls") .arg("--foo=a b") - .command_may_be_shell_script_disallow_manual_argument_splitting() .with_shell() .with_quoted_command(), ); @@ -378,7 +372,6 @@ mod prepare { let cmd = std::process::Command::from( gix_command::prepare(r"C:\Users\O'Shaughnessy\with space.exe") .arg("--foo='a b'") - .command_may_be_shell_script_disallow_manual_argument_splitting() .with_shell() .with_quoted_command(), ); From 8712aafc2fe662794906a440095aae3494032b54 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 29 Jul 2025 19:23:00 +0200 Subject: [PATCH 056/296] thanks clippy --- gix-submodule/src/access.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gix-submodule/src/access.rs b/gix-submodule/src/access.rs index 2d52705c2c7..468ffc0761a 100644 --- a/gix-submodule/src/access.rs +++ b/gix-submodule/src/access.rs @@ -181,7 +181,7 @@ impl File { .sections_by_name("submodule") .into_iter() .flatten() - .any(|s| (s.header().subsection_name() == Some(name) && !std::ptr::eq(s.meta(), ours))); + .any(|s| s.header().subsection_name() == Some(name) && !std::ptr::eq(s.meta(), ours)); if !has_value_from_foreign_section { return Err(config::update::Error::CommandForbiddenInModulesConfiguration { submodule: name.to_owned(), From 9cebccf79b6622a078079c2c5b4d82e7b9151aee Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 29 Jul 2025 19:09:45 +0200 Subject: [PATCH 057/296] fix: Allow negative refspecs when pushing This effectively reverts 9c280b2de59773c6d13134e3257cf1da5731e35d --- gix-refspec/src/instruction.rs | 5 +++ gix-refspec/src/parse.rs | 5 --- gix-refspec/src/spec.rs | 1 + gix-refspec/src/write.rs | 2 +- .../generated-archives/parse_baseline.tar | Bin 52736 -> 49152 bytes gix-refspec/tests/fixtures/parse_baseline.sh | 2 +- gix-refspec/tests/refspec/parse/push.rs | 39 ++++++++++++++++-- 7 files changed, 43 insertions(+), 11 deletions(-) diff --git a/gix-refspec/src/instruction.rs b/gix-refspec/src/instruction.rs index 8cf4ef849ee..f5ec8d162b8 100644 --- a/gix-refspec/src/instruction.rs +++ b/gix-refspec/src/instruction.rs @@ -37,6 +37,11 @@ pub enum Push<'a> { /// If true, allow non-fast-forward updates of `dest`. allow_non_fast_forward: bool, }, + /// Exclude a single ref. + Exclude { + /// A full or partial ref name to exclude, or multiple if a single `*` is used. + src: &'a BStr, + }, } /// Any source can either be a ref name (full or partial) or a fully spelled out hex-sha for an object, on the remote side. diff --git a/gix-refspec/src/parse.rs b/gix-refspec/src/parse.rs index e957eee5fad..398d93294ad 100644 --- a/gix-refspec/src/parse.rs +++ b/gix-refspec/src/parse.rs @@ -8,8 +8,6 @@ pub enum Error { NegativeWithDestination, #[error("Negative specs must not be empty")] NegativeEmpty, - #[error("Negative specs are only supported when fetching")] - NegativeUnsupported, #[error("Negative specs must be object hashes")] NegativeObjectHash, #[error("Negative specs must be full ref names, starting with \"refs/\"")] @@ -62,9 +60,6 @@ pub(crate) mod function { let mode = match spec.first() { Some(&b'^') => { spec = &spec[1..]; - if operation == Operation::Push { - return Err(Error::NegativeUnsupported); - } Mode::Negative } Some(&b'+') => { diff --git a/gix-refspec/src/spec.rs b/gix-refspec/src/spec.rs index c24f78c9fb1..874ebbcd1cd 100644 --- a/gix-refspec/src/spec.rs +++ b/gix-refspec/src/spec.rs @@ -209,6 +209,7 @@ impl<'a> RefSpecRef<'a> { dst, allow_non_fast_forward: matches!(self.mode, Mode::Force), }), + (Mode::Negative, Some(src), None) => Instruction::Push(Push::Exclude { src }), (mode, src, dest) => { unreachable!( "BUG: push instructions with {:?} {:?} {:?} are not possible", diff --git a/gix-refspec/src/write.rs b/gix-refspec/src/write.rs index 3e84fddde91..317eac16c94 100644 --- a/gix-refspec/src/write.rs +++ b/gix-refspec/src/write.rs @@ -53,7 +53,7 @@ impl Instruction<'_> { out.write_all(ref_or_pattern) } Instruction::Fetch(Fetch::Only { src }) => out.write_all(src), - Instruction::Fetch(Fetch::Exclude { src }) => { + Instruction::Fetch(Fetch::Exclude { src }) | Instruction::Push(Push::Exclude { src }) => { out.write_all(b"^")?; out.write_all(src) } diff --git a/gix-refspec/tests/fixtures/generated-archives/parse_baseline.tar b/gix-refspec/tests/fixtures/generated-archives/parse_baseline.tar index e4e9d91d7372f39e2dbb3d1ff3dea68b0f25ccf2..d5e60c90195a75f17d9540402cc77c4733708c90 100644 GIT binary patch delta 309 zcmZpe!`#royn&TvGwT{wrp;U%elsp+UB|SURfL^sGmpoA-p$-?EJB<4>;ABB=AOaG zvY01>Wi!v5|IC}Y%UC!z^N0OmUCgZ`wwZguFXqXtISmq~#teoACT4~PMg~U41`GxU zh9)K^Kzec_W6Ea6+z8gq@kI-nCn~UQ65|GHbNa=)m~{ovb`}nv&AdWCfVK+&ZC~=6 zdD50v2}3hG3mtpM$Zu$23AEhU*u+q`G%vGa zbKtb~j1v`{CLL;(Fu`=1xw#3F%sO%4T;v zyPL$KX#0Z16H@C}grJq+4WTS5@PzmW@DKP0@Q7Maxih{Q> zDRZ5lmS?gqr~B0Q!Ee!cVGfZ@?(89)z(6d&^J=pg4zd??)PgdH(Jr^ape6|{e_lj9 zV3q}rZM8vfQGFMINsKP3=LAum*oZF3Sd1FD7<|VC$3!qeBSC|}^?XhVGU3DyG3^89 zx17KS-LXxJ>AnZdMom15KNy6!;lSa$xP=yA&GacpJfSplWf&vp1-ec>&kT?s2ix)U z7*j^Hi03C_;x7VGC^|2nC77WQR_2Dx4Qf%J8gc%0q-;8t&&fGQvM#Y-CLWT2|;1t|KUZGnW+tZ|Y9 z9z^ga+8%AHErOaAq*b_m8!PDt+!oaT9dqnm49dLNhhkrxi_F3$A@+U2wVs(vY}Z7! z{}zwJ0hW&@j(-~UR=}`#ZwAaV=F!sz3&kw(+qhH`!sej9Ug)PY2RPeo(EhKNqA+X% zik+!uH#Wn1a|5-GyXRsyCn}P3qNa7{ zNo;*2*u-A!jk9B|l83Wr1(10RCG5e7es}>0Hc*Vy9Y_eax9ihA7dQHQuE98H##0XR zKoBFfa3g-jyG0gVgb;{ffM(*KCMzIJsAjv5RZx+$w-77fEo9>l;@wnbN&}McxREu2 zZE{kHon(ympg!mp(e09_mbg@6D7Kk8i1*KVR-{`QdbG wxUy6zM{BSDn7RuK_rD#Q!n@eY%Ho9!r9~~U* Date: Tue, 29 Jul 2025 19:25:20 +0200 Subject: [PATCH 058/296] Bump gix-ref rust version to 1.74 for `std::io::Error::other` support. --- gix-ref/Cargo.toml | 2 +- gix-ref/src/store/file/find.rs | 8 ++++---- gix-ref/src/store/file/log/iter.rs | 11 +++++------ gix-ref/src/store/file/log/line.rs | 2 +- gix-ref/src/store/file/overlay_iter.rs | 2 +- gix-ref/src/store/file/transaction/commit.rs | 2 +- gix-ref/tests/Cargo.toml | 2 +- 7 files changed, 14 insertions(+), 15 deletions(-) diff --git a/gix-ref/Cargo.toml b/gix-ref/Cargo.toml index 97fc548b629..077458f519b 100644 --- a/gix-ref/Cargo.toml +++ b/gix-ref/Cargo.toml @@ -9,7 +9,7 @@ description = "A crate to handle git references" authors = ["Sebastian Thiel "] edition = "2021" include = ["src/**/*", "LICENSE-*"] -rust-version = "1.70" +rust-version = "1.74" autotests = false [lib] diff --git a/gix-ref/src/store/file/find.rs b/gix-ref/src/store/file/find.rs index 09d0d960ed2..6e49da77e4e 100644 --- a/gix-ref/src/store/file/find.rs +++ b/gix-ref/src/store/file/find.rs @@ -280,10 +280,10 @@ impl file::Store { .filter_map(|c| gix_path::try_os_str_into_bstr(c.as_os_str().into()).ok()) .any(|c| gix_validate::path::component_is_windows_device(c.as_ref())) { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, - format!("Illegal use of reserved Windows device name in \"{}\"", name.as_bstr()), - )); + return Err(std::io::Error::other(format!( + "Illegal use of reserved Windows device name in \"{}\"", + name.as_bstr() + ))); } let ref_path = base.join(relative_path); diff --git a/gix-ref/src/store/file/log/iter.rs b/gix-ref/src/store/file/log/iter.rs index 313d4df8c60..d2d1dbcf751 100644 --- a/gix-ref/src/store/file/log/iter.rs +++ b/gix-ref/src/store/file/log/iter.rs @@ -129,8 +129,7 @@ where { let pos = log.seek(std::io::SeekFrom::End(0))?; if buf.is_empty() { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, + return Err(std::io::Error::other( "Zero sized buffers are not allowed, use 256 bytes or more for typical logs", )); } @@ -217,10 +216,10 @@ where } else { let npos = last_read_pos.saturating_sub((self.buf.len() - end) as u64); if npos == last_read_pos { - return Some(Err(std::io::Error::new( - std::io::ErrorKind::Other, - format!("buffer too small for line size, got until {:?}", self.buf.as_bstr()), - ) + return Some(Err(std::io::Error::other(format!( + "buffer too small for line size, got until {:?}", + self.buf.as_bstr() + )) .into())); } let n = (last_read_pos - npos) as usize; diff --git a/gix-ref/src/store/file/log/line.rs b/gix-ref/src/store/file/log/line.rs index f07deff2306..c0b7a435da7 100644 --- a/gix-ref/src/store/file/log/line.rs +++ b/gix-ref/src/store/file/log/line.rs @@ -26,7 +26,7 @@ mod write { impl From for io::Error { fn from(err: Error) -> Self { - io::Error::new(io::ErrorKind::Other, err) + io::Error::other(err) } } diff --git a/gix-ref/src/store/file/overlay_iter.rs b/gix-ref/src/store/file/overlay_iter.rs index 8c4b2c36809..f6eb8d03434 100644 --- a/gix-ref/src/store/file/overlay_iter.rs +++ b/gix-ref/src/store/file/overlay_iter.rs @@ -438,7 +438,7 @@ impl file::Store { Some(prefix) => packed.iter_prefixed(prefix.into_owned()), None => packed.iter(), } - .map_err(|err| std::io::Error::new(std::io::ErrorKind::Other, err))? + .map_err(std::io::Error::other)? .peekable(), ), None => None, diff --git a/gix-ref/src/store/file/transaction/commit.rs b/gix-ref/src/store/file/transaction/commit.rs index fddfa8138f0..ed7e57799cb 100644 --- a/gix-ref/src/store/file/transaction/commit.rs +++ b/gix-ref/src/store/file/transaction/commit.rs @@ -97,7 +97,7 @@ impl Transaction<'_, '_> { // TODO: when Kind::IsADirectory becomes stable, use that. let err = if err.instance.resource_path().is_dir() { gix_tempfile::remove_dir::empty_depth_first(err.instance.resource_path()) - .map_err(|io_err| std::io::Error::new(std::io::ErrorKind::Other, io_err)) + .map_err(std::io::Error::other) .and_then(|_| err.instance.commit().map_err(|err| err.error)) .err() } else { diff --git a/gix-ref/tests/Cargo.toml b/gix-ref/tests/Cargo.toml index ee88ea4fedd..7c66d24f832 100644 --- a/gix-ref/tests/Cargo.toml +++ b/gix-ref/tests/Cargo.toml @@ -9,7 +9,7 @@ license = "MIT OR Apache-2.0" description = "Test the gix-ref crate with feature toggles" authors = ["Sebastian Thiel "] edition = "2021" -rust-version = "1.70" +rust-version = "1.74" [features] gix-features-parallel = ["gix-features/parallel"] # test sorted parallel loose file traversal From 428412c9ff05caabb4f8714d5de769603e18a8f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 08:47:05 +0000 Subject: [PATCH 059/296] Bump the cargo group with 41 updates Bumps the cargo group with 41 updates: | Package | From | To | | --- | --- | --- | | [clap](https://github.com/clap-rs/clap) | `4.5.40` | `4.5.42` | | [clap_complete](https://github.com/clap-rs/clap) | `4.5.54` | `4.5.55` | | [winnow](https://github.com/winnow-rs/winnow) | `0.7.11` | `0.7.12` | | [memmap2](https://github.com/RazrFalcon/memmap2-rs) | `0.9.5` | `0.9.7` | | [criterion](https://github.com/bheisler/criterion.rs) | `0.6.0` | `0.7.0` | | [crc32fast](https://github.com/srijs/rust-crc32fast) | `1.4.2` | `1.5.0` | | [rustix](https://github.com/bytecodealliance/rustix) | `1.0.7` | `1.0.8` | | [trybuild](https://github.com/dtolnay/trybuild) | `1.0.105` | `1.0.110` | | [windows-sys](https://github.com/microsoft/windows-rs) | `0.59.0` | `0.60.2` | | [blocking](https://github.com/smol-rs/blocking) | `1.6.1` | `1.6.2` | | [known-folders](https://github.com/artichoke/known-folders-rs) | `1.2.0` | `1.3.1` | | [async-io](https://github.com/smol-rs/async-io) | `2.4.1` | `2.5.0` | | [rusqlite](https://github.com/rusqlite/rusqlite) | `0.36.0` | `0.37.0` | | [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.35.2` | `0.36.1` | | [serde_json](https://github.com/serde-rs/json) | `1.0.140` | `1.0.142` | | [zip](https://github.com/zip-rs/zip2) | `4.2.0` | `4.3.0` | | [aws-lc-rs](https://github.com/aws/aws-lc-rs) | `1.13.1` | `1.13.3` | | [aws-lc-sys](https://github.com/aws/aws-lc-rs) | `0.29.0` | `0.30.0` | | [castaway](https://github.com/sagebind/castaway) | `0.2.3` | `0.2.4` | | [cc](https://github.com/rust-lang/cc-rs) | `1.2.27` | `1.2.30` | | [clap_builder](https://github.com/clap-rs/clap) | `4.5.40` | `4.5.42` | | [clap_derive](https://github.com/clap-rs/clap) | `4.5.40` | `4.5.41` | | [criterion-plot](https://github.com/bheisler/criterion.rs) | `0.5.0` | `0.6.0` | | [hyper-util](https://github.com/hyperium/hyper-util) | `0.1.14` | `0.1.16` | | [itertools](https://github.com/rust-itertools/itertools) | `0.10.5` | `0.12.1` | | libredox | `0.1.4` | `0.1.9` | | [libsqlite3-sys](https://github.com/rusqlite/rusqlite) | `0.34.0` | `0.35.0` | | [litrs](https://github.com/LukasKalbertodt/litrs) | `0.4.1` | `0.4.2` | | [polling](https://github.com/smol-rs/polling) | `3.8.0` | `3.9.0` | | [prettyplease](https://github.com/dtolnay/prettyplease) | `0.2.35` | `0.2.36` | | [rand](https://github.com/rust-random/rand) | `0.9.1` | `0.9.2` | | redox_syscall | `0.5.13` | `0.5.17` | | [rustc-demangle](https://github.com/rust-lang/rustc-demangle) | `0.1.25` | `0.1.26` | | [rustls](https://github.com/rustls/rustls) | `0.23.28` | `0.23.31` | | [rustls-webpki](https://github.com/rustls/webpki) | `0.103.3` | `0.103.4` | | [sdd](https://github.com/wvwwvwwv/scalable-delayed-dealloc) | `3.0.8` | `3.0.10` | | [serde_spanned](https://github.com/toml-rs/toml) | `0.6.9` | `1.0.0` | | [tokio](https://github.com/tokio-rs/tokio) | `1.45.1` | `1.47.0` | | [toml](https://github.com/toml-rs/toml) | `0.8.23` | `0.9.4` | | [toml_datetime](https://github.com/toml-rs/toml) | `0.6.11` | `0.7.0` | | [webpki-roots](https://github.com/rustls/webpki-roots) | `1.0.0` | `1.0.2` | Updates `clap` from 4.5.40 to 4.5.42 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.40...clap_complete-v4.5.42) Updates `clap_complete` from 4.5.54 to 4.5.55 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.5.54...clap_complete-v4.5.55) Updates `winnow` from 0.7.11 to 0.7.12 - [Changelog](https://github.com/winnow-rs/winnow/blob/main/CHANGELOG.md) - [Commits](https://github.com/winnow-rs/winnow/compare/v0.7.11...v0.7.12) Updates `memmap2` from 0.9.5 to 0.9.7 - [Changelog](https://github.com/RazrFalcon/memmap2-rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/RazrFalcon/memmap2-rs/commits) Updates `criterion` from 0.6.0 to 0.7.0 - [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/bheisler/criterion.rs/compare/0.6.0...0.7.0) Updates `crc32fast` from 1.4.2 to 1.5.0 - [Commits](https://github.com/srijs/rust-crc32fast/compare/v1.4.2...v1.5.0) Updates `rustix` from 1.0.7 to 1.0.8 - [Release notes](https://github.com/bytecodealliance/rustix/releases) - [Changelog](https://github.com/bytecodealliance/rustix/blob/main/CHANGES.md) - [Commits](https://github.com/bytecodealliance/rustix/compare/v1.0.7...v1.0.8) Updates `trybuild` from 1.0.105 to 1.0.110 - [Release notes](https://github.com/dtolnay/trybuild/releases) - [Commits](https://github.com/dtolnay/trybuild/compare/1.0.105...1.0.110) Updates `windows-sys` from 0.59.0 to 0.60.2 - [Release notes](https://github.com/microsoft/windows-rs/releases) - [Commits](https://github.com/microsoft/windows-rs/commits) Updates `blocking` from 1.6.1 to 1.6.2 - [Release notes](https://github.com/smol-rs/blocking/releases) - [Changelog](https://github.com/smol-rs/blocking/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/blocking/compare/v1.6.1...v1.6.2) Updates `known-folders` from 1.2.0 to 1.3.1 - [Release notes](https://github.com/artichoke/known-folders-rs/releases) - [Commits](https://github.com/artichoke/known-folders-rs/compare/v1.2.0...v1.3.1) Updates `async-io` from 2.4.1 to 2.5.0 - [Release notes](https://github.com/smol-rs/async-io/releases) - [Changelog](https://github.com/smol-rs/async-io/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/async-io/compare/v2.4.1...v2.5.0) Updates `rusqlite` from 0.36.0 to 0.37.0 - [Release notes](https://github.com/rusqlite/rusqlite/releases) - [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md) - [Commits](https://github.com/rusqlite/rusqlite/compare/v0.36.0...v0.37.0) Updates `sysinfo` from 0.35.2 to 0.36.1 - [Changelog](https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md) - [Commits](https://github.com/GuillaumeGomez/sysinfo/compare/v0.35.2...v0.36.1) Updates `serde_json` from 1.0.140 to 1.0.142 - [Release notes](https://github.com/serde-rs/json/releases) - [Commits](https://github.com/serde-rs/json/compare/v1.0.140...v1.0.142) Updates `zip` from 4.2.0 to 4.3.0 - [Release notes](https://github.com/zip-rs/zip2/releases) - [Changelog](https://github.com/zip-rs/zip2/blob/master/CHANGELOG.md) - [Commits](https://github.com/zip-rs/zip2/compare/v4.2.0...v4.3.0) Updates `aws-lc-rs` from 1.13.1 to 1.13.3 - [Release notes](https://github.com/aws/aws-lc-rs/releases) - [Commits](https://github.com/aws/aws-lc-rs/compare/v1.13.1...v1.13.3) Updates `aws-lc-sys` from 0.29.0 to 0.30.0 - [Release notes](https://github.com/aws/aws-lc-rs/releases) - [Commits](https://github.com/aws/aws-lc-rs/compare/aws-lc-sys/v0.29.0...aws-lc-sys/v0.30.0) Updates `castaway` from 0.2.3 to 0.2.4 - [Release notes](https://github.com/sagebind/castaway/releases) - [Changelog](https://github.com/sagebind/castaway/blob/master/CHANGELOG.md) - [Commits](https://github.com/sagebind/castaway/compare/0.2.3...v0.2.4) Updates `cc` from 1.2.27 to 1.2.30 - [Release notes](https://github.com/rust-lang/cc-rs/releases) - [Changelog](https://github.com/rust-lang/cc-rs/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/cc-rs/compare/cc-v1.2.27...cc-v1.2.30) Updates `clap_builder` from 4.5.40 to 4.5.42 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.5.40...v4.5.42) Updates `clap_derive` from 4.5.40 to 4.5.41 - [Release notes](https://github.com/clap-rs/clap/releases) - [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md) - [Commits](https://github.com/clap-rs/clap/compare/v4.5.40...v4.5.41) Updates `criterion-plot` from 0.5.0 to 0.6.0 - [Changelog](https://github.com/bheisler/criterion.rs/blob/master/CHANGELOG.md) - [Commits](https://github.com/bheisler/criterion.rs/compare/0.5.0...0.6.0) Updates `hyper-util` from 0.1.14 to 0.1.16 - [Release notes](https://github.com/hyperium/hyper-util/releases) - [Changelog](https://github.com/hyperium/hyper-util/blob/master/CHANGELOG.md) - [Commits](https://github.com/hyperium/hyper-util/compare/v0.1.14...v0.1.16) Updates `itertools` from 0.10.5 to 0.12.1 - [Changelog](https://github.com/rust-itertools/itertools/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-itertools/itertools/compare/v0.10.5...v0.12.1) Updates `libredox` from 0.1.4 to 0.1.9 Updates `libsqlite3-sys` from 0.34.0 to 0.35.0 - [Release notes](https://github.com/rusqlite/rusqlite/releases) - [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md) - [Commits](https://github.com/rusqlite/rusqlite/compare/v0.34.0...v0.35.0) Updates `litrs` from 0.4.1 to 0.4.2 - [Release notes](https://github.com/LukasKalbertodt/litrs/releases) - [Changelog](https://github.com/LukasKalbertodt/litrs/blob/main/CHANGELOG.md) - [Commits](https://github.com/LukasKalbertodt/litrs/compare/v0.4.1...v0.4.2) Updates `polling` from 3.8.0 to 3.9.0 - [Release notes](https://github.com/smol-rs/polling/releases) - [Changelog](https://github.com/smol-rs/polling/blob/master/CHANGELOG.md) - [Commits](https://github.com/smol-rs/polling/compare/v3.8.0...v3.9.0) Updates `prettyplease` from 0.2.35 to 0.2.36 - [Release notes](https://github.com/dtolnay/prettyplease/releases) - [Commits](https://github.com/dtolnay/prettyplease/compare/0.2.35...0.2.36) Updates `rand` from 0.9.1 to 0.9.2 - [Release notes](https://github.com/rust-random/rand/releases) - [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-random/rand/compare/rand_core-0.9.1...rand_core-0.9.2) Updates `redox_syscall` from 0.5.13 to 0.5.17 Updates `rustc-demangle` from 0.1.25 to 0.1.26 - [Release notes](https://github.com/rust-lang/rustc-demangle/releases) - [Changelog](https://github.com/rust-lang/rustc-demangle/blob/main/CHANGELOG.md) - [Commits](https://github.com/rust-lang/rustc-demangle/commits/rustc-demangle-v0.1.26) Updates `rustls` from 0.23.28 to 0.23.31 - [Release notes](https://github.com/rustls/rustls/releases) - [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md) - [Commits](https://github.com/rustls/rustls/compare/v/0.23.28...v/0.23.31) Updates `rustls-webpki` from 0.103.3 to 0.103.4 - [Release notes](https://github.com/rustls/webpki/releases) - [Commits](https://github.com/rustls/webpki/compare/v/0.103.3...v/0.103.4) Updates `sdd` from 3.0.8 to 3.0.10 - [Changelog](https://github.com/wvwwvwwv/scalable-delayed-dealloc/blob/main/CHANGELOG.md) - [Commits](https://github.com/wvwwvwwv/scalable-delayed-dealloc/commits) Updates `serde_spanned` from 0.6.9 to 1.0.0 - [Commits](https://github.com/toml-rs/toml/compare/serde_spanned-v0.6.9...serde_spanned-v1.0.0) Updates `tokio` from 1.45.1 to 1.47.0 - [Release notes](https://github.com/tokio-rs/tokio/releases) - [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.45.1...tokio-1.47.0) Updates `toml` from 0.8.23 to 0.9.4 - [Commits](https://github.com/toml-rs/toml/compare/toml-v0.8.23...toml-v0.9.4) Updates `toml_datetime` from 0.6.11 to 0.7.0 - [Commits](https://github.com/toml-rs/toml/compare/toml_datetime-v0.6.11...toml_datetime-v0.7.0) Updates `webpki-roots` from 1.0.0 to 1.0.2 - [Release notes](https://github.com/rustls/webpki-roots/releases) - [Commits](https://github.com/rustls/webpki-roots/compare/v/1.0.0...v/1.0.2) --- updated-dependencies: - dependency-name: clap dependency-version: 4.5.42 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_complete dependency-version: 4.5.55 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: winnow dependency-version: 0.7.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: memmap2 dependency-version: 0.9.7 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: criterion dependency-version: 0.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: crc32fast dependency-version: 1.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: rustix dependency-version: 1.0.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: trybuild dependency-version: 1.0.110 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: windows-sys dependency-version: 0.60.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: blocking dependency-version: 1.6.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: known-folders dependency-version: 1.3.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: async-io dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: rusqlite dependency-version: 0.37.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: sysinfo dependency-version: 0.36.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: serde_json dependency-version: 1.0.142 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: cargo - dependency-name: zip dependency-version: 4.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: cargo - dependency-name: aws-lc-rs dependency-version: 1.13.3 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: aws-lc-sys dependency-version: 0.30.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: castaway dependency-version: 0.2.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: cc dependency-version: 1.2.30 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_builder dependency-version: 4.5.42 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: clap_derive dependency-version: 4.5.41 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: criterion-plot dependency-version: 0.6.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: hyper-util dependency-version: 0.1.16 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: itertools dependency-version: 0.12.1 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: libredox dependency-version: 0.1.9 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: libsqlite3-sys dependency-version: 0.35.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: litrs dependency-version: 0.4.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: polling dependency-version: 3.9.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: prettyplease dependency-version: 0.2.36 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rand dependency-version: 0.9.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: redox_syscall dependency-version: 0.5.17 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustc-demangle dependency-version: 0.1.26 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustls dependency-version: 0.23.31 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: rustls-webpki dependency-version: 0.103.4 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: sdd dependency-version: 3.0.10 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo - dependency-name: serde_spanned dependency-version: 1.0.0 dependency-type: indirect update-type: version-update:semver-major dependency-group: cargo - dependency-name: tokio dependency-version: 1.47.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: toml dependency-version: 0.9.4 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: toml_datetime dependency-version: 0.7.0 dependency-type: indirect update-type: version-update:semver-minor dependency-group: cargo - dependency-name: webpki-roots dependency-version: 1.0.2 dependency-type: indirect update-type: version-update:semver-patch dependency-group: cargo ... Signed-off-by: dependabot[bot] --- Cargo.lock | 344 +++++++++++++++++++++++-------------- Cargo.toml | 4 +- gitoxide-core/Cargo.toml | 10 +- gix-actor/Cargo.toml | 2 +- gix-archive/Cargo.toml | 2 +- gix-commitgraph/Cargo.toml | 2 +- gix-config/Cargo.toml | 4 +- gix-features/Cargo.toml | 2 +- gix-index/Cargo.toml | 4 +- gix-object/Cargo.toml | 4 +- gix-pack/Cargo.toml | 2 +- gix-pack/tests/Cargo.toml | 2 +- gix-path/Cargo.toml | 2 +- gix-prompt/Cargo.toml | 2 +- gix-protocol/Cargo.toml | 2 +- gix-ref/Cargo.toml | 4 +- gix-sec/Cargo.toml | 2 +- gix-transport/Cargo.toml | 2 +- tests/it/Cargo.toml | 2 +- tests/tools/Cargo.toml | 2 +- 20 files changed, 242 insertions(+), 158 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 729c8a61507..2787fc5a454 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -194,9 +194,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1237c0ae75a0f3765f58910ff9cdd0a12eeb39ab2f4c7de23262f337f0aacbb3" +checksum = "19634d6336019ef220f09fd31168ce5c184b295cbf80345437cc36094ef223ca" dependencies = [ "async-lock", "cfg-if", @@ -205,10 +205,9 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.0.7", + "rustix 1.0.8", "slab", - "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -291,9 +290,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "aws-lc-rs" -version = "1.13.1" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fcc8f365936c834db5514fc45aee5b1202d677e6b40e48468aaaa8183ca8c7" +checksum = "5c953fe1ba023e6b7730c0d4b031d06f267f23a46167dcbd40316644b10a17ba" dependencies = [ "aws-lc-sys", "zeroize", @@ -301,9 +300,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61b1d86e7705efe1be1b569bab41d4fa1e14e220b60a160f78de2db687add079" +checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ "bindgen", "cc", @@ -342,7 +341,7 @@ dependencies = [ "bitflags 2.9.1", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.12.1", "lazy_static", "lazycell", "log", @@ -382,9 +381,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" dependencies = [ "async-channel 2.3.1", "async-task", @@ -451,18 +450,18 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "castaway" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" dependencies = [ "rustversion", ] [[package]] name = "cc" -version = "1.2.27" +version = "1.2.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7" dependencies = [ "jobserver", "libc", @@ -536,9 +535,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882" dependencies = [ "clap_builder", "clap_derive", @@ -546,9 +545,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966" dependencies = [ "anstream", "anstyle", @@ -558,18 +557,18 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.5.54" +version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aad5b1b4de04fead402672b48897030eec1f3bfe1550776322f59f6d6e6a5677" +checksum = "a5abde44486daf70c5be8b8f8f1b66c49f86236edf6fa2abadb4d961c4c6229a" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.5.40" +version = "4.5.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" dependencies = [ "heck", "proc-macro2", @@ -709,18 +708,18 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "criterion" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" +checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" dependencies = [ "anes", "cast", @@ -741,12 +740,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" dependencies = [ "cast", - "itertools 0.10.5", + "itertools 0.13.0", ] [[package]] @@ -874,7 +873,7 @@ dependencies = [ "openssl-probe", "openssl-sys", "schannel", - "socket2", + "socket2 0.5.10", "windows-sys 0.59.0", ] @@ -1023,7 +1022,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] @@ -1881,7 +1880,7 @@ dependencies = [ "itoa", "libc", "memmap2", - "rustix 1.0.7", + "rustix 1.0.8", "serde", "smallvec", "thiserror 2.0.12", @@ -2168,7 +2167,7 @@ dependencies = [ "gix-config-value", "gix-testtools", "parking_lot", - "rustix 1.0.7", + "rustix 1.0.8", "serial_test", "thiserror 2.0.12", ] @@ -2317,7 +2316,7 @@ dependencies = [ "libc", "serde", "tempfile", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2853,9 +2852,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64", "bytes", @@ -2869,7 +2868,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.5.10", "system-configuration", "tokio", "tower-service", @@ -3035,6 +3034,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "io-uring" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -3068,7 +3078,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3093,15 +3103,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.12.1" @@ -3138,7 +3139,7 @@ dependencies = [ "portable-atomic", "portable-atomic-util", "serde", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3221,11 +3222,11 @@ dependencies = [ [[package]] name = "known-folders" -version = "1.2.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7d9a1740cc8b46e259a0eb787d79d855e79ff10b9855a5eba58868d5da7927c" +checksum = "c644f4623d1c55eb60a9dac35e0858a59f982fb87db6ce34c872372b0a5b728f" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3278,14 +3279,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.53.3", ] [[package]] name = "libredox" -version = "0.1.4" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ "bitflags 2.9.1", "libc", @@ -3294,9 +3295,9 @@ dependencies = [ [[package]] name = "libsqlite3-sys" -version = "0.34.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91632f3b4fb6bd1d72aa3d78f41ffecfcf2b1a6648d8c241dbe7dbfaf4875e15" +checksum = "133c182a6a2c87864fe97778797e46c7e999672690dc9fa3ee8e241aa4a9c13f" dependencies = [ "cc", "pkg-config", @@ -3344,9 +3345,9 @@ checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" +checksum = "f5e54036fe321fd421e10d732f155734c4e4afd610dd556d9a82833ab3ee0bed" [[package]] name = "lock_api" @@ -3418,9 +3419,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "483758ad303d734cec05e5c12b41d7e93e6a6390c5e9dae6bdeb7c1259012d28" dependencies = [ "libc", ] @@ -3765,17 +3766,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.8.0" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b53a684391ad002dd6a596ceb6c74fd004fdce75f4be2e3f615068abbea5fd50" +checksum = "8ee9b2fa7a4517d2c91ff5bc6c297a427a96749d15f98fcdbb22c05571a4d4b7" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.0.7", - "tracing", - "windows-sys 0.59.0", + "rustix 1.0.8", + "windows-sys 0.60.2", ] [[package]] @@ -3823,9 +3823,9 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.35" +version = "0.2.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" +checksum = "ff24dfcda44452b9816fff4cd4227e1bb73ff5a2f1bc1105aa92fb8565ce44d2" dependencies = [ "proc-macro2", "syn 2.0.104", @@ -3885,7 +3885,7 @@ dependencies = [ "quinn-udp", "rustc-hash 2.1.1", "rustls", - "socket2", + "socket2 0.5.10", "thiserror 2.0.12", "tokio", "tracing", @@ -3922,9 +3922,9 @@ dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3944,9 +3944,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", "rand_core", @@ -4013,9 +4013,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ "bitflags 2.9.1", ] @@ -4111,9 +4111,9 @@ dependencies = [ [[package]] name = "rusqlite" -version = "0.36.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3de23c3319433716cf134eed225fe9986bc24f63bed9be9f20c329029e672dc7" +checksum = "165ca6e57b20e1351573e3729b958bc62f0e48025386970b6e4d29e7a7e71f3f" dependencies = [ "bitflags 2.9.1", "fallible-iterator", @@ -4125,9 +4125,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -4151,27 +4151,27 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ "bitflags 2.9.1", "errno", "libc", "linux-raw-sys 0.9.3", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "aws-lc-rs", "once_cell", @@ -4235,7 +4235,7 @@ dependencies = [ "security-framework 3.2.0", "security-framework-sys", "webpki-root-certs 0.26.11", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4246,9 +4246,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "aws-lc-rs", "ring", @@ -4303,9 +4303,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sdd" -version = "3.0.8" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584e070911c7017da6cb2eb0788d09f43d789029b5877d3e5ecc8acf86ceee21" +checksum = "490dcfcbfef26be6800d11870ff2df8774fa6e86d047e3e8c8a76b25655e41ca" [[package]] name = "security-framework" @@ -4365,9 +4365,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", @@ -4377,9 +4377,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" dependencies = [ "serde", ] @@ -4524,6 +4524,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "stability" version = "0.2.1" @@ -4630,9 +4640,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.35.2" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3ffa3e4ff2b324a57f7aeb3c349656c7b127c3c189520251a648102a92496e" +checksum = "252800745060e7b9ffb7b2badbd8b31cfa4aa2e61af879d0a3bf2a317c20217d" dependencies = [ "libc", "memchr", @@ -4689,8 +4699,8 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix 1.0.7", - "windows-sys 0.52.0", + "rustix 1.0.8", + "windows-sys 0.59.0", ] [[package]] @@ -4708,7 +4718,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45c6481c4829e4cc63825e62c49186a34538b7b2750b73b266581ffb612fb5ed" dependencies = [ - "rustix 1.0.7", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -4804,17 +4814,19 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "43864ed400b6043a4757a25c7a64a8efde741aed79a056a2fb348a406701bb35" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio 1.0.3", "pin-project-lite", - "socket2", - "windows-sys 0.52.0", + "slab", + "socket2 0.6.0", + "windows-sys 0.59.0", ] [[package]] @@ -4852,44 +4864,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.23" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "41ae868b5a0f67631c14589f7e250c1ea2c574ee5ba21c6c8dd4b1485705a5a1" dependencies = [ + "indexmap", "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" dependencies = [ "serde", ] [[package]] -name = "toml_edit" -version = "0.22.27" +name = "toml_parser" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30" dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "toml_write", "winnow", ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_writer" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" [[package]] name = "tower" @@ -5014,9 +5024,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "trybuild" -version = "1.0.105" +version = "1.0.110" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c9bf9513a2f4aeef5fdac8677d7d349c79fdbcc03b9c86da6e9d254f1e43be2" +checksum = "32e257d7246e7a9fd015fb0b28b330a8d4142151a33f03e6a497754f4b1f6a8e" dependencies = [ "glob", "serde", @@ -5296,9 +5306,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] @@ -5504,6 +5514,15 @@ 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.3", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -5543,13 +5562,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "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.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" +dependencies = [ + "windows-link", + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows-threading" version = "0.1.0" @@ -5577,6 +5613,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -5595,6 +5637,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -5613,12 +5661,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -5637,6 +5697,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -5655,6 +5721,12 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -5673,6 +5745,12 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -5691,11 +5769,17 @@ 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.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ "memchr", ] @@ -5732,7 +5816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", - "rustix 1.0.7", + "rustix 1.0.8", ] [[package]] @@ -5856,9 +5940,9 @@ dependencies = [ [[package]] name = "zip" -version = "4.2.0" +version = "4.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ab361742de920c5535880f89bbd611ee62002bf11341d16a5f057bb8ba6899" +checksum = "9aed4ac33e8eb078c89e6cbb1d5c4c7703ec6d299fc3e7c3695af8f8b423468b" dependencies = [ "arbitrary", "crc32fast", diff --git a/Cargo.toml b/Cargo.toml index 913f727b4bc..3d4ba2cd8d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -155,8 +155,8 @@ gitoxide-core = { version = "^0.48.0", path = "gitoxide-core" } gix-features = { version = "^0.43.0", path = "gix-features" } gix = { version = "^0.73.0", path = "gix", default-features = false } -clap = { version = "4.5.40", features = ["derive", "cargo"] } -clap_complete = "4.5.54" +clap = { version = "4.5.42", features = ["derive", "cargo"] } +clap_complete = "4.5.55" prodash = { version = "30.0.1", optional = true } is-terminal = { version = "0.4.0", optional = true } env_logger = { version = "0.11.8", default-features = false } diff --git a/gitoxide-core/Cargo.toml b/gitoxide-core/Cargo.toml index 82d80486002..0e8b5ab96b0 100644 --- a/gitoxide-core/Cargo.toml +++ b/gitoxide-core/Cargo.toml @@ -65,9 +65,9 @@ tempfile = "3.20.0" async-trait = { version = "0.1.51", optional = true } async-net = { version = "2.0", optional = true } futures-lite = { version = "2.1.0", optional = true } -async-io = { version = "2.4", optional = true } +async-io = { version = "2.5", optional = true } futures-io = { version = "0.3.16", optional = true } -blocking = { version = "1.0.2", optional = true } +blocking = { version = "1.6.2", optional = true } # for 'organize' functionality gix-url = { version = "^0.32.0", path = "../gix-url", optional = true } @@ -79,12 +79,12 @@ crossbeam-channel = { version = "0.5.15", optional = true } smallvec = { version = "1.15.1", optional = true } # for 'query' and 'corpus' -rusqlite = { version = "0.36.0", optional = true, features = ["bundled"] } +rusqlite = { version = "0.37.0", optional = true, features = ["bundled"] } # for 'corpus' parking_lot = { version = "0.12.4", optional = true } -sysinfo = { version = "0.35.2", optional = true, default-features = false, features = ["system"] } -serde_json = { version = "1.0.65", optional = true } +sysinfo = { version = "0.36.1", optional = true, default-features = false, features = ["system"] } +serde_json = { version = "1.0.142", optional = true } tracing-forest = { version = "0.1.5", features = ["serde"], optional = true } tracing-subscriber = { version = "0.3.17", optional = true } tracing = { version = "0.1.37", optional = true } diff --git a/gix-actor/Cargo.toml b/gix-actor/Cargo.toml index 5b63b6262cf..994eea3cfab 100644 --- a/gix-actor/Cargo.toml +++ b/gix-actor/Cargo.toml @@ -27,7 +27,7 @@ bstr = { version = "1.12.0", default-features = false, features = [ "std", "unicode", ] } -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } itoa = "1.0.1" serde = { version = "1.0.114", optional = true, default-features = false, features = [ "derive", diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index 0bb3c1802cd..7ff9646a9f6 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -33,7 +33,7 @@ gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } gix-date = { version = "^0.10.3", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } -zip = { version = "4.2.0", optional = true, default-features = false, features = ["deflate-flate2"] } +zip = { version = "4.3.0", optional = true, default-features = false, features = ["deflate-flate2"] } jiff = { version = "0.2.15", default-features = false, features = ["std"] } thiserror = "2.0.0" diff --git a/gix-commitgraph/Cargo.toml b/gix-commitgraph/Cargo.toml index 8bb51a89b8d..915408e5aeb 100644 --- a/gix-commitgraph/Cargo.toml +++ b/gix-commitgraph/Cargo.toml @@ -24,7 +24,7 @@ gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-chunk = { version = "^0.4.11", path = "../gix-chunk" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } -memmap2 = "0.9.0" +memmap2 = "0.9.7" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } thiserror = "2.0.0" diff --git a/gix-config/Cargo.toml b/gix-config/Cargo.toml index f37ab3ed10d..f14c4462c98 100644 --- a/gix-config/Cargo.toml +++ b/gix-config/Cargo.toml @@ -26,7 +26,7 @@ gix-sec = { version = "^0.12.0", path = "../gix-sec" } gix-ref = { version = "^0.53.0", path = "../gix-ref" } gix-glob = { version = "^0.21.0", path = "../gix-glob" } -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } memchr = "2" thiserror = "2.0.0" unicode-bom = { version = "2.0.3" } @@ -38,7 +38,7 @@ once_cell = "1.21.3" document-features = { version = "0.2.0", optional = true } [dev-dependencies] -criterion = "0.6.0" +criterion = "0.7.0" [[bench]] name = "large_config_file" diff --git a/gix-features/Cargo.toml b/gix-features/Cargo.toml index b7d6cf860ac..59cdd621803 100644 --- a/gix-features/Cargo.toml +++ b/gix-features/Cargo.toml @@ -111,7 +111,7 @@ parking_lot = { version = "0.12.4", default-features = false, optional = true } walkdir = { version = "2.3.2", optional = true } # used when parallel is off # hashing -crc32fast = { version = "1.2.1", optional = true } +crc32fast = { version = "1.5.0", optional = true } # progress prodash = { version = "30.0.1", optional = true } diff --git a/gix-index/Cargo.toml b/gix-index/Cargo.toml index e3b9038621b..97b00434487 100644 --- a/gix-index/Cargo.toml +++ b/gix-index/Cargo.toml @@ -37,7 +37,7 @@ gix-utils = { version = "^0.3.0", path = "../gix-utils" } hashbrown = "0.15.4" fnv = "1.0.7" thiserror = "2.0.0" -memmap2 = "0.9.0" +memmap2 = "0.9.7" filetime = "0.2.15" bstr = { version = "1.12.0", default-features = false } @@ -51,7 +51,7 @@ bitflags = "2" document-features = { version = "0.2.0", optional = true } [target.'cfg(not(windows))'.dependencies] -rustix = { version = "1.0.7", default-features = false, features = [ +rustix = { version = "1.0.8", default-features = false, features = [ "std", "fs", ] } diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index a53028e1342..7f1520a95d9 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -58,7 +58,7 @@ bstr = { version = "1.12.0", default-features = false, features = [ "std", "unicode", ] } -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } smallvec = { version = "1.15.1", features = ["write"] } serde = { version = "1.0.114", optional = true, default-features = false, features = [ "derive", @@ -67,7 +67,7 @@ serde = { version = "1.0.114", optional = true, default-features = false, featur document-features = { version = "0.2.0", optional = true } [dev-dependencies] -criterion = "0.6.0" +criterion = "0.7.0" pretty_assertions = "1.0.0" gix-testtools = { path = "../tests/tools" } gix-odb = { path = "../gix-odb" } diff --git a/gix-pack/Cargo.toml b/gix-pack/Cargo.toml index 23bfb66652b..45db3564a29 100644 --- a/gix-pack/Cargo.toml +++ b/gix-pack/Cargo.toml @@ -45,7 +45,7 @@ gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true gix-traverse = { version = "^0.47.0", path = "../gix-traverse", optional = true } gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, optional = true } -memmap2 = "0.9.0" +memmap2 = "0.9.7" smallvec = "1.15.1" parking_lot = { version = "0.12.4", default-features = false, optional = true } thiserror = "2.0.0" diff --git a/gix-pack/tests/Cargo.toml b/gix-pack/tests/Cargo.toml index 1738aa50500..5a8f4ec35d9 100644 --- a/gix-pack/tests/Cargo.toml +++ b/gix-pack/tests/Cargo.toml @@ -28,4 +28,4 @@ maplit = "1.0.2" gix-object = { path = "../../gix-object" } gix-traverse = { path = "../../gix-traverse" } gix-hash = { path = "../../gix-hash" } -memmap2 = "0.9.0" +memmap2 = "0.9.7" diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml index 2320d85bac4..a5f1191386e 100644 --- a/gix-path/Cargo.toml +++ b/gix-path/Cargo.toml @@ -29,6 +29,6 @@ gix-testtools = { path = "../tests/tools" } serial_test = { version = "3.1.0", default-features = false } [target.'cfg(windows)'.dev-dependencies] -known-folders = "1.1.0" +known-folders = "1.3.1" windows = { version = "0.61.3", features = ["Win32_System_Threading"] } winreg = "0.55.0" diff --git a/gix-prompt/Cargo.toml b/gix-prompt/Cargo.toml index c3f36a36fe5..b46c81f62ef 100644 --- a/gix-prompt/Cargo.toml +++ b/gix-prompt/Cargo.toml @@ -21,7 +21,7 @@ gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } thiserror = "2.0.0" [target.'cfg(unix)'.dependencies] -rustix = { version = "1.0.7", features = ["termios"] } +rustix = { version = "1.0.8", features = ["termios"] } parking_lot = "0.12.4" [dev-dependencies] diff --git a/gix-protocol/Cargo.toml b/gix-protocol/Cargo.toml index e2818e221a2..45163a2f781 100644 --- a/gix-protocol/Cargo.toml +++ b/gix-protocol/Cargo.toml @@ -94,7 +94,7 @@ bstr = { version = "1.12.0", default-features = false, features = [ "std", "unicode", ] } -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } # for async-client async-trait = { version = "0.1.51", optional = true } diff --git a/gix-ref/Cargo.toml b/gix-ref/Cargo.toml index 077458f519b..1ded7fefcc4 100644 --- a/gix-ref/Cargo.toml +++ b/gix-ref/Cargo.toml @@ -33,11 +33,11 @@ gix-lock = { version = "^18.0.0", path = "../gix-lock" } gix-tempfile = { version = "^18.0.0", default-features = false, path = "../gix-tempfile" } thiserror = "2.0.0" -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } # packed refs -memmap2 = "0.9.0" +memmap2 = "0.9.7" document-features = { version = "0.2.1", optional = true } diff --git a/gix-sec/Cargo.toml b/gix-sec/Cargo.toml index a0d3332b723..33dd8141246 100644 --- a/gix-sec/Cargo.toml +++ b/gix-sec/Cargo.toml @@ -32,7 +32,7 @@ libc = "0.2.174" [target.'cfg(windows)'.dependencies] gix-path = { version = "^0.10.19", path = "../gix-path" } -windows-sys = { version = "0.59.0", features = [ +windows-sys = { version = "0.60.2", features = [ "Win32_Foundation", "Win32_Security_Authorization", "Win32_Storage_FileSystem", diff --git a/gix-transport/Cargo.toml b/gix-transport/Cargo.toml index d54c822ad39..5e443b4d0ba 100644 --- a/gix-transport/Cargo.toml +++ b/gix-transport/Cargo.toml @@ -128,7 +128,7 @@ gix-pack = { path = "../gix-pack", default-features = false, features = [ gix-hash = { path = "../gix-hash" } async-std = { version = "1.9.0", features = ["attributes"] } maybe-async = "0.2.6" -blocking = "1.0.2" +blocking = "1.6.2" [package.metadata.docs.rs] features = ["http-client-curl", "document-features", "serde"] diff --git a/tests/it/Cargo.toml b/tests/it/Cargo.toml index dc8ac71bd0e..f98fded8449 100644 --- a/tests/it/Cargo.toml +++ b/tests/it/Cargo.toml @@ -16,7 +16,7 @@ path = "src/main.rs" [dependencies] anyhow = "1.0.98" -clap = { version = "4.5.40", features = ["derive"] } +clap = { version = "4.5.42", features = ["derive"] } gix = { version = "^0.73.0", path = "../../gix", default-features = false, features = ["attributes", "blame", "blob-diff", "revision"] } once_cell = "1.21.3" regex = { version = "1.11.1", default-features = false, features = ["std"] } diff --git a/tests/tools/Cargo.toml b/tests/tools/Cargo.toml index c591a8a6a74..a571b84f58b 100644 --- a/tests/tools/Cargo.toml +++ b/tests/tools/Cargo.toml @@ -31,7 +31,7 @@ gix-worktree = { version = "^0.42.0", path = "../../gix-worktree" } gix-fs = { version = "^0.16.0", path = "../../gix-fs" } gix-tempfile = { version = "^18.0.0", path = "../../gix-tempfile", default-features = false, features = ["signals"] } -winnow = { version = "0.7.10", features = ["simd"] } +winnow = { version = "0.7.12", features = ["simd"] } fastrand = "2.0.0" bstr = { version = "1.12.0", default-features = false } crc = "3.3.0" From 5351fb26e83d4712c51b9502e7fd4fba1509580a Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Sat, 2 Aug 2025 17:37:26 -0400 Subject: [PATCH 060/296] Change `set +x` to `set -x` in CI `wasm` steps These steps benefit from showing the `cargo` command that was run before the resulting build output. Most run multiple `cargo build` commands, sometimes in a loop, such that the output can only be properly understood if the commands are shown. `set +x` is the default (in general, as well as in GitHub Actions unless the value of `shell` is modified with `-x` or `-o xtrace`). It looks like `set -x` was already intended here. Work in #2093 confirms a practical benefit of `-x` for understanding these logs. `set +x` was part of the original code of these CI steps when they were introduced in 0d4b804 (#735). Its use was preserved and expanded in several changes. In 44ff412 (#1668), `set +x` was preserved and also positioned where it would make sense for `set -x` to be. Thus, it appears this started as a small typo and gradually expanded through misreadings, including my own. This fixes that. (See EliahKagan#74 for verification that `set +x` had no effect.) --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab698934c86..73417387ded 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -416,7 +416,7 @@ jobs: - name: 'WASI only: crates without feature toggle' if: endsWith(matrix.target, '-wasi') run: | - set +x + set -x for crate in gix-sec; do cargo build -p "$crate" --target "$TARGET" done @@ -447,19 +447,19 @@ jobs: gix-url gix-validate ) - set +x + set -x for crate in "${crates[@]}"; do cargo build -p "$crate" --target "$TARGET" done - name: features of gix-features run: | - set +x + set -x for feature in progress parallel io-pipe crc32 zlib cache-efficiency-debug; do cargo build -p gix-features --features "$feature" --target "$TARGET" done - name: crates with 'wasm' feature run: | - set +x + set -x for crate in gix-pack; do cargo build -p "$crate" --features wasm --target "$TARGET" done From 14c12ef9751f1f4a73dec566d7c7238d97a043f7 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Sun, 3 Aug 2025 10:15:05 +0200 Subject: [PATCH 061/296] Be more explicit about how gitoxide should be used This is as per #2089 where suggested to mention the library more prominently. --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e23f4dc4490..4dc169876d6 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,14 @@ `gitoxide` is an implementation of `git` written in Rust for developing future-proof applications which strive for correctness and performance while providing a pleasant and unsurprising developer experience. -`gitoxide` provides the `gix` and `ein` binaries for use on the command-line to allow experimentation with key features -like `fetch` and `clone`, and to validate the usability and control of the API offered by the [`gix`] crate. - -`gitoxide` aspires to be a production-grade server implementation and the `ein` binary aspires to become the default way to interact with git repositories. +There are two primary ways to use gitoxide: + +1. **CLI binaries**: The provided binaries `gix` and `ein` for use on the command-line allow experimentation with key features + like fetch and clone, and to validate the usability. + `gitoxide` aspires to be a production-grade server implementation and the `ein` binary aspires to become the default way to interact + with git repositories. +3. **Rust library**: Use the [gix](https://docs.rs/gix) crate in your project to access the features offered by gitoxide + programmatically. [![asciicast](https://asciinema.org/a/542159.svg)](https://asciinema.org/a/542159) From ad67ab5bdea74f3c90c9670c8043f8b642a274d4 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 10:40:27 +0200 Subject: [PATCH 062/296] fix: don't parse any number as timestamp in `parse_header()` (#2095) --- gix-date/src/parse.rs | 3 +++ gix-date/tests/time/parse.rs | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/gix-date/src/parse.rs b/gix-date/src/parse.rs index 2dfba0f0532..a55d9f5f770 100644 --- a/gix-date/src/parse.rs +++ b/gix-date/src/parse.rs @@ -214,6 +214,9 @@ pub(crate) mod function { Some(offset_in_seconds) } + if input.contains(':') { + return None; + } let mut split = input.split_whitespace(); let seconds = split.next()?; let seconds = match seconds.parse::() { diff --git a/gix-date/tests/time/parse.rs b/gix-date/tests/time/parse.rs index 0102762385c..6fc6e57be20 100644 --- a/gix-date/tests/time/parse.rs +++ b/gix-date/tests/time/parse.rs @@ -13,6 +13,21 @@ fn special_time_is_ok_for_now() { ); } +#[test] +fn parse_header_is_not_too_lenient() { + let now = SystemTime::now(); + for not_a_header_str in ["2005-04-07T22:13:09", "2005-04-07 22:13:09"] { + assert!( + gix_date::parse_header(not_a_header_str).is_none(), + "It's not timestamp-like, despite some leniency" + ); + assert!( + gix_date::parse(not_a_header_str, Some(now)).is_err(), + "it misses the timezone offset, so can't be parsed" + ); + } +} + #[test] fn short() { assert_eq!( From 91b32208dda387916b87fc1d02809a73415a58c0 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 10:59:21 +0200 Subject: [PATCH 063/296] Remove a hack which makes '1979-02-26 18:30:00' special. --- gix-date/src/parse.rs | 5 ----- gix-date/tests/time/parse.rs | 11 ++++------- .../revision/spec/parse/anchor/at_symbol.rs | 17 +++++++---------- gix/tests/gix-init.rs | 2 +- gix/tests/gix/repository/config/identity.rs | 2 +- .../gix/revision/spec/from_bytes/reflog.rs | 2 +- gix/tests/gix/util.rs | 2 +- 7 files changed, 15 insertions(+), 26 deletions(-) diff --git a/gix-date/src/parse.rs b/gix-date/src/parse.rs index a55d9f5f770..32dae6fa408 100644 --- a/gix-date/src/parse.rs +++ b/gix-date/src/parse.rs @@ -145,11 +145,6 @@ pub(crate) mod function { /// * `2 minutes ago` (October 27, 2023 at 09:58:00 UTC) /// * `3 hours ago` (October 27, 2023 at 07:00:00 UTC) pub fn parse(input: &str, now: Option) -> Result { - // TODO: actual implementation, this is just to not constantly fail - if input == "1979-02-26 18:30:00" { - return Ok(Time::new(42, 1800)); - } - Ok(if let Ok(val) = Date::strptime(SHORT.0, input) { let val = val .to_zoned(TimeZone::UTC) diff --git a/gix-date/tests/time/parse.rs b/gix-date/tests/time/parse.rs index 6fc6e57be20..0d6bfa8148d 100644 --- a/gix-date/tests/time/parse.rs +++ b/gix-date/tests/time/parse.rs @@ -3,13 +3,10 @@ use std::time::SystemTime; use gix_date::Time; #[test] -fn special_time_is_ok_for_now() { - assert_eq!( - gix_date::parse("1979-02-26 18:30:00", Some(SystemTime::now())).unwrap(), - Time { - seconds: 42, - offset: 1800, - } +fn time_without_offset_is_not_parsed_yet() { + assert!( + gix_date::parse("1979-02-26 18:30:00", Some(SystemTime::now())).is_err(), + "This was a special time with special handling, but it is not anymore" ); } diff --git a/gix-revision/tests/revision/spec/parse/anchor/at_symbol.rs b/gix-revision/tests/revision/spec/parse/anchor/at_symbol.rs index d3d76468d5b..dae8a7a100c 100644 --- a/gix-revision/tests/revision/spec/parse/anchor/at_symbol.rs +++ b/gix-revision/tests/revision/spec/parse/anchor/at_symbol.rs @@ -35,7 +35,7 @@ fn reflog_by_entry_for_current_branch() { #[test] fn reflog_by_date_for_current_branch() { - let rec = parse("@{1979-02-26 18:30:00}"); + let rec = parse("@{42 +0030}"); assert!(rec.kind.is_none()); assert_eq!(rec.find_ref[0], None); @@ -81,9 +81,9 @@ fn reflog_by_date_with_date_parse_failure() { #[test] fn reflog_by_date_for_hash_is_invalid() { for (spec, full_name) in [ - ("1234@{1979-02-26 18:30:00}", "1234"), - ("abcd-dirty@{1979-02-26 18:30:00}", "abcd-dirty"), - ("v1.2.3-0-g1234@{1979-02-26 18:30:00}", "v1.2.3-0-g1234"), + ("1234@{42 +0030}", "1234"), + ("abcd-dirty@{42 +0030}", "abcd-dirty"), + ("v1.2.3-0-g1234@{42 +0030}", "v1.2.3-0-g1234"), ] { let err = try_parse(spec).unwrap_err(); assert!(matches!(err, spec::parse::Error::ReflogLookupNeedsRefName {name} if name == full_name)); @@ -93,12 +93,9 @@ fn reflog_by_date_for_hash_is_invalid() { #[test] fn reflog_by_date_for_given_ref_name() { for (spec, expected_ref) in [ - ("main@{1979-02-26 18:30:00}", "main"), - ("refs/heads/other@{1979-02-26 18:30:00}", "refs/heads/other"), - ( - "refs/worktree/feature/a@{1979-02-26 18:30:00}", - "refs/worktree/feature/a", - ), + ("main@{42 +0030}", "main"), + ("refs/heads/other@{42 +0030}", "refs/heads/other"), + ("refs/worktree/feature/a@{42 +0030}", "refs/worktree/feature/a"), ] { let rec = parse(spec); diff --git a/gix/tests/gix-init.rs b/gix/tests/gix-init.rs index 6a116b6d293..42435900758 100644 --- a/gix/tests/gix-init.rs +++ b/gix/tests/gix-init.rs @@ -26,7 +26,7 @@ mod with_overrides { #[test] #[serial] fn order_from_api_and_cli_and_environment() -> gix_testtools::Result { - let default_date = "1979-02-26 18:30:00"; + let default_date = "42 +0030"; let _env = Env::new() .set("GIT_HTTP_USER_AGENT", "agent-from-env") .set("GIT_HTTP_LOW_SPEED_LIMIT", "1") diff --git a/gix/tests/gix/repository/config/identity.rs b/gix/tests/gix/repository/config/identity.rs index 9ab88879b71..f7ec880c1f7 100644 --- a/gix/tests/gix/repository/config/identity.rs +++ b/gix/tests/gix/repository/config/identity.rs @@ -141,7 +141,7 @@ fn author_from_different_config_sections() -> crate::Result { let _env = Env::new() .set("GIT_CONFIG_GLOBAL", work_dir.join("global.config").to_str().unwrap()) .set("GIT_CONFIG_SYSTEM", work_dir.join("system.config").to_str().unwrap()) - .set("GIT_AUTHOR_DATE", "1979-02-26 18:30:00") + .set("GIT_AUTHOR_DATE", "42 +0030") .unset("GIT_AUTHOR_NAME") .set("GIT_COMMITTER_DATE", "1980-02-26 18:30:00 +0000") .unset("GIT_COMMITTER_NAME") diff --git a/gix/tests/gix/revision/spec/from_bytes/reflog.rs b/gix/tests/gix/revision/spec/from_bytes/reflog.rs index 3c2f1f7d0e9..ce8c934549b 100644 --- a/gix/tests/gix/revision/spec/from_bytes/reflog.rs +++ b/gix/tests/gix/revision/spec/from_bytes/reflog.rs @@ -78,7 +78,7 @@ fn by_index() { fn by_date() { let repo = repo("complex_graph").unwrap(); - let spec = parse_spec_no_baseline("main@{1979-02-26 18:30:00}", &repo).unwrap(); + let spec = parse_spec_no_baseline("main@{42 +0030}", &repo).unwrap(); assert_eq!( spec, diff --git a/gix/tests/gix/util.rs b/gix/tests/gix/util.rs index eab545ea34a..ad6972e9cb2 100644 --- a/gix/tests/gix/util.rs +++ b/gix/tests/gix/util.rs @@ -9,7 +9,7 @@ pub fn hex_to_id(hex: &str) -> gix_hash::ObjectId { } pub fn freeze_time() -> gix_testtools::Env<'static> { - let frozen_time = "1979-02-26 18:30:00"; + let frozen_time = "42 +0030"; gix_testtools::Env::new() .unset("GIT_AUTHOR_NAME") .unset("GIT_AUTHOR_EMAIL") From 8123fe841eee240cbdcda645b4d0548311f3ff73 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 11:28:08 +0200 Subject: [PATCH 064/296] Tune README.md --- README.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 4dc169876d6..c4c491a28bd 100644 --- a/README.md +++ b/README.md @@ -5,14 +5,12 @@ `gitoxide` is an implementation of `git` written in Rust for developing future-proof applications which strive for correctness and performance while providing a pleasant and unsurprising developer experience. -There are two primary ways to use gitoxide: - -1. **CLI binaries**: The provided binaries `gix` and `ein` for use on the command-line allow experimentation with key features - like fetch and clone, and to validate the usability. - `gitoxide` aspires to be a production-grade server implementation and the `ein` binary aspires to become the default way to interact - with git repositories. -3. **Rust library**: Use the [gix](https://docs.rs/gix) crate in your project to access the features offered by gitoxide - programmatically. +There are two primary ways to use `gitoxide`: + +1. **As Rust library**: Use the [`gix`](https://docs.rs/gix) crate as a Cargo dependency for API access. +1. **As command-line tool**: The `gix` binary as development tool to help testing the API in real repositories, + and the `ein` binary with workflow-enhancing tools. Both binaries may forever be unstable, + *do not rely on them in scripts*. [![asciicast](https://asciinema.org/a/542159.svg)](https://asciinema.org/a/542159) From 007e3f66246aaafc2374b85cbf77f89ec0b09512 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 11:33:57 +0200 Subject: [PATCH 065/296] Release gix-date v0.10.4 --- Cargo.lock | 2 +- gix-actor/Cargo.toml | 2 +- gix-archive/Cargo.toml | 2 +- gix-blame/Cargo.toml | 2 +- gix-credentials/Cargo.toml | 2 +- gix-date/CHANGELOG.md | 31 ++++++++++++++++++++++++++++++- gix-date/Cargo.toml | 2 +- gix-mailmap/Cargo.toml | 2 +- gix-negotiate/Cargo.toml | 2 +- gix-object/Cargo.toml | 2 +- gix-odb/Cargo.toml | 2 +- gix-protocol/Cargo.toml | 2 +- gix-revision/Cargo.toml | 2 +- gix-revwalk/Cargo.toml | 2 +- gix-traverse/Cargo.toml | 2 +- gix/Cargo.toml | 2 +- 16 files changed, 45 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2787fc5a454..4f46bf6eab1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1633,7 +1633,7 @@ dependencies = [ [[package]] name = "gix-date" -version = "0.10.3" +version = "0.10.4" dependencies = [ "bstr", "document-features", diff --git a/gix-actor/Cargo.toml b/gix-actor/Cargo.toml index 994eea3cfab..bc8fec1cdab 100644 --- a/gix-actor/Cargo.toml +++ b/gix-actor/Cargo.toml @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-date/serde"] [dependencies] -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } thiserror = "2.0.0" diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index 7ff9646a9f6..f80c300d94e 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -30,7 +30,7 @@ zip = ["dep:zip"] gix-worktree-stream = { version = "^0.22.0", path = "../gix-worktree-stream" } gix-object = { version = "^0.50.0", path = "../gix-object" } gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } zip = { version = "4.3.0", optional = true, default-features = false, features = ["deflate-flate2"] } diff --git a/gix-blame/Cargo.toml b/gix-blame/Cargo.toml index 32609fcf720..981f6c5283d 100644 --- a/gix-blame/Cargo.toml +++ b/gix-blame/Cargo.toml @@ -14,7 +14,7 @@ rust-version = "1.70" gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, features = ["blob"] } gix-object = { version = "^0.50.0", path = "../gix-object" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } diff --git a/gix-credentials/Cargo.toml b/gix-credentials/Cargo.toml index 772667c262b..2f2f7d8a2f5 100644 --- a/gix-credentials/Cargo.toml +++ b/gix-credentials/Cargo.toml @@ -25,7 +25,7 @@ gix-path = { version = "^0.10.19", path = "../gix-path" } gix-command = { version = "^0.6.2", path = "../gix-command" } gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } gix-prompt = { version = "^0.11.1", path = "../gix-prompt" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } thiserror = "2.0.0" diff --git a/gix-date/CHANGELOG.md b/gix-date/CHANGELOG.md index 3dc15cbbf78..80f4142f19e 100644 --- a/gix-date/CHANGELOG.md +++ b/gix-date/CHANGELOG.md @@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 0.10.4 (2025-08-03) + +### Bug Fixes + + - don't parse any number as timestamp in `parse_header()` + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 19 calendar days. + - 19 days passed between releases. + - 1 commit was understood as [conventional](https://www.conventionalcommits.org). + - 1 unique issue was worked on: [#2095](https://github.com/GitoxideLabs/gitoxide/issues/2095) + +### Commit Details + + + +
view details + + * **[#2095](https://github.com/GitoxideLabs/gitoxide/issues/2095)** + - Don't parse any number as timestamp in `parse_header()` ([`ad67ab5`](https://github.com/GitoxideLabs/gitoxide/commit/ad67ab5bdea74f3c90c9670c8043f8b642a274d4)) + * **Uncategorized** + - Remove a hack which makes '1979-02-26 18:30:00' special. ([`91b3220`](https://github.com/GitoxideLabs/gitoxide/commit/91b32208dda387916b87fc1d02809a73415a58c0)) + - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) +
+ ## 0.10.3 (2025-07-15) A maintenance release without user-facing changes. @@ -13,7 +41,7 @@ A maintenance release without user-facing changes. - - 6 commits contributed to the release over the course of 65 calendar days. + - 7 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +53,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates ([`5a919c4`](https://github.com/GitoxideLabs/gitoxide/commit/5a919c48393020d47c7034946108577dd213b80a)) - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) diff --git a/gix-date/Cargo.toml b/gix-date/Cargo.toml index 369906b80c0..c5951a63468 100644 --- a/gix-date/Cargo.toml +++ b/gix-date/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-date" -version = "0.10.3" +version = "0.10.4" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project parsing dates the way git does" diff --git a/gix-mailmap/Cargo.toml b/gix-mailmap/Cargo.toml index d7e373f02e0..43dac080d17 100644 --- a/gix-mailmap/Cargo.toml +++ b/gix-mailmap/Cargo.toml @@ -20,7 +20,7 @@ serde = ["dep:serde", "bstr/serde", "gix-actor/serde"] [dependencies] gix-actor = { version = "^0.35.2", path = "../gix-actor" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-negotiate/Cargo.toml b/gix-negotiate/Cargo.toml index c9b7dfff7ac..b7df1643ed5 100644 --- a/gix-negotiate/Cargo.toml +++ b/gix-negotiate/Cargo.toml @@ -18,7 +18,7 @@ test = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } thiserror = "2.0.0" diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index 7f1520a95d9..41d2cde60b1 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -48,7 +48,7 @@ gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } gix-actor = { version = "^0.35.2", path = "../gix-actor" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-path = { version = "^0.10.19", path = "../gix-path" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } diff --git a/gix-odb/Cargo.toml b/gix-odb/Cargo.toml index 8cc5e0df69a..9c1efa0d6c3 100644 --- a/gix-odb/Cargo.toml +++ b/gix-odb/Cargo.toml @@ -23,7 +23,7 @@ serde = ["dep:serde", "gix-hash/serde", "gix-object/serde", "gix-pack/serde"] gix-features = { version = "^0.43.0", path = "../gix-features", features = ["walkdir", "zlib", "crc32"] } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-path = { version = "^0.10.19", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } gix-object = { version = "^0.50.0", path = "../gix-object" } diff --git a/gix-protocol/Cargo.toml b/gix-protocol/Cargo.toml index 45163a2f781..097d1046d58 100644 --- a/gix-protocol/Cargo.toml +++ b/gix-protocol/Cargo.toml @@ -74,7 +74,7 @@ gix-features = { version = "^0.43.0", path = "../gix-features", features = [ gix-transport = { version = "^0.48.0", path = "../gix-transport" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-shallow = { version = "^0.5.0", path = "../gix-shallow" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } gix-ref = { version = "^0.53.0", path = "../gix-ref" } diff --git a/gix-revision/Cargo.toml b/gix-revision/Cargo.toml index e6d382b6ac3..bacdf3af164 100644 --- a/gix-revision/Cargo.toml +++ b/gix-revision/Cargo.toml @@ -29,7 +29,7 @@ serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } diff --git a/gix-revwalk/Cargo.toml b/gix-revwalk/Cargo.toml index 3f343e336d2..a35340b36b3 100644 --- a/gix-revwalk/Cargo.toml +++ b/gix-revwalk/Cargo.toml @@ -17,7 +17,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } diff --git a/gix-traverse/Cargo.toml b/gix-traverse/Cargo.toml index 6f6d88666d7..f6b6a13850d 100644 --- a/gix-traverse/Cargo.toml +++ b/gix-traverse/Cargo.toml @@ -18,7 +18,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } diff --git a/gix/Cargo.toml b/gix/Cargo.toml index 1150ddb3aba..9d5fd9d3c4f 100644 --- a/gix/Cargo.toml +++ b/gix/Cargo.toml @@ -314,7 +314,7 @@ gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile", default-features gix-lock = { version = "^18.0.0", path = "../gix-lock" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } gix-sec = { version = "^0.12.0", path = "../gix-sec" } -gix-date = { version = "^0.10.3", path = "../gix-date" } +gix-date = { version = "^0.10.4", path = "../gix-date" } gix-refspec = { version = "^0.31.0", path = "../gix-refspec" } gix-filter = { version = "^0.20.0", path = "../gix-filter", optional = true } gix-dir = { version = "^0.15.0", path = "../gix-dir", optional = true } From a86f67b46edec7cd2789ceaaee395a8ecca5c5b0 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 1 Aug 2025 13:08:04 +0000 Subject: [PATCH 066/296] Work around parse errors of a bogus git.git commit The C Git source code repository itself contains a commit with bogus `gpgsig` lines: 5f549aa2f783 (pretty: %G[?GS] placeholders, 2011-10-21). Basically, this commit's headers contain a GPG signature that _should_ have been a multi-line header, but instead every line of that signature was added individually as a `gpgsig` header. Crucially, this includes a header line that starts with `gpgsig` followed by a space and that's already the end of the line. Gitoxide's commit header parser was not prepared for that. Even worse: the error message in that instance was simply empty. Let's make the parser more robust by accepting such commit headers, and add a test to verify that the commit in question _can_ be parsed by Gitoxide. Signed-off-by: Johannes Schindelin --- gix-object/src/commit/decode.rs | 2 +- .../commit/bogus-gpgsig-lines-in-git.git.txt | 31 +++++++++++++++++++ gix-object/tests/object/commit/from_bytes.rs | 17 ++++++++++ gix-object/tests/object/commit/mod.rs | 2 ++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 gix-object/tests/fixtures/commit/bogus-gpgsig-lines-in-git.git.txt diff --git a/gix-object/src/commit/decode.rs b/gix-object/src/commit/decode.rs index 4d8bc402724..c62f4a30daf 100644 --- a/gix-object/src/commit/decode.rs +++ b/gix-object/src/commit/decode.rs @@ -51,7 +51,7 @@ pub fn commit<'a, E: ParserError<&'a [u8]> + AddContext<&'a [u8], StrContext>>( alt(( parse::any_header_field_multi_line.map(|(k, o)| (k.as_bstr(), Cow::Owned(o))), |i: &mut _| { - parse::any_header_field(i, take_till(1.., NL)) + parse::any_header_field(i, take_till(0.., NL)) .map(|(k, o)| (k.as_bstr(), Cow::Borrowed(o.as_bstr()))) }, )), diff --git a/gix-object/tests/fixtures/commit/bogus-gpgsig-lines-in-git.git.txt b/gix-object/tests/fixtures/commit/bogus-gpgsig-lines-in-git.git.txt new file mode 100644 index 00000000000..948e5e44a79 --- /dev/null +++ b/gix-object/tests/fixtures/commit/bogus-gpgsig-lines-in-git.git.txt @@ -0,0 +1,31 @@ +tree db079155794727ac821adfba2eb68b330cc0c120 +parent 33a11a20eb7610771268e34211509cbbdee76b1e +author Junio C Hamano 1319256362 -0700 +committer Junio C Hamano 1319259176 -0700 +gpgsig -----BEGIN PGP SIGNATURE----- +gpgsig Version: GnuPG v1.4.10 (GNU/Linux) +gpgsig +gpgsig iQIcBAABAgAGBQJOokwoAAoJELC16IaWr+bL0WoP/2QKYkWpEyXF608m2L/cB9Qx +gpgsig /N0oBjyL1guIjPX9B3Wxq80dnLLEPnpnO39aiQIXFoJS0L6KEurqK6uDPHy3/ULa +gpgsig QsAug2HeCLsDnIFbzFSpSIMv/bP/72FDb/idMBT99xTcQj5UJEUgj7AAtx0vnKvQ +gpgsig pQIXtPu5GBUdhl3SiGgiJFRyp4r5EgV5I40GBwx/ty9cPEIN7ukJ3CR9+KC8eIGx +gpgsig Az7qngi3dhTn7g+3Z8XX5OYFDMSt9xn1gxqWXOMNlG0mxCvpFe59kwciugp26KVp +gpgsig n+yJ0UOdoxyZX8pdqXQjvklmoo7e55aaxtbHe7KSD56ebL7h7vHhkGWORU1dOp+h +gpgsig Iv5dQItkKSR8afB7FmRjo8+B/2g0wZDKRTGhzm7d1gooO5gpXvuvm4GRl5Io+IEj +gpgsig c7Li3EYmXADWUZWJtbDKDgKGKIOmWv72Qrz52iaESrhZ909HiXfn/jhHBuDRmLtQ +gpgsig /4v3T4O25uhdZ4p/PjHQn/ZroCmDyMwmnrtw/tt5fSNrl4qGcYg8Jj/1ynfF1AtS +gpgsig dM2LR65sOwXzSsqAbQjyRFYMLSWhHd/h8BcpZHDXmNBkZJVPm4zvD3ZVaAo6rtZD +gpgsig WJ9YXWXtPhuf09OgYBzcBlamTrk9ByH+NCIdrFkqfhNF1YI5dArSZytIXJhpPI1e +gpgsig TrmQAZf0BiI5J6PYN0AI +gpgsig =Qg/+ +gpgsig -----END PGP SIGNATURE----- + +pretty: %G[?GS] placeholders + +Add new placeholders related to the GPG signature on signed commits. + + - %GG to show the raw verification message from GPG; + - %G? to show either "G" for Good, "B" for Bad; + - %GS to show the name of the signer. + +Signed-off-by: Junio C Hamano diff --git a/gix-object/tests/object/commit/from_bytes.rs b/gix-object/tests/object/commit/from_bytes.rs index 7f9fea67abd..21e4275f02e 100644 --- a/gix-object/tests/object/commit/from_bytes.rs +++ b/gix-object/tests/object/commit/from_bytes.rs @@ -342,3 +342,20 @@ fn newline_right_after_signature_multiline_header() -> crate::Result { assert!(commit.message.starts_with(b"Rollup")); Ok(()) } + +#[test] +fn bogus_multi_gpgsig_header() -> crate::Result { + let fixture = fixture_name("commit", "bogus-gpgsig-lines-in-git.git.txt"); + let commit = CommitRef::from_bytes(&fixture)?; + let pgp_sig = crate::commit::BEGIN_PGP_SIGNATURE.as_bstr(); + assert_eq!(commit.extra_headers[0].1.as_ref(), pgp_sig); + assert_eq!(commit.extra_headers().pgp_signature(), Some(pgp_sig)); + assert_eq!( + commit.extra_headers().find(gix_object::commit::SIGNATURE_FIELD_NAME), + Some(pgp_sig) + ); + assert_eq!(commit.extra_headers().find_pos("gpgsig"), Some(0)); + assert_eq!(commit.extra_headers().find_pos("something else"), None); + assert!(commit.message.starts_with(b"pretty: %G[?GS] placeholders")); + Ok(()) +} diff --git a/gix-object/tests/object/commit/mod.rs b/gix-object/tests/object/commit/mod.rs index abc63a191ba..cf50683db41 100644 --- a/gix-object/tests/object/commit/mod.rs +++ b/gix-object/tests/object/commit/mod.rs @@ -149,6 +149,8 @@ iyBBl69jASy41Ug/BlFJbw4+ItkShpXwkJKuBBV/JExChmvbxYWaS7QnyYC9UO0= "; +const BEGIN_PGP_SIGNATURE: &[u8] = b"-----BEGIN PGP SIGNATURE-----"; + mod method { use gix_object::CommitRef; use pretty_assertions::assert_eq; From a0660fe3b4227b206dc6df099f55ec5bb41edce0 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Sun, 3 Aug 2025 10:52:45 +0000 Subject: [PATCH 067/296] Allow empty-valued commit headers in more places I just fixed a problem where a `gpgsig ` header line in a historical commit in the git.git repository itself was mistakenly causing a parse error. The culprit was, of course, that the header value is empty, and the existing code expected the value _not_ to be empty. Handle similar issues in other locations, too. Signed-off-by: Johannes Schindelin --- gix-object/src/commit/decode.rs | 2 +- gix-object/src/commit/ref_iter.rs | 4 ++-- gix-object/src/parse.rs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gix-object/src/commit/decode.rs b/gix-object/src/commit/decode.rs index c62f4a30daf..a3efcc0596d 100644 --- a/gix-object/src/commit/decode.rs +++ b/gix-object/src/commit/decode.rs @@ -44,7 +44,7 @@ pub fn commit<'a, E: ParserError<&'a [u8]> + AddContext<&'a [u8], StrContext>>( .context(StrContext::Expected("author ".into())), (|i: &mut _| parse::header_field(i, b"committer", parse::signature)) .context(StrContext::Expected("committer ".into())), - opt(|i: &mut _| parse::header_field(i, b"encoding", take_till(1.., NL))) + opt(|i: &mut _| parse::header_field(i, b"encoding", take_till(0.., NL))) .context(StrContext::Expected("encoding ".into())), repeat( 0.., diff --git a/gix-object/src/commit/ref_iter.rs b/gix-object/src/commit/ref_iter.rs index d9d59f7498e..df953c1da1e 100644 --- a/gix-object/src/commit/ref_iter.rs +++ b/gix-object/src/commit/ref_iter.rs @@ -214,7 +214,7 @@ impl<'a> CommitRefIter<'a> { } } Encoding => { - let encoding = opt(|i: &mut _| parse::header_field(i, b"encoding", take_till(1.., NL))) + let encoding = opt(|i: &mut _| parse::header_field(i, b"encoding", take_till(0.., NL))) .context(StrContext::Expected("encoding ".into())) .parse_next(input)?; *state = State::ExtraHeaders; @@ -227,7 +227,7 @@ impl<'a> CommitRefIter<'a> { let extra_header = opt(alt(( |i: &mut _| parse::any_header_field_multi_line(i).map(|(k, o)| (k.as_bstr(), Cow::Owned(o))), |i: &mut _| { - parse::any_header_field(i, take_till(1.., NL)) + parse::any_header_field(i, take_till(0.., NL)) .map(|(k, o)| (k.as_bstr(), Cow::Borrowed(o.as_bstr()))) }, ))) diff --git a/gix-object/src/parse.rs b/gix-object/src/parse.rs index 7d90e2c81b9..bbe63abd1df 100644 --- a/gix-object/src/parse.rs +++ b/gix-object/src/parse.rs @@ -18,7 +18,7 @@ pub(crate) fn any_header_field_multi_line<'a, E: ParserError<&'a [u8]> + AddCont ( terminated(take_till(1.., SPACE_OR_NL), SPACE), ( - take_till(1.., NL), + take_till(0.., NL), NL, repeat(1.., terminated((SPACE, take_until(0.., NL)), NL)).map(|()| ()), ) From 8ad43f13012c7c8b05887d9f3d32f011d0c46274 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 15:15:05 +0200 Subject: [PATCH 068/296] refactor - make the test more specific to what it's testing - fix a bug in the way multi-line headers are written so the object can be serialised. --- gix-object/src/encode.rs | 4 +++- gix-object/tests/object/commit/from_bytes.rs | 23 +++++++++++++------- gix-object/tests/object/commit/mod.rs | 2 -- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/gix-object/src/encode.rs b/gix-object/src/encode.rs index 2da523c078d..e2ce0addf69 100644 --- a/gix-object/src/encode.rs +++ b/gix-object/src/encode.rs @@ -38,7 +38,9 @@ pub(crate) fn header_field_multi_line(name: &[u8], value: &[u8], out: &mut dyn i let mut lines = value.as_bstr().lines_with_terminator(); out.write_all(name)?; out.write_all(SPACE)?; - out.write_all(lines.next().ok_or(Error::EmptyValue)?)?; + if let Some(line) = lines.next() { + out.write_all(line)?; + } for line in lines { out.write_all(SPACE)?; out.write_all(line)?; diff --git a/gix-object/tests/object/commit/from_bytes.rs b/gix-object/tests/object/commit/from_bytes.rs index 21e4275f02e..b89213394da 100644 --- a/gix-object/tests/object/commit/from_bytes.rs +++ b/gix-object/tests/object/commit/from_bytes.rs @@ -1,10 +1,10 @@ use gix_actor::SignatureRef; -use gix_object::{bstr::ByteSlice, commit::message::body::TrailerRef, CommitRef}; +use gix_object::{bstr::ByteSlice, commit::message::body::TrailerRef, CommitRef, WriteTo}; use smallvec::SmallVec; use crate::{ commit::{LONG_MESSAGE, MERGE_TAG, SIGNATURE}, - fixture_name, linus_signature, signature, + fixture_name, hex_to_id, linus_signature, signature, }; #[test] @@ -347,15 +347,22 @@ fn newline_right_after_signature_multiline_header() -> crate::Result { fn bogus_multi_gpgsig_header() -> crate::Result { let fixture = fixture_name("commit", "bogus-gpgsig-lines-in-git.git.txt"); let commit = CommitRef::from_bytes(&fixture)?; - let pgp_sig = crate::commit::BEGIN_PGP_SIGNATURE.as_bstr(); - assert_eq!(commit.extra_headers[0].1.as_ref(), pgp_sig); + let pgp_sig = b"-----BEGIN PGP SIGNATURE-----".as_bstr(); assert_eq!(commit.extra_headers().pgp_signature(), Some(pgp_sig)); assert_eq!( - commit.extra_headers().find(gix_object::commit::SIGNATURE_FIELD_NAME), - Some(pgp_sig) + commit.extra_headers().find_all("gpgsig").count(), + 17, + "Each signature header line is prefixed with `gpgsig` here, so we parse it as extra header" ); - assert_eq!(commit.extra_headers().find_pos("gpgsig"), Some(0)); - assert_eq!(commit.extra_headers().find_pos("something else"), None); assert!(commit.message.starts_with(b"pretty: %G[?GS] placeholders")); + + let mut buf = Vec::::new(); + commit.write_to(&mut buf)?; + let actual = gix_object::compute_hash(gix_hash::Kind::Sha1, gix_object::Kind::Commit, &buf)?; + assert_eq!( + actual, + hex_to_id("5f549aa2f78314ac37bbd436c8f80aea4c752e07"), + "round-tripping works despite the strangeness" + ); Ok(()) } diff --git a/gix-object/tests/object/commit/mod.rs b/gix-object/tests/object/commit/mod.rs index cf50683db41..abc63a191ba 100644 --- a/gix-object/tests/object/commit/mod.rs +++ b/gix-object/tests/object/commit/mod.rs @@ -149,8 +149,6 @@ iyBBl69jASy41Ug/BlFJbw4+ItkShpXwkJKuBBV/JExChmvbxYWaS7QnyYC9UO0= "; -const BEGIN_PGP_SIGNATURE: &[u8] = b"-----BEGIN PGP SIGNATURE-----"; - mod method { use gix_object::CommitRef; use pretty_assertions::assert_eq; From 191067ea5781f1f92b4ef3bc710832cb9391be4f Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 15:21:31 +0200 Subject: [PATCH 069/296] remove unused struct. --- gitoxide-core/src/index/information.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/gitoxide-core/src/index/information.rs b/gitoxide-core/src/index/information.rs index d9fe591f505..64a63e87496 100644 --- a/gitoxide-core/src/index/information.rs +++ b/gitoxide-core/src/index/information.rs @@ -33,9 +33,6 @@ mod serde_only { } } } - - #[derive(serde::Serialize, serde::Deserialize)] - pub struct NodeId {} } } From 5e0122df48392fb0ea6e16eb7b70d320b03244ca Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 15:58:29 +0200 Subject: [PATCH 070/296] prepare changelogs prior to release. --- gix-actor/CHANGELOG.md | 30 +++++++++++++++++++++++++++++- gix-features/CHANGELOG.md | 28 +++++++++++++++++++++++++++- gix-object/CHANGELOG.md | 36 +++++++++++++++++++++++++++++++++++- gix-path/CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++++++- 4 files changed, 128 insertions(+), 4 deletions(-) diff --git a/gix-actor/CHANGELOG.md b/gix-actor/CHANGELOG.md index 411844ce75d..f9fc0452d99 100644 --- a/gix-actor/CHANGELOG.md +++ b/gix-actor/CHANGELOG.md @@ -5,6 +5,33 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 5 commits contributed to the release over the course of 19 calendar days. + - 19 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2097 from GitoxideLabs/fix-gix-date ([`589d63e`](https://github.com/GitoxideLabs/gitoxide/commit/589d63ed21e5f2cd53ad2cac96fc387df3ea26e9)) + - Release gix-date v0.10.4 ([`007e3f6`](https://github.com/GitoxideLabs/gitoxide/commit/007e3f66246aaafc2374b85cbf77f89ec0b09512)) + - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) + - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) + - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) +
+ ## 0.35.2 (2025-07-15) ### New Features @@ -15,7 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 9 commits contributed to the release over the course of 79 calendar days. + - 10 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +54,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates ([`5a919c4`](https://github.com/GitoxideLabs/gitoxide/commit/5a919c48393020d47c7034946108577dd213b80a)) - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2038 from ilyagr/signature-doc ([`8f6ecfe`](https://github.com/GitoxideLabs/gitoxide/commit/8f6ecfe4b017fc6ed33d8932a1cb911ed0879713)) - Refactor ([`aff23d6`](https://github.com/GitoxideLabs/gitoxide/commit/aff23d65a1a44e5356fb362a857d736280d3a580)) diff --git a/gix-features/CHANGELOG.md b/gix-features/CHANGELOG.md index 4822046699f..f21f77d651e 100644 --- a/gix-features/CHANGELOG.md +++ b/gix-features/CHANGELOG.md @@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 19 calendar days. + - 19 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) + - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) + - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) +
+ ## 0.43.0 (2025-07-15) ### New Features (BREAKING) @@ -22,7 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 11 commits contributed to the release over the course of 79 calendar days. + - 12 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -34,6 +59,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates ([`5a919c4`](https://github.com/GitoxideLabs/gitoxide/commit/5a919c48393020d47c7034946108577dd213b80a)) - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2061 from orthros/pseudo-refs ([`60c29a5`](https://github.com/GitoxideLabs/gitoxide/commit/60c29a59302bfc9d0be7aab5dd3ef05e4ee8e3fa)) - Refactor ([`43f92b5`](https://github.com/GitoxideLabs/gitoxide/commit/43f92b5285af6696cd21f0e94f3bec568aef8468)) diff --git a/gix-object/CHANGELOG.md b/gix-object/CHANGELOG.md index c3aba9dbfcb..d82b9ef6625 100644 --- a/gix-object/CHANGELOG.md +++ b/gix-object/CHANGELOG.md @@ -5,6 +5,39 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +Make Commit parsing more lenient so it can read older commits with botched gpg signatures, +see [this commit](https://github.com/GitoxideLabs/gitoxide/commit/ef73c6b6631a3308b7bf5d15b69f4f14767a23d5) +for details. + +### Commit Statistics + + + + - 9 commits contributed to the release over the course of 19 calendar days. + - 19 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2098 from dscho/fix-parsing-of-legacy-git.git-commit ([`ef73c6b`](https://github.com/GitoxideLabs/gitoxide/commit/ef73c6b6631a3308b7bf5d15b69f4f14767a23d5)) + - Refactor ([`8ad43f1`](https://github.com/GitoxideLabs/gitoxide/commit/8ad43f13012c7c8b05887d9f3d32f011d0c46274)) + - Allow empty-valued commit headers in more places ([`a0660fe`](https://github.com/GitoxideLabs/gitoxide/commit/a0660fe3b4227b206dc6df099f55ec5bb41edce0)) + - Work around parse errors of a bogus git.git commit ([`a86f67b`](https://github.com/GitoxideLabs/gitoxide/commit/a86f67b46edec7cd2789ceaaee395a8ecca5c5b0)) + - Merge pull request #2097 from GitoxideLabs/fix-gix-date ([`589d63e`](https://github.com/GitoxideLabs/gitoxide/commit/589d63ed21e5f2cd53ad2cac96fc387df3ea26e9)) + - Release gix-date v0.10.4 ([`007e3f6`](https://github.com/GitoxideLabs/gitoxide/commit/007e3f66246aaafc2374b85cbf77f89ec0b09512)) + - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) + - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) + - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) +
+ ## 0.50.0 (2025-07-15) ### New Features @@ -15,7 +48,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 12 commits contributed to the release over the course of 79 calendar days. + - 13 commits contributed to the release over the course of 79 calendar days. - 79 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +60,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
view details * **Uncategorized** + - Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates ([`5a919c4`](https://github.com/GitoxideLabs/gitoxide/commit/5a919c48393020d47c7034946108577dd213b80a)) - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) diff --git a/gix-path/CHANGELOG.md b/gix-path/CHANGELOG.md index 783be232fb4..d1dc3ece89f 100644 --- a/gix-path/CHANGELOG.md +++ b/gix-path/CHANGELOG.md @@ -5,6 +5,31 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## Unreleased + +A maintenance release without user-facing changes. + +### Commit Statistics + + + + - 3 commits contributed to the release over the course of 19 calendar days. + - 19 days passed between releases. + - 0 commits were understood as [conventional](https://www.conventionalcommits.org). + - 0 issues like '(#ID)' were seen in commit messages + +### Commit Details + + + +
view details + + * **Uncategorized** + - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) + - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) + - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) +
+ ## 0.10.19 (2025-07-15) @@ -17,7 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - - 5 commits contributed to the release over the course of 65 calendar days. + - 6 commits contributed to the release over the course of 65 calendar days. - 65 days passed between releases. - 1 commit was understood as [conventional](https://www.conventionalcommits.org). - 1 unique issue was worked on: [#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074) @@ -31,6 +56,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 * **[#2074](https://github.com/GitoxideLabs/gitoxide/issues/2074)** - Improve and correct `normalize()` documentation ([`45b369c`](https://github.com/GitoxideLabs/gitoxide/commit/45b369c65e7d36d42c8250b020ea5523615046e3)) * **Uncategorized** + - Release gix-date v0.10.3, gix-actor v0.35.2, gix-trace v0.1.13, gix-path v0.10.19, gix-features v0.43.0, gix-hash v0.19.0, gix-hashtable v0.9.0, gix-object v0.50.0, gix-glob v0.21.0, gix-attributes v0.27.0, gix-command v0.6.2, gix-packetline-blocking v0.19.1, gix-filter v0.20.0, gix-fs v0.16.0, gix-commitgraph v0.29.0, gix-revwalk v0.21.0, gix-traverse v0.47.0, gix-worktree-stream v0.22.0, gix-archive v0.22.0, gix-tempfile v18.0.0, gix-lock v18.0.0, gix-index v0.41.0, gix-config-value v0.15.1, gix-pathspec v0.12.0, gix-ignore v0.16.0, gix-worktree v0.42.0, gix-diff v0.53.0, gix-blame v0.3.0, gix-ref v0.53.0, gix-sec v0.12.0, gix-config v0.46.0, gix-prompt v0.11.1, gix-url v0.32.0, gix-credentials v0.30.0, gix-discover v0.41.0, gix-dir v0.15.0, gix-mailmap v0.27.2, gix-revision v0.35.0, gix-merge v0.6.0, gix-negotiate v0.21.0, gix-pack v0.60.0, gix-odb v0.70.0, gix-refspec v0.31.0, gix-shallow v0.5.0, gix-packetline v0.19.1, gix-transport v0.48.0, gix-protocol v0.51.0, gix-status v0.20.0, gix-submodule v0.20.0, gix-worktree-state v0.20.0, gix v0.73.0, gix-fsck v0.12.0, gitoxide-core v0.48.0, gitoxide v0.45.0, safety bump 43 crates ([`5a919c4`](https://github.com/GitoxideLabs/gitoxide/commit/5a919c48393020d47c7034946108577dd213b80a)) - Update changelogs prior to release ([`65037b5`](https://github.com/GitoxideLabs/gitoxide/commit/65037b56918b90ac07454a815b0ed136df2fca3b)) - Merge pull request #2070 from GitoxideLabs/dependabot/cargo/cargo-827bceb7eb ([`dab97f7`](https://github.com/GitoxideLabs/gitoxide/commit/dab97f7618f160421b6e31de8f3e2f3d11dc2ef2)) - Bump the cargo group across 1 directory with 68 updates ([`a9a8ea1`](https://github.com/GitoxideLabs/gitoxide/commit/a9a8ea1472532dde03bce4e0afdfa82924af1f96)) @@ -184,6 +210,16 @@ A maintenance release without user-facing changes. - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 + - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 From d64f257951754ea70b0179b83f76de957b712211 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sun, 3 Aug 2025 16:00:59 +0200 Subject: [PATCH 071/296] Release gix-actor v0.35.3, gix-path v0.10.20, gix-features v0.43.1, gix-object v0.50.1 --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- gix-actor/CHANGELOG.md | 5 +++-- gix-actor/Cargo.toml | 2 +- gix-archive/Cargo.toml | 4 ++-- gix-attributes/Cargo.toml | 2 +- gix-blame/Cargo.toml | 2 +- gix-command/Cargo.toml | 2 +- gix-config-value/Cargo.toml | 2 +- gix-config/Cargo.toml | 4 ++-- gix-credentials/Cargo.toml | 2 +- gix-diff/Cargo.toml | 4 ++-- gix-dir/Cargo.toml | 4 ++-- gix-discover/Cargo.toml | 2 +- gix-features/CHANGELOG.md | 5 +++-- gix-features/Cargo.toml | 4 ++-- gix-filter/Cargo.toml | 4 ++-- gix-fs/Cargo.toml | 4 ++-- gix-fsck/Cargo.toml | 2 +- gix-glob/Cargo.toml | 4 ++-- gix-ignore/Cargo.toml | 2 +- gix-index/Cargo.toml | 4 ++-- gix-mailmap/Cargo.toml | 2 +- gix-merge/Cargo.toml | 4 ++-- gix-negotiate/Cargo.toml | 2 +- gix-object/CHANGELOG.md | 5 +++-- gix-object/Cargo.toml | 8 ++++---- gix-odb/Cargo.toml | 6 +++--- gix-pack/Cargo.toml | 6 +++--- gix-path/CHANGELOG.md | 16 ++++++++++++++-- gix-path/Cargo.toml | 2 +- gix-pathspec/Cargo.toml | 2 +- gix-protocol/Cargo.toml | 4 ++-- gix-ref/Cargo.toml | 8 ++++---- gix-revision/Cargo.toml | 2 +- gix-revwalk/Cargo.toml | 2 +- gix-sec/Cargo.toml | 2 +- gix-status/Cargo.toml | 6 +++--- gix-submodule/Cargo.toml | 2 +- gix-transport/Cargo.toml | 2 +- gix-traverse/Cargo.toml | 2 +- gix-url/Cargo.toml | 4 ++-- gix-worktree-state/Cargo.toml | 6 +++--- gix-worktree-stream/Cargo.toml | 6 +++--- gix-worktree/Cargo.toml | 6 +++--- gix/Cargo.toml | 8 ++++---- 46 files changed, 101 insertions(+), 86 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4f46bf6eab1..8685cbf1010 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1437,7 +1437,7 @@ dependencies = [ [[package]] name = "gix-actor" -version = "0.35.2" +version = "0.35.3" dependencies = [ "bstr", "document-features", @@ -1734,7 +1734,7 @@ dependencies = [ [[package]] name = "gix-features" -version = "0.43.0" +version = "0.43.1" dependencies = [ "bstr", "bytes", @@ -1990,7 +1990,7 @@ version = "0.0.0" [[package]] name = "gix-object" -version = "0.50.0" +version = "0.50.1" dependencies = [ "bstr", "criterion", @@ -2127,7 +2127,7 @@ dependencies = [ [[package]] name = "gix-path" -version = "0.10.19" +version = "0.10.20" dependencies = [ "bstr", "gix-testtools", diff --git a/Cargo.toml b/Cargo.toml index 3d4ba2cd8d8..554e76031b5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -152,7 +152,7 @@ gitoxide-core-async-client = ["gitoxide-core/async-client", "futures-lite"] anyhow = "1.0.98" gitoxide-core = { version = "^0.48.0", path = "gitoxide-core" } -gix-features = { version = "^0.43.0", path = "gix-features" } +gix-features = { version = "^0.43.1", path = "gix-features" } gix = { version = "^0.73.0", path = "gix", default-features = false } clap = { version = "4.5.42", features = ["derive", "cargo"] } diff --git a/gix-actor/CHANGELOG.md b/gix-actor/CHANGELOG.md index f9fc0452d99..a9fb9c1caaa 100644 --- a/gix-actor/CHANGELOG.md +++ b/gix-actor/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.35.3 (2025-08-03) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 5 commits contributed to the release over the course of 19 calendar days. + - 6 commits contributed to the release over the course of 19 calendar days. - 19 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Prepare changelogs prior to release. ([`5e0122d`](https://github.com/GitoxideLabs/gitoxide/commit/5e0122df48392fb0ea6e16eb7b70d320b03244ca)) - Merge pull request #2097 from GitoxideLabs/fix-gix-date ([`589d63e`](https://github.com/GitoxideLabs/gitoxide/commit/589d63ed21e5f2cd53ad2cac96fc387df3ea26e9)) - Release gix-date v0.10.4 ([`007e3f6`](https://github.com/GitoxideLabs/gitoxide/commit/007e3f66246aaafc2374b85cbf77f89ec0b09512)) - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) diff --git a/gix-actor/Cargo.toml b/gix-actor/Cargo.toml index bc8fec1cdab..dd3fa1b2625 100644 --- a/gix-actor/Cargo.toml +++ b/gix-actor/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-actor" -version = "0.35.2" +version = "0.35.3" description = "A way to identify git actors" authors = ["Sebastian Thiel "] repository = "https://github.com/GitoxideLabs/gitoxide" diff --git a/gix-archive/Cargo.toml b/gix-archive/Cargo.toml index f80c300d94e..79ade408996 100644 --- a/gix-archive/Cargo.toml +++ b/gix-archive/Cargo.toml @@ -28,8 +28,8 @@ zip = ["dep:zip"] [dependencies] gix-worktree-stream = { version = "^0.22.0", path = "../gix-worktree-stream" } -gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } +gix-object = { version = "^0.50.1", path = "../gix-object" } +gix-path = { version = "^0.10.20", path = "../gix-path", optional = true } gix-date = { version = "^0.10.4", path = "../gix-date" } flate2 = { version = "1.1.1", optional = true, default-features = false, features = ["zlib-rs"] } diff --git a/gix-attributes/Cargo.toml b/gix-attributes/Cargo.toml index 28b0e10e471..34443a84762 100644 --- a/gix-attributes/Cargo.toml +++ b/gix-attributes/Cargo.toml @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-glob/serde", "kstring/serde"] [dependencies] -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } gix-glob = { version = "^0.21.0", path = "../gix-glob" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } diff --git a/gix-blame/Cargo.toml b/gix-blame/Cargo.toml index 981f6c5283d..0852f247886 100644 --- a/gix-blame/Cargo.toml +++ b/gix-blame/Cargo.toml @@ -16,7 +16,7 @@ gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } gix-date = { version = "^0.10.4", path = "../gix-date" } gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false, features = ["blob"] } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } diff --git a/gix-command/Cargo.toml b/gix-command/Cargo.toml index 92a392ad88c..a2cf9f408c2 100644 --- a/gix-command/Cargo.toml +++ b/gix-command/Cargo.toml @@ -16,7 +16,7 @@ doctest = false [dependencies] gix-trace = { version = "^0.1.13", path = "../gix-trace" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } diff --git a/gix-config-value/Cargo.toml b/gix-config-value/Cargo.toml index 32ba0ff9f30..e9479e73761 100644 --- a/gix-config-value/Cargo.toml +++ b/gix-config-value/Cargo.toml @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde"] [dependencies] -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } thiserror = "2.0.0" bstr = { version = "1.12.0", default-features = false, features = ["std"] } diff --git a/gix-config/Cargo.toml b/gix-config/Cargo.toml index f14c4462c98..bb64f1815c3 100644 --- a/gix-config/Cargo.toml +++ b/gix-config/Cargo.toml @@ -19,9 +19,9 @@ autotests = false serde = ["dep:serde", "bstr/serde", "gix-sec/serde", "gix-ref/serde", "gix-glob/serde", "gix-config-value/serde"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-features = { version = "^0.43.1", path = "../gix-features" } gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-sec = { version = "^0.12.0", path = "../gix-sec" } gix-ref = { version = "^0.53.0", path = "../gix-ref" } gix-glob = { version = "^0.21.0", path = "../gix-glob" } diff --git a/gix-credentials/Cargo.toml b/gix-credentials/Cargo.toml index 2f2f7d8a2f5..da14ae276e6 100644 --- a/gix-credentials/Cargo.toml +++ b/gix-credentials/Cargo.toml @@ -21,7 +21,7 @@ serde = ["dep:serde", "bstr/serde", "gix-sec/serde"] [dependencies] gix-sec = { version = "^0.12.0", path = "../gix-sec" } gix-url = { version = "^0.32.0", path = "../gix-url" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-command = { version = "^0.6.2", path = "../gix-command" } gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } gix-prompt = { version = "^0.11.1", path = "../gix-prompt" } diff --git a/gix-diff/Cargo.toml b/gix-diff/Cargo.toml index 1e81f480d20..2bd93358f12 100644 --- a/gix-diff/Cargo.toml +++ b/gix-diff/Cargo.toml @@ -31,11 +31,11 @@ gix-index = { version = "^0.41.0", path = "../gix-index", optional = true } gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec", optional = true } gix-attributes = { version = "^0.27.0", path = "../gix-attributes", optional = true } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-filter = { version = "^0.20.0", path = "../gix-filter", optional = true } gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"], optional = true } gix-command = { version = "^0.6.2", path = "../gix-command", optional = true } -gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } +gix-path = { version = "^0.10.20", path = "../gix-path", optional = true } gix-fs = { version = "^0.16.0", path = "../gix-fs", optional = true } gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile", optional = true } gix-trace = { version = "^0.1.13", path = "../gix-trace", optional = true } diff --git a/gix-dir/Cargo.toml b/gix-dir/Cargo.toml index 358e2dccf19..c28d71b84af 100644 --- a/gix-dir/Cargo.toml +++ b/gix-dir/Cargo.toml @@ -19,10 +19,10 @@ gix-trace = { version = "^0.1.13", path = "../gix-trace" } gix-index = { version = "^0.41.0", path = "../gix-index" } gix-discover = { version = "^0.41.0", path = "../gix-discover" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-ignore = { version = "^0.16.0", path = "../gix-ignore" } gix-utils = { version = "^0.3.0", path = "../gix-utils", features = ["bstr"] } diff --git a/gix-discover/Cargo.toml b/gix-discover/Cargo.toml index fb3e7b81ce6..bf9cd21c8da 100644 --- a/gix-discover/Cargo.toml +++ b/gix-discover/Cargo.toml @@ -16,7 +16,7 @@ doctest = false [dependencies] gix-sec = { version = "^0.12.0", path = "../gix-sec" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-ref = { version = "^0.53.0", path = "../gix-ref" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } diff --git a/gix-features/CHANGELOG.md b/gix-features/CHANGELOG.md index f21f77d651e..7e2333d2629 100644 --- a/gix-features/CHANGELOG.md +++ b/gix-features/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.43.1 (2025-08-03) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 19 calendar days. + - 4 commits contributed to the release over the course of 19 calendar days. - 19 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Prepare changelogs prior to release. ([`5e0122d`](https://github.com/GitoxideLabs/gitoxide/commit/5e0122df48392fb0ea6e16eb7b70d320b03244ca)) - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) diff --git a/gix-features/Cargo.toml b/gix-features/Cargo.toml index 59cdd621803..a955c1f2f0a 100644 --- a/gix-features/Cargo.toml +++ b/gix-features/Cargo.toml @@ -4,7 +4,7 @@ lints.workspace = true name = "gix-features" description = "A crate to integrate various capabilities using compile-time feature flags" repository = "https://github.com/GitoxideLabs/gitoxide" -version = "0.43.0" +version = "0.43.1" authors = ["Sebastian Thiel "] license = "MIT OR Apache-2.0" edition = "2021" @@ -101,7 +101,7 @@ required-features = ["io-pipe"] gix-trace = { version = "^0.1.13", path = "../gix-trace" } # for walkdir -gix-path = { version = "^0.10.19", path = "../gix-path", optional = true } +gix-path = { version = "^0.10.20", path = "../gix-path", optional = true } gix-utils = { version = "^0.3.0", path = "../gix-utils", optional = true } # 'parallel' feature diff --git a/gix-filter/Cargo.toml b/gix-filter/Cargo.toml index 404b8c879dd..512230ecc90 100644 --- a/gix-filter/Cargo.toml +++ b/gix-filter/Cargo.toml @@ -17,11 +17,11 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-command = { version = "^0.6.2", path = "../gix-command" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-packetline-blocking = { version = "^0.19.1", path = "../gix-packetline-blocking" } gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } diff --git a/gix-fs/Cargo.toml b/gix-fs/Cargo.toml index fede567c066..2e506ea5084 100644 --- a/gix-fs/Cargo.toml +++ b/gix-fs/Cargo.toml @@ -20,8 +20,8 @@ serde = ["dep:serde"] [dependencies] bstr = "1.12.0" -gix-path = { version = "^0.10.19", path = "../gix-path" } -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["fs-read-dir"] } +gix-path = { version = "^0.10.20", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["fs-read-dir"] } gix-utils = { version = "^0.3.0", path = "../gix-utils" } thiserror = "2.0.0" serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } diff --git a/gix-fsck/Cargo.toml b/gix-fsck/Cargo.toml index e9a283275ef..56f2248d7a6 100644 --- a/gix-fsck/Cargo.toml +++ b/gix-fsck/Cargo.toml @@ -17,7 +17,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } [dev-dependencies] gix-odb = { path = "../gix-odb" } diff --git a/gix-glob/Cargo.toml b/gix-glob/Cargo.toml index 9af3e476aa5..187d8985f06 100644 --- a/gix-glob/Cargo.toml +++ b/gix-glob/Cargo.toml @@ -19,8 +19,8 @@ doctest = false serde = ["dep:serde", "bstr/serde", "bitflags/serde"] [dependencies] -gix-path = { version = "^0.10.19", path = "../gix-path" } -gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-path = { version = "^0.10.20", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features" } bstr = { version = "1.12.0", default-features = false, features = ["std"] } bitflags = "2" serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-ignore/Cargo.toml b/gix-ignore/Cargo.toml index f50b836c323..941808691fc 100644 --- a/gix-ignore/Cargo.toml +++ b/gix-ignore/Cargo.toml @@ -20,7 +20,7 @@ serde = ["dep:serde", "bstr/serde", "gix-glob/serde"] [dependencies] gix-glob = { version = "^0.21.0", path = "../gix-glob" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } diff --git a/gix-index/Cargo.toml b/gix-index/Cargo.toml index 97b00434487..4104439d42f 100644 --- a/gix-index/Cargo.toml +++ b/gix-index/Cargo.toml @@ -22,12 +22,12 @@ test = true serde = ["dep:serde", "smallvec/serde", "gix-hash/serde"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = [ +gix-features = { version = "^0.43.1", path = "../gix-features", features = [ "progress", ] } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-bitmap = { version = "^0.2.14", path = "../gix-bitmap" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } gix-lock = { version = "^18.0.0", path = "../gix-lock" } diff --git a/gix-mailmap/Cargo.toml b/gix-mailmap/Cargo.toml index 43dac080d17..6d52e35b31c 100644 --- a/gix-mailmap/Cargo.toml +++ b/gix-mailmap/Cargo.toml @@ -19,7 +19,7 @@ doctest = false serde = ["dep:serde", "bstr/serde", "gix-actor/serde"] [dependencies] -gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-actor = { version = "^0.35.3", path = "../gix-actor" } gix-date = { version = "^0.10.4", path = "../gix-date" } bstr = { version = "1.12.0", default-features = false, features = ["std", "unicode"] } thiserror = "2.0.0" diff --git a/gix-merge/Cargo.toml b/gix-merge/Cargo.toml index bccbee29cb6..32e80c35178 100644 --- a/gix-merge/Cargo.toml +++ b/gix-merge/Cargo.toml @@ -20,11 +20,11 @@ serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-filter = { version = "^0.20.0", path = "../gix-filter" } gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } gix-command = { version = "^0.6.2", path = "../gix-command" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } gix-tempfile = { version = "^18.0.0", path = "../gix-tempfile" } gix-trace = { version = "^0.1.13", path = "../gix-trace" } diff --git a/gix-negotiate/Cargo.toml b/gix-negotiate/Cargo.toml index b7df1643ed5..ea139e978c4 100644 --- a/gix-negotiate/Cargo.toml +++ b/gix-negotiate/Cargo.toml @@ -17,7 +17,7 @@ test = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-date = { version = "^0.10.4", path = "../gix-date" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } diff --git a/gix-object/CHANGELOG.md b/gix-object/CHANGELOG.md index d82b9ef6625..6b4734b14f9 100644 --- a/gix-object/CHANGELOG.md +++ b/gix-object/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.50.1 (2025-08-03) Make Commit parsing more lenient so it can read older commits with botched gpg signatures, see [this commit](https://github.com/GitoxideLabs/gitoxide/commit/ef73c6b6631a3308b7bf5d15b69f4f14767a23d5) @@ -15,7 +15,7 @@ for details. - - 9 commits contributed to the release over the course of 19 calendar days. + - 10 commits contributed to the release over the course of 19 calendar days. - 19 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -27,6 +27,7 @@ for details.
view details * **Uncategorized** + - Prepare changelogs prior to release. ([`5e0122d`](https://github.com/GitoxideLabs/gitoxide/commit/5e0122df48392fb0ea6e16eb7b70d320b03244ca)) - Merge pull request #2098 from dscho/fix-parsing-of-legacy-git.git-commit ([`ef73c6b`](https://github.com/GitoxideLabs/gitoxide/commit/ef73c6b6631a3308b7bf5d15b69f4f14767a23d5)) - Refactor ([`8ad43f1`](https://github.com/GitoxideLabs/gitoxide/commit/8ad43f13012c7c8b05887d9f3d32f011d0c46274)) - Allow empty-valued commit headers in more places ([`a0660fe`](https://github.com/GitoxideLabs/gitoxide/commit/a0660fe3b4227b206dc6df099f55ec5bb41edce0)) diff --git a/gix-object/Cargo.toml b/gix-object/Cargo.toml index 41d2cde60b1..4c1fefd14b4 100644 --- a/gix-object/Cargo.toml +++ b/gix-object/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-object" -version = "0.50.0" +version = "0.50.1" description = "Immutable and mutable git objects with decoding and encoding support" authors = ["Sebastian Thiel "] repository = "https://github.com/GitoxideLabs/gitoxide" @@ -41,15 +41,15 @@ serde = [ verbose-object-parsing-errors = ["winnow/std"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = [ +gix-features = { version = "^0.43.1", path = "../gix-features", features = [ "progress", ] } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-actor = { version = "^0.35.3", path = "../gix-actor" } gix-date = { version = "^0.10.4", path = "../gix-date" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } itoa = "1.0.1" diff --git a/gix-odb/Cargo.toml b/gix-odb/Cargo.toml index 9c1efa0d6c3..523c04b661e 100644 --- a/gix-odb/Cargo.toml +++ b/gix-odb/Cargo.toml @@ -20,13 +20,13 @@ doctest = false serde = ["dep:serde", "gix-hash/serde", "gix-object/serde", "gix-pack/serde"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["walkdir", "zlib", "crc32"] } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["walkdir", "zlib", "crc32"] } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-date = { version = "^0.10.4", path = "../gix-date" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-quote = { version = "^0.6.0", path = "../gix-quote" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-pack = { version = "^0.60.0", path = "../gix-pack", default-features = false } gix-fs = { version = "^0.16.0", path = "../gix-fs" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } diff --git a/gix-pack/Cargo.toml b/gix-pack/Cargo.toml index 45db3564a29..13076bcaf30 100644 --- a/gix-pack/Cargo.toml +++ b/gix-pack/Cargo.toml @@ -34,11 +34,11 @@ serde = ["dep:serde", "gix-object/serde"] wasm = ["gix-diff?/wasm"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["crc32", "progress", "zlib"] } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["crc32", "progress", "zlib"] } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-chunk = { version = "^0.4.11", path = "../gix-chunk" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true } # for streaming of packs (input, output) diff --git a/gix-path/CHANGELOG.md b/gix-path/CHANGELOG.md index d1dc3ece89f..eb5913adb63 100644 --- a/gix-path/CHANGELOG.md +++ b/gix-path/CHANGELOG.md @@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## Unreleased +## 0.10.20 (2025-08-03) A maintenance release without user-facing changes. @@ -13,7 +13,7 @@ A maintenance release without user-facing changes. - - 3 commits contributed to the release over the course of 19 calendar days. + - 4 commits contributed to the release over the course of 19 calendar days. - 19 days passed between releases. - 0 commits were understood as [conventional](https://www.conventionalcommits.org). - 0 issues like '(#ID)' were seen in commit messages @@ -25,6 +25,7 @@ A maintenance release without user-facing changes.
view details * **Uncategorized** + - Prepare changelogs prior to release. ([`5e0122d`](https://github.com/GitoxideLabs/gitoxide/commit/5e0122df48392fb0ea6e16eb7b70d320b03244ca)) - Merge pull request #2090 from GitoxideLabs/dependabot/cargo/cargo-f147714000 ([`473fe52`](https://github.com/GitoxideLabs/gitoxide/commit/473fe522e84569f77bf38294a412f0d13fa54d63)) - Bump the cargo group with 41 updates ([`428412c`](https://github.com/GitoxideLabs/gitoxide/commit/428412c9ff05caabb4f8714d5de769603e18a8f9)) - Merge pull request #2075 from GitoxideLabs/improvements ([`784c046`](https://github.com/GitoxideLabs/gitoxide/commit/784c0465bf87011fe7dbf71a590d3f9e6c8696a8)) @@ -211,6 +212,17 @@ A maintenance release without user-facing changes. - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 + - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 +- https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 - https://github.com/GitoxideLabs/gitoxide/pull/1862#issuecomment-2692158831 diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml index a5f1191386e..4f40e5774b0 100644 --- a/gix-path/Cargo.toml +++ b/gix-path/Cargo.toml @@ -2,7 +2,7 @@ lints.workspace = true [package] name = "gix-path" -version = "0.10.19" +version = "0.10.20" repository = "https://github.com/GitoxideLabs/gitoxide" license = "MIT OR Apache-2.0" description = "A crate of the gitoxide project dealing paths and their conversions" diff --git a/gix-pathspec/Cargo.toml b/gix-pathspec/Cargo.toml index 1068a411fe0..4c235abd316 100644 --- a/gix-pathspec/Cargo.toml +++ b/gix-pathspec/Cargo.toml @@ -16,7 +16,7 @@ doctest = false [dependencies] gix-glob = { version = "^0.21.0", path = "../gix-glob" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } gix-config-value = { version = "^0.15.1", path = "../gix-config-value" } diff --git a/gix-protocol/Cargo.toml b/gix-protocol/Cargo.toml index 097d1046d58..afaad0d1242 100644 --- a/gix-protocol/Cargo.toml +++ b/gix-protocol/Cargo.toml @@ -68,7 +68,7 @@ path = "tests/async-protocol.rs" required-features = ["async-client"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = [ +gix-features = { version = "^0.43.1", path = "../gix-features", features = [ "progress", ] } gix-transport = { version = "^0.48.0", path = "../gix-transport" } @@ -80,7 +80,7 @@ gix-ref = { version = "^0.53.0", path = "../gix-ref" } gix-trace = { version = "^0.1.13", path = "../gix-trace", optional = true } gix-negotiate = { version = "^0.21.0", path = "../gix-negotiate", optional = true } -gix-object = { version = "^0.50.0", path = "../gix-object", optional = true } +gix-object = { version = "^0.50.1", path = "../gix-object", optional = true } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk", optional = true } gix-credentials = { version = "^0.30.0", path = "../gix-credentials", optional = true } gix-refspec = { version = "^0.31.0", path = "../gix-refspec", optional = true } diff --git a/gix-ref/Cargo.toml b/gix-ref/Cargo.toml index 1ded7fefcc4..2c4ca5b3bcc 100644 --- a/gix-ref/Cargo.toml +++ b/gix-ref/Cargo.toml @@ -21,14 +21,14 @@ test = true serde = ["dep:serde", "gix-hash/serde", "gix-actor/serde", "gix-object/serde"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["walkdir"] } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["walkdir"] } gix-fs = { version = "^0.16.0", path = "../gix-fs" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-utils = { version = "^0.3.0", path = "../gix-utils" } gix-validate = { version = "^0.10.0", path = "../gix-validate" } -gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-actor = { version = "^0.35.3", path = "../gix-actor" } gix-lock = { version = "^18.0.0", path = "../gix-lock" } gix-tempfile = { version = "^18.0.0", default-features = false, path = "../gix-tempfile" } diff --git a/gix-revision/Cargo.toml b/gix-revision/Cargo.toml index bacdf3af164..d661c5789ec 100644 --- a/gix-revision/Cargo.toml +++ b/gix-revision/Cargo.toml @@ -28,7 +28,7 @@ serde = ["dep:serde", "gix-hash/serde", "gix-object/serde"] [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable", optional = true } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } diff --git a/gix-revwalk/Cargo.toml b/gix-revwalk/Cargo.toml index a35340b36b3..ed665f583d7 100644 --- a/gix-revwalk/Cargo.toml +++ b/gix-revwalk/Cargo.toml @@ -16,7 +16,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-commitgraph = { version = "^0.29.0", path = "../gix-commitgraph" } diff --git a/gix-sec/Cargo.toml b/gix-sec/Cargo.toml index 33dd8141246..12d13cd7535 100644 --- a/gix-sec/Cargo.toml +++ b/gix-sec/Cargo.toml @@ -31,7 +31,7 @@ document-features = { version = "0.2.1", optional = true } libc = "0.2.174" [target.'cfg(windows)'.dependencies] -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } windows-sys = { version = "0.60.2", features = [ "Win32_Foundation", "Win32_Security_Authorization", diff --git a/gix-status/Cargo.toml b/gix-status/Cargo.toml index 2c3ca420f52..866df8275a4 100644 --- a/gix-status/Cargo.toml +++ b/gix-status/Cargo.toml @@ -23,9 +23,9 @@ worktree-rewrites = ["dep:gix-dir", "dep:gix-diff"] gix-index = { version = "^0.41.0", path = "../gix-index" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-path = { version = "^0.10.19", path = "../gix-path" } -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["progress"] } +gix-object = { version = "^0.50.1", path = "../gix-object" } +gix-path = { version = "^0.10.20", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["progress"] } gix-filter = { version = "^0.20.0", path = "../gix-filter" } gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features = false, features = ["attributes"] } gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } diff --git a/gix-submodule/Cargo.toml b/gix-submodule/Cargo.toml index df940ed0508..820509f9fa8 100644 --- a/gix-submodule/Cargo.toml +++ b/gix-submodule/Cargo.toml @@ -18,7 +18,7 @@ doctest = false gix-pathspec = { version = "^0.12.0", path = "../gix-pathspec" } gix-refspec = { version = "^0.31.0", path = "../gix-refspec" } gix-config = { version = "^0.46.0", path = "../gix-config" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-url = { version = "^0.32.0", path = "../gix-url" } bstr = { version = "1.12.0", default-features = false } diff --git a/gix-transport/Cargo.toml b/gix-transport/Cargo.toml index 5e443b4d0ba..87c5d24a397 100644 --- a/gix-transport/Cargo.toml +++ b/gix-transport/Cargo.toml @@ -82,7 +82,7 @@ required-features = ["async-client"] [dependencies] gix-command = { version = "^0.6.2", path = "../gix-command" } -gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-features = { version = "^0.43.1", path = "../gix-features" } gix-url = { version = "^0.32.0", path = "../gix-url" } gix-sec = { version = "^0.12.0", path = "../gix-sec" } gix-packetline = { version = "^0.19.1", path = "../gix-packetline" } diff --git a/gix-traverse/Cargo.toml b/gix-traverse/Cargo.toml index f6b6a13850d..9f544bf58ee 100644 --- a/gix-traverse/Cargo.toml +++ b/gix-traverse/Cargo.toml @@ -17,7 +17,7 @@ doctest = false [dependencies] gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-date = { version = "^0.10.4", path = "../gix-date" } gix-hashtable = { version = "^0.9.0", path = "../gix-hashtable" } gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } diff --git a/gix-url/Cargo.toml b/gix-url/Cargo.toml index 3accb66343c..dd73934ae6d 100644 --- a/gix-url/Cargo.toml +++ b/gix-url/Cargo.toml @@ -19,8 +19,8 @@ doctest = false serde = ["dep:serde", "bstr/serde"] [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features" } +gix-path = { version = "^0.10.20", path = "../gix-path" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["std", "derive"] } thiserror = "2.0.0" diff --git a/gix-worktree-state/Cargo.toml b/gix-worktree-state/Cargo.toml index 44249909b37..a7467ba2a6d 100644 --- a/gix-worktree-state/Cargo.toml +++ b/gix-worktree-state/Cargo.toml @@ -20,10 +20,10 @@ gix-worktree = { version = "^0.42.0", path = "../gix-worktree", default-features gix-index = { version = "^0.41.0", path = "../gix-index" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-glob = { version = "^0.21.0", path = "../gix-glob" } -gix-path = { version = "^0.10.19", path = "../gix-path" } -gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-path = { version = "^0.10.20", path = "../gix-path" } +gix-features = { version = "^0.43.1", path = "../gix-features" } gix-filter = { version = "^0.20.0", path = "../gix-filter" } io-close = "0.3.7" diff --git a/gix-worktree-stream/Cargo.toml b/gix-worktree-stream/Cargo.toml index 7cccc2c9a23..af2cc087e69 100644 --- a/gix-worktree-stream/Cargo.toml +++ b/gix-worktree-stream/Cargo.toml @@ -15,14 +15,14 @@ include = ["src/**/*", "LICENSE-*"] doctest = false [dependencies] -gix-features = { version = "^0.43.0", path = "../gix-features", features = ["progress", "io-pipe"] } +gix-features = { version = "^0.43.1", path = "../gix-features", features = ["progress", "io-pipe"] } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-attributes = { version = "^0.27.0", path = "../gix-attributes" } gix-filter = { version = "^0.20.0", path = "../gix-filter" } gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } thiserror = "2.0.0" parking_lot = "0.12.4" diff --git a/gix-worktree/Cargo.toml b/gix-worktree/Cargo.toml index d464fc2e944..795524474c7 100644 --- a/gix-worktree/Cargo.toml +++ b/gix-worktree/Cargo.toml @@ -26,13 +26,13 @@ serde = ["dep:serde", "bstr/serde", "gix-index/serde", "gix-hash/serde", "gix-ob gix-index = { version = "^0.41.0", path = "../gix-index" } gix-fs = { version = "^0.16.0", path = "../gix-fs" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } -gix-object = { version = "^0.50.0", path = "../gix-object" } +gix-object = { version = "^0.50.1", path = "../gix-object" } gix-glob = { version = "^0.21.0", path = "../gix-glob" } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-attributes = { version = "^0.27.0", path = "../gix-attributes", optional = true } gix-validate = { version = "^0.10.0", path = "../gix-validate", optional = true } gix-ignore = { version = "^0.16.0", path = "../gix-ignore" } -gix-features = { version = "^0.43.0", path = "../gix-features" } +gix-features = { version = "^0.43.1", path = "../gix-features" } serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] } bstr = { version = "1.12.0", default-features = false } diff --git a/gix/Cargo.toml b/gix/Cargo.toml index 9d5fd9d3c4f..0a7c6b4fc22 100644 --- a/gix/Cargo.toml +++ b/gix/Cargo.toml @@ -323,8 +323,8 @@ gix-config = { version = "^0.46.0", path = "../gix-config" } gix-odb = { version = "^0.70.0", path = "../gix-odb" } gix-hash = { version = "^0.19.0", path = "../gix-hash" } gix-shallow = { version = "^0.5.0", path = "../gix-shallow" } -gix-object = { version = "^0.50.0", path = "../gix-object" } -gix-actor = { version = "^0.35.2", path = "../gix-actor" } +gix-object = { version = "^0.50.1", path = "../gix-object" } +gix-actor = { version = "^0.35.3", path = "../gix-actor" } gix-pack = { version = "^0.60.0", path = "../gix-pack", default-features = false, features = [ "object-cache-dynamic", ] } @@ -332,13 +332,13 @@ gix-revision = { version = "^0.35.0", path = "../gix-revision", default-features gix-revwalk = { version = "^0.21.0", path = "../gix-revwalk" } gix-negotiate = { version = "^0.21.0", path = "../gix-negotiate", optional = true } -gix-path = { version = "^0.10.19", path = "../gix-path" } +gix-path = { version = "^0.10.20", path = "../gix-path" } gix-url = { version = "^0.32.0", path = "../gix-url" } gix-traverse = { version = "^0.47.0", path = "../gix-traverse" } gix-diff = { version = "^0.53.0", path = "../gix-diff", default-features = false } gix-merge = { version = "^0.6.0", path = "../gix-merge", default-features = false, optional = true } gix-mailmap = { version = "^0.27.2", path = "../gix-mailmap", optional = true } -gix-features = { version = "^0.43.0", path = "../gix-features", features = [ +gix-features = { version = "^0.43.1", path = "../gix-features", features = [ "progress", "once_cell", ] } From ba563b0e39ebc3ce635f399accd8a4be5210f816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jalil=20David=20Salam=C3=A9=20Messina?= Date: Mon, 4 Aug 2025 23:24:26 +0200 Subject: [PATCH 072/296] fix(gix): extend lifetime of iterators Previously the iterators would return references with lifetimes that were shorter than the actual lifetimes of the `gix::Reference` themselves. This was dues to a footgun with `'_` (eliding the lifetime). When a function returns an elided lifetime, this lifetime usually is the lifetime of the `&self` parameter, but sometimes it is the lifetime of the type itself (e.g. `Iter<'_>`). I made the lifetimes explicit to ensure we were using the correct ones. Closes #2103 --- gix-ref/src/store/file/overlay_iter.rs | 8 ++--- gix/src/reference/iter.rs | 46 +++++++++++++++++--------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/gix-ref/src/store/file/overlay_iter.rs b/gix-ref/src/store/file/overlay_iter.rs index f6eb8d03434..7a2368cebab 100644 --- a/gix-ref/src/store/file/overlay_iter.rs +++ b/gix-ref/src/store/file/overlay_iter.rs @@ -189,11 +189,11 @@ impl Iterator for LooseThenPacked<'_, '_> { } } -impl Platform<'_> { +impl<'repo> Platform<'repo> { /// Return an iterator over all references, loose or packed, sorted by their name. /// /// Errors are returned similarly to what would happen when loose and packed refs were iterated by themselves. - pub fn all(&self) -> std::io::Result> { + pub fn all<'p>(&'p self) -> std::io::Result> { self.store.iter_packed(self.packed.as_ref().map(|b| &***b)) } @@ -205,14 +205,14 @@ impl Platform<'_> { /// starts with `foo`, like `refs/heads/foo` and `refs/heads/foobar`. /// /// Prefixes are relative paths with slash-separated components. - pub fn prefixed(&self, prefix: &RelativePath) -> std::io::Result> { + pub fn prefixed<'p>(&'p self, prefix: &RelativePath) -> std::io::Result> { self.store .iter_prefixed_packed(prefix, self.packed.as_ref().map(|b| &***b)) } /// Return an iterator over the pseudo references, like `HEAD` or `FETCH_HEAD`, or anything else suffixed with `HEAD` /// in the root of the `.git` directory, sorted by name. - pub fn pseudo(&self) -> std::io::Result> { + pub fn pseudo<'p>(&'p self) -> std::io::Result> { self.store.iter_pseudo() } } diff --git a/gix/src/reference/iter.rs b/gix/src/reference/iter.rs index 66952577b64..cbdc78445c1 100644 --- a/gix/src/reference/iter.rs +++ b/gix/src/reference/iter.rs @@ -13,15 +13,15 @@ pub struct Platform<'r> { } /// An iterator over references, with or without filter. -pub struct Iter<'r> { - inner: gix_ref::file::iter::LooseThenPacked<'r, 'r>, +pub struct Iter<'p, 'r> { + inner: gix_ref::file::iter::LooseThenPacked<'p, 'r>, peel_with_packed: Option, peel: bool, repo: &'r crate::Repository, } -impl<'r> Iter<'r> { - fn new(repo: &'r crate::Repository, platform: gix_ref::file::iter::LooseThenPacked<'r, 'r>) -> Self { +impl<'p, 'r> Iter<'p, 'r> { + fn new(repo: &'r crate::Repository, platform: gix_ref::file::iter::LooseThenPacked<'p, 'r>) -> Self { Iter { inner: platform, peel_with_packed: None, @@ -31,23 +31,23 @@ impl<'r> Iter<'r> { } } -impl Platform<'_> { +impl<'repo> Platform<'repo> { /// Return an iterator over all references in the repository, excluding /// pseudo references. /// /// Even broken or otherwise unparsable or inaccessible references are returned and have to be handled by the caller on a /// case by case basis. - pub fn all(&self) -> Result, init::Error> { + pub fn all<'p>(&'p self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.all()?)) } /// Return an iterator over all references that match the given `prefix`. /// /// These are of the form `refs/heads/` or `refs/remotes/origin`, and must not contain relative paths components like `.` or `..`. - pub fn prefixed<'a>( - &self, + pub fn prefixed<'p, 'a>( + &'p self, prefix: impl TryInto<&'a RelativePath, Error = gix_path::relative_path::Error>, - ) -> Result, init::Error> { + ) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.prefixed(prefix.try_into()?)?)) } @@ -55,7 +55,23 @@ impl Platform<'_> { /// Return an iterator over all references that are tags. /// /// They are all prefixed with `refs/tags`. - pub fn tags(&self) -> Result, init::Error> { + /// + /// ```rust + /// # // Regression test for https://github.com/GitoxideLabs/gitoxide/issues/2103 + /// # // This only ensures we can return a reference, not that the code below is correct + /// /// Get the latest tag that isn't a pre-release version + /// fn latest_stable_tag(repo: &gix::Repository) -> Result, Box> { + /// repo.references()? + /// .tags()? + /// .filter_map(|tag| tag.ok()) + /// // Warning: lexically sorting version numbers is incorrect, use the semver crate if + /// // you want correct results + /// .max_by_key(|tag| tag.name().shorten().to_owned()) + /// .ok_or(std::io::Error::other("latest tag not found")) + /// .map_err(Into::into) + /// } + /// ``` + pub fn tags<'p>(&'p self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.prefixed(b"refs/tags/".try_into()?)?)) } @@ -63,7 +79,7 @@ impl Platform<'_> { /// Return an iterator over all local branches. /// /// They are all prefixed with `refs/heads`. - pub fn local_branches(&self) -> Result, init::Error> { + pub fn local_branches<'p>(&'p self) -> Result, init::Error> { Ok(Iter::new( self.repo, self.platform.prefixed(b"refs/heads/".try_into()?)?, @@ -72,7 +88,7 @@ impl Platform<'_> { // TODO: tests /// Return an iterator over all local pseudo references. - pub fn pseudo(&self) -> Result, init::Error> { + pub fn pseudo<'p>(&'p self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.pseudo()?)) } @@ -80,7 +96,7 @@ impl Platform<'_> { /// Return an iterator over all remote branches. /// /// They are all prefixed with `refs/remotes`. - pub fn remote_branches(&self) -> Result, init::Error> { + pub fn remote_branches<'p>(&'p self) -> Result, init::Error> { Ok(Iter::new( self.repo, self.platform.prefixed(b"refs/remotes/".try_into()?)?, @@ -88,7 +104,7 @@ impl Platform<'_> { } } -impl Iter<'_> { +impl Iter<'_, '_> { /// Automatically peel references before yielding them during iteration. /// /// This has the same effect as using `iter.map(|r| {r.peel_to_id_in_place(); r})`. @@ -104,7 +120,7 @@ impl Iter<'_> { } } -impl<'r> Iterator for Iter<'r> { +impl<'r> Iterator for Iter<'_, 'r> { type Item = Result, Box>; fn next(&mut self) -> Option { From d4130c326640f4731ab711be908b2a08b585070a Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Tue, 5 Aug 2025 04:35:40 +0200 Subject: [PATCH 073/296] refactor - adjust test location - simplify lifetimes --- gix/src/reference/iter.rs | 43 ++++++++------------------- gix/tests/gix/repository/reference.rs | 15 ++++++++++ 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/gix/src/reference/iter.rs b/gix/src/reference/iter.rs index cbdc78445c1..89dc13c19db 100644 --- a/gix/src/reference/iter.rs +++ b/gix/src/reference/iter.rs @@ -13,15 +13,15 @@ pub struct Platform<'r> { } /// An iterator over references, with or without filter. -pub struct Iter<'p, 'r> { - inner: gix_ref::file::iter::LooseThenPacked<'p, 'r>, +pub struct Iter<'packed, 'repo> { + inner: gix_ref::file::iter::LooseThenPacked<'packed, 'repo>, peel_with_packed: Option, peel: bool, - repo: &'r crate::Repository, + repo: &'repo crate::Repository, } -impl<'p, 'r> Iter<'p, 'r> { - fn new(repo: &'r crate::Repository, platform: gix_ref::file::iter::LooseThenPacked<'p, 'r>) -> Self { +impl<'packed, 'repo> Iter<'packed, 'repo> { + fn new(repo: &'repo crate::Repository, platform: gix_ref::file::iter::LooseThenPacked<'packed, 'repo>) -> Self { Iter { inner: platform, peel_with_packed: None, @@ -37,41 +37,24 @@ impl<'repo> Platform<'repo> { /// /// Even broken or otherwise unparsable or inaccessible references are returned and have to be handled by the caller on a /// case by case basis. - pub fn all<'p>(&'p self) -> Result, init::Error> { + pub fn all(&self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.all()?)) } /// Return an iterator over all references that match the given `prefix`. /// /// These are of the form `refs/heads/` or `refs/remotes/origin`, and must not contain relative paths components like `.` or `..`. - pub fn prefixed<'p, 'a>( - &'p self, + pub fn prefixed<'a>( + &self, prefix: impl TryInto<&'a RelativePath, Error = gix_path::relative_path::Error>, - ) -> Result, init::Error> { + ) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.prefixed(prefix.try_into()?)?)) } - // TODO: tests /// Return an iterator over all references that are tags. /// /// They are all prefixed with `refs/tags`. - /// - /// ```rust - /// # // Regression test for https://github.com/GitoxideLabs/gitoxide/issues/2103 - /// # // This only ensures we can return a reference, not that the code below is correct - /// /// Get the latest tag that isn't a pre-release version - /// fn latest_stable_tag(repo: &gix::Repository) -> Result, Box> { - /// repo.references()? - /// .tags()? - /// .filter_map(|tag| tag.ok()) - /// // Warning: lexically sorting version numbers is incorrect, use the semver crate if - /// // you want correct results - /// .max_by_key(|tag| tag.name().shorten().to_owned()) - /// .ok_or(std::io::Error::other("latest tag not found")) - /// .map_err(Into::into) - /// } - /// ``` - pub fn tags<'p>(&'p self) -> Result, init::Error> { + pub fn tags(&self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.prefixed(b"refs/tags/".try_into()?)?)) } @@ -79,7 +62,7 @@ impl<'repo> Platform<'repo> { /// Return an iterator over all local branches. /// /// They are all prefixed with `refs/heads`. - pub fn local_branches<'p>(&'p self) -> Result, init::Error> { + pub fn local_branches(&self) -> Result, init::Error> { Ok(Iter::new( self.repo, self.platform.prefixed(b"refs/heads/".try_into()?)?, @@ -88,7 +71,7 @@ impl<'repo> Platform<'repo> { // TODO: tests /// Return an iterator over all local pseudo references. - pub fn pseudo<'p>(&'p self) -> Result, init::Error> { + pub fn pseudo(&self) -> Result, init::Error> { Ok(Iter::new(self.repo, self.platform.pseudo()?)) } @@ -96,7 +79,7 @@ impl<'repo> Platform<'repo> { /// Return an iterator over all remote branches. /// /// They are all prefixed with `refs/remotes`. - pub fn remote_branches<'p>(&'p self) -> Result, init::Error> { + pub fn remote_branches(&self) -> Result, init::Error> { Ok(Iter::new( self.repo, self.platform.prefixed(b"refs/remotes/".try_into()?)?, diff --git a/gix/tests/gix/repository/reference.rs b/gix/tests/gix/repository/reference.rs index b69ac5445c7..e3a4b416744 100644 --- a/gix/tests/gix/repository/reference.rs +++ b/gix/tests/gix/repository/reference.rs @@ -183,6 +183,21 @@ mod iter_references { ); Ok(()) } + + /// Regression test for https://github.com/GitoxideLabs/gitoxide/issues/2103 + /// This only ensures we can return a reference, not that the code below is correct + #[test] + fn tags() -> crate::Result { + let repo = repo()?; + let actual = repo + .references()? + .tags()? + .filter_map(Result::ok) + .max_by_key(|tag| tag.name().shorten().to_owned()) + .ok_or(std::io::Error::other("latest tag not found"))?; + assert_eq!(actual.name().as_bstr(), "refs/tags/t1"); + Ok(()) + } } mod head { From 6693ab9bfc123eb0cb8fb7a35654e01fe5853318 Mon Sep 17 00:00:00 2001 From: David Knaack Date: Thu, 7 Aug 2025 18:12:45 +0200 Subject: [PATCH 074/296] feat(gix): support `diff.ignoreSubmodules` overrides in status --- gix/src/status/index_worktree.rs | 22 ++++++++++++++++++++-- gix/src/status/mod.rs | 5 +++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gix/src/status/index_worktree.rs b/gix/src/status/index_worktree.rs index 1911650a1c2..56c82737f37 100644 --- a/gix/src/status/index_worktree.rs +++ b/gix/src/status/index_worktree.rs @@ -208,7 +208,7 @@ mod submodule_status { use crate::{ bstr, - bstr::BStr, + bstr::{BStr, BString}, status::{index_worktree::BuiltinSubmoduleStatus, Submodule}, }; @@ -247,6 +247,8 @@ mod submodule_status { SubmoduleStatus(#[from] crate::submodule::status::Error), #[error(transparent)] IgnoreConfig(#[from] crate::submodule::config::Error), + #[error("The value of 'diff.submoduleIgnore' was invalid: '{actual}'")] + DiffSubmoduleIgnoreConfig { actual: BString }, } impl gix_status::index_as_worktree::traits::SubmoduleStatus for BuiltinSubmoduleStatus { @@ -275,7 +277,23 @@ mod submodule_status { return Ok(None); }; let (ignore, check_dirty) = match self.mode { - Submodule::AsConfigured { check_dirty } => (sm.ignore()?.unwrap_or_default(), check_dirty), + Submodule::AsConfigured { check_dirty } => { + // diff.ignoreSubmodules is the global setting, and if it exists, it overrides the submodule's own ignore setting. + let global_ignore = repo.config_snapshot().string("diff.ignoreSubmodules"); + if let Some(ignore_str) = global_ignore { + let ignore = ignore_str + .as_ref() + .try_into() + .map_err(|_| Error::DiffSubmoduleIgnoreConfig { + actual: ignore_str.into_owned(), + })?; + (ignore, check_dirty) + } else { + // If no global ignore is set, use the submodule's ignore setting. + let ignore = sm.ignore()?.unwrap_or_default(); + (ignore, check_dirty) + } + } Submodule::Given { ignore, check_dirty } => (ignore, check_dirty), }; let status = sm.status(ignore, check_dirty)?; diff --git a/gix/src/status/mod.rs b/gix/src/status/mod.rs index fd7b60a442c..721bd122661 100644 --- a/gix/src/status/mod.rs +++ b/gix/src/status/mod.rs @@ -20,8 +20,9 @@ where /// How to obtain a submodule's status. #[derive(Copy, Clone, Debug, Ord, PartialOrd, Eq, PartialEq, Hash)] pub enum Submodule { - /// Use the ['ignore' value](crate::Submodule::ignore) to determine which submodules - /// participate in the status query, and to which extent. + /// Use the `diff.submoduleIgnore` configuration to determine, or if not set, + /// use the submodule's own ['ignore' value](crate::Submodule::ignore) to determine + /// which submodules participate in the status query, and to which extent. AsConfigured { /// If `true`, default `false`, the computation will stop once the first in a ladder operations /// ordered from cheap to expensive shows that the submodule is dirty. From cf21d0d0487dee0da03a5b0d6e189cc71de6a30f Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Fri, 8 Aug 2025 20:03:37 -0400 Subject: [PATCH 075/296] Mark `ReadDataLineFuture` as `#[allow(dead_code)]` The `ReadDataLineFuture` struct was among the facilities added within `gix-packetline` in 41fdb84 (#634), and it looks like it may have been intended to be used eventually. However, it is unused. While it is public in `read::sidebands::async_io` module, the only facility from that module that is exposed through `read::sidebands` is `WithSidebands`: https://github.com/GitoxideLabs/gitoxide/blob/04a18f3a4520dd6f49b5f87fe3782dd1cd1547f2/gix-packetline/src/read/sidebands/mod.rs#L6-L9 This situation appears to be long-standing. However, possibly because it is public in its own directly containing module, it was not detected as dead code by `cargo clippy` until recently. Specifically, this caused the CI `lint` job to fail starting in the recently released Rust 1.89. This can be observed by rerunning the workflow where it had passed before: https://github.com/EliahKagan/gitoxide/actions/runs/16739420509/job/47709197815 (The failure only happens in the `lean-async` run of `cargo clippy` because the containing module is not used at all in the `max`, `small`, and `max-pure` builds.) For now, this commit suppresses the error by adding `#[allow(dead_code)]` to `ReadDataLineFuture`. --- gix-packetline-blocking/src/read/sidebands/async_io.rs | 1 + gix-packetline/src/read/sidebands/async_io.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/gix-packetline-blocking/src/read/sidebands/async_io.rs b/gix-packetline-blocking/src/read/sidebands/async_io.rs index 43224dd15fe..c17a55d6c1f 100644 --- a/gix-packetline-blocking/src/read/sidebands/async_io.rs +++ b/gix-packetline-blocking/src/read/sidebands/async_io.rs @@ -176,6 +176,7 @@ where } } +#[allow(dead_code)] pub struct ReadDataLineFuture<'a, 'b, T: AsyncRead, F> { parent: &'b mut WithSidebands<'a, T, F>, buf: &'b mut Vec, diff --git a/gix-packetline/src/read/sidebands/async_io.rs b/gix-packetline/src/read/sidebands/async_io.rs index 92e61114214..ebb364880bb 100644 --- a/gix-packetline/src/read/sidebands/async_io.rs +++ b/gix-packetline/src/read/sidebands/async_io.rs @@ -174,6 +174,7 @@ where } } +#[allow(dead_code)] pub struct ReadDataLineFuture<'a, 'b, T: AsyncRead, F> { parent: &'b mut WithSidebands<'a, T, F>, buf: &'b mut Vec, From 453bb2cfb5f11080065f336c3d16ba701db64991 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Fri, 8 Aug 2025 08:37:52 +0200 Subject: [PATCH 076/296] refactor - add `diff.ignoreSubmodules` configuration key with a strong type - add test assertions to nail most relevant behaviour. --- gix/src/config/tree/sections/diff.rs | 40 +++++++++++++++++++++++++--- gix/src/status/index_worktree.rs | 23 ++++++++-------- gix/tests/gix/submodule.rs | 25 ++++++++++++++++- 3 files changed, 73 insertions(+), 15 deletions(-) diff --git a/gix/src/config/tree/sections/diff.rs b/gix/src/config/tree/sections/diff.rs index 7caa0b447a7..532a2bd37bc 100644 --- a/gix/src/config/tree/sections/diff.rs +++ b/gix/src/config/tree/sections/diff.rs @@ -15,6 +15,12 @@ impl Diff { .with_note( "The limit is actually squared, so 1000 stands for up to 1 million diffs if fuzzy rename tracking is enabled", ); + + /// The `diff.ignoreSubmodules` key. + pub const IGNORE_SUBMODULES: Ignore = + Ignore::new_with_validate("ignoreSubmodules", &config::Tree::DIFF, validate::Ignore) + .with_note("This setting affects only the submodule status, and thus the repository status in general."); + /// The `diff.renames` key. pub const RENAMES: Renames = Renames::new_renames("renames", &config::Tree::DIFF); @@ -45,6 +51,7 @@ impl Section for Diff { fn keys(&self) -> &[&dyn Key] { &[ &Self::ALGORITHM, + &Self::IGNORE_SUBMODULES, &Self::RENAME_LIMIT, &Self::RENAMES, &Self::DRIVER_COMMAND, @@ -59,6 +66,9 @@ impl Section for Diff { /// The `diff.algorithm` key. pub type Algorithm = keys::Any; +/// The `diff.ignoreSubmodules` key. +pub type Ignore = keys::Any; + /// The `diff.renames` key. pub type Renames = keys::Any; @@ -71,12 +81,27 @@ mod algorithm { use crate::{ bstr::BStr, config, - config::{diff::algorithm::Error, tree::sections::diff::Algorithm}, + config::{ + diff::algorithm, + key, + tree::sections::diff::{Algorithm, Ignore}, + }, }; + impl Ignore { + /// See if `value` is an actual ignore + pub fn try_into_ignore( + &'static self, + value: Cow<'_, BStr>, + ) -> Result { + gix_submodule::config::Ignore::try_from(value.as_ref()) + .map_err(|()| key::GenericErrorWithValue::from_value(self, value.into_owned())) + } + } + impl Algorithm { /// Derive the diff algorithm identified by `name`, case-insensitively. - pub fn try_into_algorithm(&self, name: Cow<'_, BStr>) -> Result { + pub fn try_into_algorithm(&self, name: Cow<'_, BStr>) -> Result { let algo = if name.eq_ignore_ascii_case(b"myers") || name.eq_ignore_ascii_case(b"default") { gix_diff::blob::Algorithm::Myers } else if name.eq_ignore_ascii_case(b"minimal") { @@ -88,7 +113,7 @@ mod algorithm { name: name.into_owned(), }); } else { - return Err(Error::Unknown { + return Err(algorithm::Error::Unknown { name: name.into_owned(), }); }; @@ -171,6 +196,15 @@ pub(super) mod validate { config::tree::{keys, Diff}, }; + pub struct Ignore; + impl keys::Validate for Ignore { + fn validate(&self, value: &BStr) -> Result<(), Box> { + gix_submodule::config::Ignore::try_from(value) + .map_err(|()| format!("Value '{value}' is not a valid submodule 'ignore' value"))?; + Ok(()) + } + } + pub struct Algorithm; impl keys::Validate for Algorithm { fn validate(&self, value: &BStr) -> Result<(), Box> { diff --git a/gix/src/status/index_worktree.rs b/gix/src/status/index_worktree.rs index 56c82737f37..fa125acb317 100644 --- a/gix/src/status/index_worktree.rs +++ b/gix/src/status/index_worktree.rs @@ -206,9 +206,11 @@ pub struct BuiltinSubmoduleStatus { mod submodule_status { use std::borrow::Cow; + use crate::config::cache::util::ApplyLeniency; use crate::{ bstr, - bstr::{BStr, BString}, + bstr::BStr, + config, status::{index_worktree::BuiltinSubmoduleStatus, Submodule}, }; @@ -247,8 +249,8 @@ mod submodule_status { SubmoduleStatus(#[from] crate::submodule::status::Error), #[error(transparent)] IgnoreConfig(#[from] crate::submodule::config::Error), - #[error("The value of 'diff.submoduleIgnore' was invalid: '{actual}'")] - DiffSubmoduleIgnoreConfig { actual: BString }, + #[error(transparent)] + DiffSubmoduleIgnoreConfig(#[from] config::key::GenericErrorWithValue), } impl gix_status::index_as_worktree::traits::SubmoduleStatus for BuiltinSubmoduleStatus { @@ -279,14 +281,13 @@ mod submodule_status { let (ignore, check_dirty) = match self.mode { Submodule::AsConfigured { check_dirty } => { // diff.ignoreSubmodules is the global setting, and if it exists, it overrides the submodule's own ignore setting. - let global_ignore = repo.config_snapshot().string("diff.ignoreSubmodules"); - if let Some(ignore_str) = global_ignore { - let ignore = ignore_str - .as_ref() - .try_into() - .map_err(|_| Error::DiffSubmoduleIgnoreConfig { - actual: ignore_str.into_owned(), - })?; + let global_ignore = repo + .config_snapshot() + .string(&config::tree::Diff::IGNORE_SUBMODULES) + .map(|value| config::tree::Diff::IGNORE_SUBMODULES.try_into_ignore(value)) + .transpose() + .with_leniency(repo.config.lenient_config)?; + if let Some(ignore) = global_ignore { (ignore, check_dirty) } else { // If no global ignore is set, use the submodule's ignore setting. diff --git a/gix/tests/gix/submodule.rs b/gix/tests/gix/submodule.rs index ab29c22c018..d81fe7512a8 100644 --- a/gix/tests/gix/submodule.rs +++ b/gix/tests/gix/submodule.rs @@ -187,7 +187,7 @@ mod open { #[test] fn modified_in_index_only() -> crate::Result { - let repo = repo("submodule-index-changed")?; + let mut repo: gix::Repository = repo("submodule-index-changed")?; let sm = repo.submodules()?.into_iter().flatten().next().expect("one submodule"); for mode in [ @@ -213,6 +213,29 @@ mod open { repo.is_dirty()?, "superproject should see submodule changes in the index as well" ); + + repo.config_snapshot_mut() + .set_value(&gix::config::tree::Diff::IGNORE_SUBMODULES, "all")?; + + if cfg!(feature = "parallel") { + assert!(!repo.is_dirty()?, "There is a global flag to deactivate this"); + } else { + assert!( + repo.is_dirty()?, + "We still spawn a thread in non-parallel mode, \ + but then ThreadSafe repository isn't actually threadsafe.\ + This is why we open a new repo, and can't see in-memory overrides.\ + Maybe ThreadSafeRepository should be changed to always use thred-safe primitives." + ); + } + + let sm = repo.submodules()?.into_iter().flatten().next().expect("one submodule"); + let status = sm.status_opts(gix::submodule::config::Ignore::None, true, &mut |platform| platform)?; + assert_eq!( + status.is_dirty(), + Some(true), + "The global override has no bearing on this specific call" + ); Ok(()) } From adbf57525855a1ae458b48dab27031a4f65f3a2a Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Sun, 10 Aug 2025 05:19:53 -0400 Subject: [PATCH 077/296] Keep `test-32bit` CI on Debian 12 for the moment Debian `stable` has moved from Debian 12 `bookworm` to Debian 13 `trixie`. The Debian 12 `git` package is 2.39.5 (with downstream patches), while the Debian 13 `git` package is 2.47.2 (with downstream patches). This brings back #1622 for the `test-32bit` jobs, where the `regex_matches` test fails again, as seen in: - https://github.com/EliahKagan/gitoxide/actions/runs/16855949428/job/47756506693#step:10:429 - https://github.com/EliahKagan/gitoxide/actions/runs/16843514197/job/47757429000#step:10:429 The `:/` baseline skip was removed in #1993 based on two assumptions. It turns out neither of these was altogether correct: - Although most CI jobs are expected to have a recent Git because GitHub Actions runner images are expected to have a recent Git, `container` jobs may have an older Git, as is the case here. - Debian 13 is a release of a prominent distribution that provides Git 2.47.*. Since Debian is very popular and the time between its stable releases is sometimes long, the the scenario of a system provided Git 2.47.* is now far from obscure. It may be that a `:/` baseline skip should be reintroduced to work around this. If so, it should possibly be opt-in by a `GIX_TEST_*` environment variable, because some of the reasons for removing it still apply fully. (Such as to avoid: the risk of accidentally committing incorrect regenerated fixture archives; misleading test results, where what it means for the test to pass varies by system in a non-obvious way; and the need to cover other tests that run under other feature combinations and are similarly affected.) It may (instead, or also) be that we should use a later build of `git` than 2.47.* in the `test-32bit` jobs, which would have the fix for the bug that underlies #1622 and thus avoid the CI failure, though it would currently involve using either an unofficial build or taking it from Debian `unstable`. This commit holds the Docker image back to Debian 12. This is meant as a temporary workaround. This only modifies the `test-32bit` jobs. The `pure-rust-build` job works on Debian 13 already, because it does not run the tests. (Running the tests without `GIX_TEST_IGNORE_ARCHIVES` would also pass, even with affected versions of Git, as #1622 is not surfaced when pre-generated baselines are used from committed archives.) --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 73417387ded..e542c443938 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -283,7 +283,7 @@ jobs: runs-on: ${{ matrix.runner-os }} - container: ${{ matrix.container-arch }}/debian:stable-slim + container: ${{ matrix.container-arch }}/debian:bookworm-slim steps: - name: Prerequisites From 9c28f3363c648e0fed88f5d63b2fac3aa4a545cf Mon Sep 17 00:00:00 2001 From: Peter Grayson Date: Sun, 10 Aug 2025 17:33:46 -0400 Subject: [PATCH 078/296] fix(gix-date): add parse_raw() When parsing arbitrary date inputs from the user with gix_date::parse(), the non-strict gix_date::parse_header() would accept a variety of inputs that do not match any of the known/accepted formats, but would nonetheless be accepted as being "close enough" to a raw date as found in git commit headers. The new parse_raw() function takes a stricter approach to parsing raw dates as found in commit headers, only accepting inputs that unambiguously match a valid raw date. The gix_date::parse() function is updated to use the new parse_raw() function instead of the less-strict parse_header(). This has the effect of making gix_date::parse() avoid mis-parsing various inputs that would otherwise have been accepted by gix_date::parse_header(). For example "28 Jan 2005". --- gix-date/src/lib.rs | 2 +- gix-date/src/parse.rs | 48 +++++++++++++++++++++++++++++++++++- gix-date/tests/time/mod.rs | 2 +- gix-date/tests/time/parse.rs | 46 +++++++++++++++++++++++++++++++--- 4 files changed, 91 insertions(+), 7 deletions(-) diff --git a/gix-date/src/lib.rs b/gix-date/src/lib.rs index 68d39dfda84..d1e420b00db 100644 --- a/gix-date/src/lib.rs +++ b/gix-date/src/lib.rs @@ -13,7 +13,7 @@ pub mod time; /// pub mod parse; -pub use parse::function::{parse, parse_header}; +pub use parse::function::{parse, parse_header, parse_raw}; /// A timestamp with timezone. #[derive(Default, PartialEq, Eq, Debug, Hash, Ord, PartialOrd, Clone, Copy)] diff --git a/gix-date/src/parse.rs b/gix-date/src/parse.rs index 32dae6fa408..bba794c1c2a 100644 --- a/gix-date/src/parse.rs +++ b/gix-date/src/parse.rs @@ -165,7 +165,7 @@ pub(crate) mod function { Time::new(val, 0) } else if let Some(val) = relative::parse(input, now).transpose()? { Time::new(val.timestamp().as_second(), val.offset().seconds()) - } else if let Some(val) = parse_header(input) { + } else if let Some(val) = parse_raw(input) { // Format::Raw val } else { @@ -236,6 +236,52 @@ pub(crate) mod function { Some(time) } + /// Strictly parse the raw commit header format like `1745582210 +0200`. + /// + /// Some strict rules include: + /// + /// - The timezone offset must be present. + /// - The timezone offset must have a sign; either `+` or `-`. + /// - The timezone offset hours must be less than or equal to 14. + /// - The timezone offset minutes must be exactly 0, 15, 30, or 45. + /// - The timezone offset seconds may be present, but 0 is the only valid value. + /// - Only whitespace may suffix the timezone offset. + /// + /// But this function isn't perfectly strict insofar as it allows arbitrary + /// whitespace before and after the seconds and offset components. + /// + /// The goal is to only accept inputs that _unambiguously_ look like + /// git's raw date format. + pub fn parse_raw(input: &str) -> Option