diff --git a/Cargo.lock b/Cargo.lock index a18dbb273..f7e7b49b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -534,6 +534,9 @@ name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] name = "bitvec" @@ -2387,6 +2390,7 @@ version = "0.0.0" dependencies = [ "bstr", "git2", + "gix", "serde", ] @@ -2552,49 +2556,53 @@ dependencies = [ [[package]] name = "gix" version = "0.64.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-command", - "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-config", "gix-credentials", "gix-date 0.9.0", "gix-diff", "gix-dir", "gix-discover 0.33.0", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-filter", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-macros", + "gix-mailmap", "gix-negotiate", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-odb", "gix-pack", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-pathspec", "gix-prompt", + "gix-protocol", "gix-ref 0.45.0", "gix-refspec", "gix-revision", - "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-submodule", - "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-traverse 0.39.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-transport", + "gix-traverse 0.39.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-url", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-worktree 0.34.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-worktree 0.34.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "once_cell", + "serde", "smallvec", "thiserror", ] @@ -2616,12 +2624,13 @@ dependencies = [ [[package]] name = "gix-actor" version = "0.31.5" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-date 0.9.0", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "itoa 1.0.11", + "serde", "thiserror", "winnow 0.6.16", ] @@ -2646,14 +2655,15 @@ dependencies = [ [[package]] name = "gix-attributes" version = "0.22.3" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "kstring", + "serde", "smallvec", "thiserror", "unicode-bom", @@ -2671,7 +2681,7 @@ dependencies = [ [[package]] name = "gix-bitmap" version = "0.2.11" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "thiserror", ] @@ -2688,7 +2698,7 @@ dependencies = [ [[package]] name = "gix-chunk" version = "0.4.8" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "thiserror", ] @@ -2696,11 +2706,11 @@ dependencies = [ [[package]] name = "gix-command" version = "0.3.8" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "shell-words", ] @@ -2721,28 +2731,29 @@ dependencies = [ [[package]] name = "gix-commitgraph" version = "0.24.3" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-chunk 0.4.8 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-chunk 0.4.8 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "memmap2", + "serde", "thiserror", ] [[package]] name = "gix-config" version = "0.38.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-config-value", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-ref 0.45.0", - "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "memchr", "once_cell", "smallvec", @@ -2754,11 +2765,11 @@ dependencies = [ [[package]] name = "gix-config-value" version = "0.14.7" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "libc", "thiserror", ] @@ -2766,16 +2777,17 @@ dependencies = [ [[package]] name = "gix-credentials" version = "0.24.4" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-command", "gix-config-value", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-prompt", - "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-url", + "serde", "thiserror", ] @@ -2794,41 +2806,42 @@ dependencies = [ [[package]] name = "gix-date" version = "0.9.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "itoa 1.0.11", "jiff", + "serde", "thiserror", ] [[package]] name = "gix-diff" version = "0.44.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] [[package]] name = "gix-dir" version = "0.6.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-discover 0.33.0", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-pathspec", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-worktree 0.34.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-worktree 0.34.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] @@ -2851,15 +2864,15 @@ dependencies = [ [[package]] name = "gix-discover" version = "0.33.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "dunce", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-ref 0.45.0", - "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] @@ -2881,14 +2894,14 @@ dependencies = [ [[package]] name = "gix-features" version = "0.38.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "crc32fast", "crossbeam-channel", "flate2", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "libc", "once_cell", "parking_lot 0.12.3", @@ -2901,19 +2914,19 @@ dependencies = [ [[package]] name = "gix-filter" version = "0.11.3" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "encoding_rs", - "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-command", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-packetline-blocking", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "smallvec", "thiserror", ] @@ -2932,11 +2945,11 @@ dependencies = [ [[package]] name = "gix-fs" version = "0.11.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "fastrand 2.1.0", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", ] [[package]] @@ -2954,12 +2967,13 @@ dependencies = [ [[package]] name = "gix-glob" version = "0.16.4" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "serde", ] [[package]] @@ -2975,9 +2989,10 @@ dependencies = [ [[package]] name = "gix-hash" version = "0.14.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "faster-hex", + "serde", "thiserror", ] @@ -2995,9 +3010,9 @@ dependencies = [ [[package]] name = "gix-hashtable" version = "0.5.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "hashbrown 0.14.5", "parking_lot 0.12.3", ] @@ -3018,12 +3033,13 @@ dependencies = [ [[package]] name = "gix-ignore" version = "0.11.3" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "serde", "unicode-bom", ] @@ -3058,26 +3074,27 @@ dependencies = [ [[package]] name = "gix-index" version = "0.33.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", "bstr", "filetime", "fnv", - "gix-bitmap 0.2.11 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-traverse 0.39.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-bitmap 0.2.11 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-traverse 0.39.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "hashbrown 0.14.5", "itoa 1.0.11", "libc", "memmap2", "rustix 0.38.34", + "serde", "smallvec", "thiserror", ] @@ -3096,34 +3113,46 @@ dependencies = [ [[package]] name = "gix-lock" version = "14.0.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] [[package]] name = "gix-macros" version = "0.1.5" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "proc-macro2", "quote", "syn 2.0.68", ] +[[package]] +name = "gix-mailmap" +version = "0.23.5" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" +dependencies = [ + "bstr", + "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-date 0.9.0", + "serde", + "thiserror", +] + [[package]] name = "gix-negotiate" version = "0.13.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", - "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-date 0.9.0", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "smallvec", "thiserror", ] @@ -3150,16 +3179,17 @@ dependencies = [ [[package]] name = "gix-object" version = "0.42.3" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-date 0.9.0", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "itoa 1.0.11", + "serde", "smallvec", "thiserror", "winnow 0.6.16", @@ -3168,18 +3198,19 @@ dependencies = [ [[package]] name = "gix-odb" version = "0.61.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "arc-swap", "gix-date 0.9.0", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-pack", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "parking_lot 0.12.3", + "serde", "tempfile", "thiserror", ] @@ -3187,29 +3218,41 @@ dependencies = [ [[package]] name = "gix-pack" version = "0.51.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "clru", - "gix-chunk 0.4.8 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-chunk 0.4.8 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "memmap2", + "serde", "smallvec", "thiserror", "uluru", ] [[package]] -name = "gix-packetline-blocking" -version = "0.17.4" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +name = "gix-packetline" +version = "0.17.5" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "faster-hex", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "thiserror", +] + +[[package]] +name = "gix-packetline-blocking" +version = "0.17.4" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" +dependencies = [ + "bstr", + "faster-hex", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] @@ -3229,10 +3272,10 @@ dependencies = [ [[package]] name = "gix-path" version = "0.10.9" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-trace 0.1.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "home", "once_cell", "thiserror", @@ -3241,21 +3284,21 @@ dependencies = [ [[package]] name = "gix-pathspec" version = "0.7.6" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", "bstr", - "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-config-value", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] [[package]] name = "gix-prompt" version = "0.8.6" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "gix-command", "gix-config-value", @@ -3264,6 +3307,24 @@ dependencies = [ "thiserror", ] +[[package]] +name = "gix-protocol" +version = "0.45.2" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" +dependencies = [ + "bstr", + "gix-credentials", + "gix-date 0.9.0", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-transport", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "maybe-async", + "serde", + "thiserror", + "winnow 0.6.16", +] + [[package]] name = "gix-quote" version = "0.4.12" @@ -3278,10 +3339,10 @@ dependencies = [ [[package]] name = "gix-quote" version = "0.4.12" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "thiserror", ] @@ -3310,19 +3371,20 @@ dependencies = [ [[package]] name = "gix-ref" version = "0.45.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-actor 0.31.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-lock 14.0.0 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-tempfile 14.0.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-utils 0.1.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "memmap2", + "serde", "thiserror", "winnow 0.6.16", ] @@ -3330,12 +3392,12 @@ dependencies = [ [[package]] name = "gix-refspec" version = "0.23.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-revision", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "smallvec", "thiserror", ] @@ -3343,13 +3405,14 @@ dependencies = [ [[package]] name = "gix-revision" version = "0.27.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-date 0.9.0", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "serde", "thiserror", ] @@ -3371,13 +3434,13 @@ dependencies = [ [[package]] name = "gix-revwalk" version = "0.13.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-date 0.9.0", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "smallvec", "thiserror", ] @@ -3397,22 +3460,23 @@ dependencies = [ [[package]] name = "gix-sec" version = "0.10.7" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "libc", + "serde", "windows-sys 0.52.0", ] [[package]] name = "gix-submodule" version = "0.12.0" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "gix-config", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-pathspec", "gix-refspec", "gix-url", @@ -3437,9 +3501,9 @@ dependencies = [ [[package]] name = "gix-tempfile" version = "14.0.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "libc", "once_cell", "parking_lot 0.12.3", @@ -3481,7 +3545,23 @@ checksum = "f924267408915fddcd558e3f37295cc7d6a3e50f8bd8b606cee0808c3915157e" [[package]] name = "gix-trace" version = "0.1.9" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" + +[[package]] +name = "gix-transport" +version = "0.42.2" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" +dependencies = [ + "bstr", + "gix-command", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-packetline", + "gix-quote 0.4.12 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-sec 0.10.7 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-url", + "serde", + "thiserror", +] [[package]] name = "gix-traverse" @@ -3503,15 +3583,15 @@ dependencies = [ [[package]] name = "gix-traverse" version = "0.39.2" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bitflags 2.6.0", - "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-commitgraph 0.24.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "gix-date 0.9.0", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hashtable 0.5.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-revwalk 0.13.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "smallvec", "thiserror", ] @@ -3519,12 +3599,13 @@ dependencies = [ [[package]] name = "gix-url" version = "0.27.4" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", "home", + "serde", "thiserror", "url", ] @@ -3542,7 +3623,7 @@ dependencies = [ [[package]] name = "gix-utils" version = "0.1.12" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "fastrand 2.1.0", @@ -3562,7 +3643,7 @@ dependencies = [ [[package]] name = "gix-validate" version = "0.8.5" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", "thiserror", @@ -3590,19 +3671,20 @@ dependencies = [ [[package]] name = "gix-worktree" version = "0.34.1" -source = "git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa#29898e3010bd3332418c683f2ac96aff5c8e72fa" +source = "git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a#7dff44754e0fdc369f92221468fb953bad9be60a" dependencies = [ "bstr", - "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", - "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=29898e3010bd3332418c683f2ac96aff5c8e72fa)", + "gix-attributes 0.22.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-features 0.38.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-fs 0.11.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-glob 0.16.4 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-hash 0.14.2 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-ignore 0.11.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-index 0.33.1 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-object 0.42.3 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-path 0.10.9 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "gix-validate 0.8.5 (git+https://github.com/Byron/gitoxide?rev=7dff44754e0fdc369f92221468fb953bad9be60a)", + "serde", ] [[package]] @@ -4497,6 +4579,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3066350882a1cd6d950d055997f379ac37fd39f81cd4d8ed186032eb3c5747" dependencies = [ + "serde", "static_assertions", ] @@ -4687,6 +4770,17 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" +[[package]] +name = "maybe-async" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cf92c10c7e361d6b99666ec1c6f9805b0bea2c3bd8c78dc6fe98ac5bd78db11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] + [[package]] name = "md5" version = "0.7.0" @@ -6678,6 +6772,9 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" diff --git a/Cargo.toml b/Cargo.toml index a133d4dea..248bf4639 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,8 +33,9 @@ members = [ resolver = "2" [workspace.dependencies] +bstr = { version = "1.10.0", features = ["serde"] } # Add the `tracing` or `tracing-detail` features to see more of gitoxide in the logs. Useful to see which programs it invokes. -gix = { git = "https://github.com/Byron/gitoxide", rev = "29898e3010bd3332418c683f2ac96aff5c8e72fa", default-features = false, features = [] } +gix = { git = "https://github.com/Byron/gitoxide", rev = "7dff44754e0fdc369f92221468fb953bad9be60a", default-features = false, features = ["serde"] } git2 = { version = "0.18.3", features = [ "vendored-openssl", "vendored-libgit2", diff --git a/crates/gitbutler-branch-actions/Cargo.toml b/crates/gitbutler-branch-actions/Cargo.toml index 7226a900a..193ba8441 100644 --- a/crates/gitbutler-branch-actions/Cargo.toml +++ b/crates/gitbutler-branch-actions/Cargo.toml @@ -26,7 +26,7 @@ gitbutler-fs.workspace = true gitbutler-diff.workspace = true gitbutler-operating-modes.workspace = true serde = { workspace = true, features = ["std"] } -bstr = "1.10.0" +bstr.workspace = true diffy = "0.4.0" hex = "0.4.3" regex = "1.10" diff --git a/crates/gitbutler-branch-actions/src/base.rs b/crates/gitbutler-branch-actions/src/base.rs index 2e94bf058..7b3656fd3 100644 --- a/crates/gitbutler-branch-actions/src/base.rs +++ b/crates/gitbutler-branch-actions/src/base.rs @@ -31,9 +31,9 @@ pub struct BaseBranch { pub remote_url: String, pub push_remote_name: Option, pub push_remote_url: String, - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub base_sha: git2::Oid, - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub current_sha: git2::Oid, pub behind: usize, pub upstream_commits: Vec, diff --git a/crates/gitbutler-branch-actions/src/branch.rs b/crates/gitbutler-branch-actions/src/branch.rs index c2fb8f094..fe038a3ce 100644 --- a/crates/gitbutler-branch-actions/src/branch.rs +++ b/crates/gitbutler-branch-actions/src/branch.rs @@ -2,7 +2,9 @@ use crate::VirtualBranchesExt; use anyhow::{Context, Result}; use bstr::{BStr, BString, ByteSlice}; use core::fmt; -use gitbutler_branch::{Branch as GitButlerBranch, BranchId, ReferenceExtGix, Target}; +use gitbutler_branch::{ + Branch as GitButlerBranch, BranchId, BranchIdentity, ReferenceExtGix, Target, +}; use gitbutler_command_context::CommandContext; use gitbutler_reference::normalize_branch_name; use gix::prelude::ObjectIdExt; @@ -33,9 +35,12 @@ pub fn list_branches( for reference in platform.all()?.filter_map(Result::ok) { // Loosely match on branch names if let Some(branch_names) = &filter_branch_names { - let has_matching_name = branch_names - .iter() - .any(|branch_name| reference.name().as_bstr().ends_with_str(&branch_name.0)); + let has_matching_name = branch_names.iter().any(|branch_name| { + reference + .name() + .as_bstr() + .ends_with_str(branch_name.as_bstr()) + }); if !has_matching_name { continue; @@ -189,9 +194,13 @@ fn branch_group_to_branch( }; if virtual_branch.is_none() - && local_branches - .iter() - .any(|b| b.name().given_name(remotes).as_deref().ok() == Some(target.branch.branch())) + && local_branches.iter().any(|b| { + b.name() + .identity(remotes) + .as_deref() + .ok() + .map_or(false, |identity| identity == target.branch.branch()) + }) { return Ok(None); } @@ -203,11 +212,10 @@ fn branch_group_to_branch( in_workspace: branch.in_workspace, }); - // TODO(ST): keep the type alive, don't reduce to BString - let mut remotes: Vec = Vec::new(); + let mut remotes: Vec> = Vec::new(); for branch in remote_branches.iter() { if let Some(remote_name) = branch.remote_name(gix::remote::Direction::Fetch) { - remotes.push(remote_name.as_bstr().into()); + remotes.push(remote_name.to_owned()); } } @@ -293,7 +301,7 @@ impl GroupBranch<'_> { fn identity(&self, remotes: &BTreeSet>) -> Option { match self { GroupBranch::Local(branch) | GroupBranch::Remote(branch) => { - branch.name().given_name(remotes).ok() + branch.name().identity(remotes).ok() } // The identity of a Virtual branch is derived from the source refname, upstream or the branch given name, in that order GroupBranch::Virtual(branch) => { @@ -302,10 +310,10 @@ impl GroupBranch<'_> { let rich_name = branch.name.clone(); let rich_name = normalize_branch_name(&rich_name).ok()?; let identity = name_from_source.unwrap_or(name_from_upstream.unwrap_or(&rich_name)); - Some(identity.to_string()) + Some(identity.into()) } } - .map(BranchIdentity) + .map(BranchIdentity::from) } } @@ -313,14 +321,13 @@ impl GroupBranch<'_> { /// This excludes the target branch as well as gitbutler specific branches. fn should_list_git_branch(identity: &BranchIdentity) -> bool { // Exclude gitbutler technical branches (not useful for the user) - let is_technical = [ - "gitbutler/integration", - "gitbutler/target", - "gitbutler/oplog", - "HEAD", - ] - .contains(&&*identity.0); - !is_technical + const TECHNICAL_IDENTITIES: &[&[u8]] = &[ + b"gitbutler/integration", + b"gitbutler/target", + b"gitbutler/oplog", + b"HEAD", + ]; + !TECHNICAL_IDENTITIES.contains(&identity.as_bytes()) } /// A filter that can be applied to the branch listing @@ -347,8 +354,8 @@ pub struct BranchListing { pub name: BranchIdentity, /// This is a list of remotes that this branch can be found on (e.g. `origin`, `upstream` etc.), /// by collecting remotes from all local branches with the same identity that have a tracking setup. - #[serde(serialize_with = "gitbutler_serde::serde::as_string_lossy_vec")] - pub remotes: Vec, + #[serde(serialize_with = "gitbutler_serde::as_string_lossy_vec_remote_name")] + pub remotes: Vec>, /// The branch may or may not have a virtual branch associated with it. pub virtual_branch: Option, /// Timestamp in milliseconds since the branch was last updated. @@ -370,43 +377,16 @@ pub struct BranchListing { /// Represents a "commit author" or "signature", based on the data from the git history #[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash)] pub struct Author { - // TODO(ST): use `BString` here to not degenerate information /// The name of the author as configured in the git config - pub name: Option, + pub name: Option, /// The email of the author as configured in the git config - pub email: Option, -} - -/// The identity of a branch as to allow to group similar branches together. -/// -/// * For *local* branches, it is what's left without the standard prefix, like `refs/heads`, e.g. `main` -/// for `refs/heads/main` or `feat/one` for `refs/heads/feat/one`. -/// * For *remote* branches, it is what's without the prefix and remote name, like `main` for `refs/remotes/origin/main`. -/// or `feat/one` for `refs/remotes/my/special/remote/feat/one`. -/// * For virtual branches, it's either the above if there is a `source_refname` or an `upstream`, or it's the normalized -/// name of the virtual branch. -#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash, Ord, PartialOrd)] -pub struct BranchIdentity(String); - -/// Facilitate obtaining this type from the UI - otherwise it would be better not to have it as it should be -/// a particular thing, not any string. -impl From for BranchIdentity { - fn from(value: String) -> Self { - BranchIdentity(value) - } -} - -/// Also not for testing. -impl From<&str> for BranchIdentity { - fn from(value: &str) -> Self { - BranchIdentity(value.into()) - } + pub email: Option, } impl From> for Author { fn from(value: git2::Signature) -> Self { - let name = value.name().map(str::to_string); - let email = value.email().map(str::to_string); + let name = value.name().map(str::to_string).map(Into::into); + let email = value.email().map(str::to_string).map(Into::into); Author { name, email } } } @@ -414,8 +394,8 @@ impl From> for Author { impl From> for Author { fn from(value: gix::actor::SignatureRef<'_>) -> Self { Author { - name: Some(value.name.to_string()), - email: Some(value.email.to_string()), + name: Some(value.name.to_owned()), + email: Some(value.email.to_owned()), } } } @@ -436,9 +416,13 @@ pub struct VirtualBranchReference { /// a list of enriched branch data in the form of `BranchData`. pub fn get_branch_listing_details( ctx: &CommandContext, - branch_names: impl IntoIterator>, + branch_names: impl IntoIterator>, ) -> Result> { - let branch_names: Vec<_> = branch_names.into_iter().map(Into::into).collect(); + let branch_names: Vec<_> = branch_names + .into_iter() + .map(TryInto::try_into) + .filter_map(Result::ok) + .collect(); let repo = ctx.repository(); let branches = list_branches(ctx, None, Some(branch_names.clone()))?; let default_target = ctx @@ -536,10 +520,10 @@ pub struct BranchEntry { /// The name of the branch (e.g. `main`, `feature/branch`) pub name: String, /// The head commit of the branch - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] head: git2::Oid, /// The commit base of the branch - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] base: git2::Oid, /// The list of commits associated with the branch pub commits: Vec, @@ -568,18 +552,17 @@ pub struct RemoteBranchEntry { #[serde(rename_all = "camelCase")] pub struct CommitEntry { /// The commit sha that it can be referenced by - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub id: git2::Oid, /// If the commit is referencing a specific change, this is its change id pub change_id: Option, /// The commit message - #[serde(serialize_with = "gitbutler_serde::serde::as_string_lossy")] pub description: BString, /// The timestamp of the commit in milliseconds pub created_at: u128, /// The author of the commit pub authors: Vec, /// The parent commits of the commit - #[serde(with = "gitbutler_serde::serde::oid_vec")] + #[serde(with = "gitbutler_serde::oid_vec")] pub parent_ids: Vec, } diff --git a/crates/gitbutler-branch-actions/src/commit.rs b/crates/gitbutler-branch-actions/src/commit.rs index ae8a3a791..4a629c010 100644 --- a/crates/gitbutler-branch-actions/src/commit.rs +++ b/crates/gitbutler-branch-actions/src/commit.rs @@ -21,16 +21,15 @@ use crate::{ #[derive(Debug, PartialEq, Clone, Serialize)] #[serde(rename_all = "camelCase")] pub struct VirtualBranchCommit { - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub id: git2::Oid, - #[serde(serialize_with = "gitbutler_serde::serde::as_string_lossy")] pub description: BString, pub created_at: u128, pub author: Author, pub is_remote: bool, pub files: Vec, pub is_integrated: bool, - #[serde(with = "gitbutler_serde::serde::oid_vec")] + #[serde(with = "gitbutler_serde::oid_vec")] pub parent_ids: Vec, pub branch_id: BranchId, pub change_id: Option, diff --git a/crates/gitbutler-branch-actions/src/hunk.rs b/crates/gitbutler-branch-actions/src/hunk.rs index cf10ad4b3..fc758b9b1 100644 --- a/crates/gitbutler-branch-actions/src/hunk.rs +++ b/crates/gitbutler-branch-actions/src/hunk.rs @@ -24,7 +24,6 @@ use serde::Serialize; #[serde(rename_all = "camelCase")] pub struct VirtualBranchHunk { pub id: String, - #[serde(serialize_with = "gitbutler_serde::serde::as_string_lossy")] pub diff: BString, pub modified_at: u128, pub file_path: PathBuf, @@ -50,7 +49,7 @@ pub struct VirtualBranchHunk { #[serde(rename_all = "camelCase")] pub struct HunkLock { pub branch_id: BranchId, - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub commit_id: git2::Oid, } diff --git a/crates/gitbutler-branch-actions/src/lib.rs b/crates/gitbutler-branch-actions/src/lib.rs index ff65038f9..8ffae0891 100644 --- a/crates/gitbutler-branch-actions/src/lib.rs +++ b/crates/gitbutler-branch-actions/src/lib.rs @@ -41,6 +41,6 @@ mod commit; mod hunk; pub use branch::{ - get_branch_listing_details, list_branches, Author, BranchIdentity, BranchListing, - BranchListingDetails, BranchListingFilter, + get_branch_listing_details, list_branches, Author, BranchListing, BranchListingDetails, + BranchListingFilter, }; diff --git a/crates/gitbutler-branch-actions/src/remote.rs b/crates/gitbutler-branch-actions/src/remote.rs index bd354bb29..c32b5a9fb 100644 --- a/crates/gitbutler-branch-actions/src/remote.rs +++ b/crates/gitbutler-branch-actions/src/remote.rs @@ -23,7 +23,7 @@ use crate::author::Author; #[derive(Debug, Clone, Serialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct RemoteBranch { - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub sha: git2::Oid, pub name: Refname, pub upstream: Option, @@ -36,13 +36,13 @@ pub struct RemoteBranch { #[derive(Debug, Clone, Serialize, PartialEq)] #[serde(rename_all = "camelCase")] pub struct RemoteBranchData { - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub sha: git2::Oid, pub name: Refname, pub upstream: Option, pub behind: u32, pub commits: Vec, - #[serde(with = "gitbutler_serde::serde::oid_opt", default)] + #[serde(with = "gitbutler_serde::oid_opt", default)] pub fork_point: Option, } @@ -50,12 +50,11 @@ pub struct RemoteBranchData { #[serde(rename_all = "camelCase")] pub struct RemoteCommit { pub id: String, - #[serde(serialize_with = "gitbutler_serde::serde::as_string_lossy")] pub description: BString, pub created_at: u128, pub author: Author, pub change_id: Option, - #[serde(with = "gitbutler_serde::serde::oid_vec")] + #[serde(with = "gitbutler_serde::oid_vec")] pub parent_ids: Vec, } diff --git a/crates/gitbutler-branch-actions/src/virtual.rs b/crates/gitbutler-branch-actions/src/virtual.rs index aa2b182ed..7334e4e5a 100644 --- a/crates/gitbutler-branch-actions/src/virtual.rs +++ b/crates/gitbutler-branch-actions/src/virtual.rs @@ -68,13 +68,13 @@ pub struct VirtualBranch { pub updated_at: u128, pub selected_for_changes: bool, pub allow_rebasing: bool, - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub head: git2::Oid, /// The merge base between the target branch and the virtual branch - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub merge_base: git2::Oid, /// The fork point between the target branch and the virtual branch - #[serde(with = "gitbutler_serde::serde::oid_opt", default)] + #[serde(with = "gitbutler_serde::oid_opt", default)] pub fork_point: Option, } diff --git a/crates/gitbutler-branch-actions/tests/virtual_branches/list.rs b/crates/gitbutler-branch-actions/tests/virtual_branches/list.rs index 83e0321e5..809032959 100644 --- a/crates/gitbutler-branch-actions/tests/virtual_branches/list.rs +++ b/crates/gitbutler-branch-actions/tests/virtual_branches/list.rs @@ -137,8 +137,8 @@ fn one_branch_on_integration_multiple_remotes() -> Result<()> { mod util { use anyhow::Result; - use bstr::BString; - use gitbutler_branch_actions::{BranchIdentity, BranchListing, BranchListingFilter}; + use gitbutler_branch::BranchIdentity; + use gitbutler_branch_actions::{BranchListing, BranchListingFilter}; use gitbutler_command_context::CommandContext; /// A flattened and simplified mirror of `BranchListing` for comparing the actual and expected data. @@ -154,7 +154,7 @@ mod util { impl Default for ExpectedBranchListing<'static> { fn default() -> Self { ExpectedBranchListing { - identity: ">(), "remotes: {msg}" ); diff --git a/crates/gitbutler-branch/Cargo.toml b/crates/gitbutler-branch/Cargo.toml index dcb22737d..8a76f02cd 100644 --- a/crates/gitbutler-branch/Cargo.toml +++ b/crates/gitbutler-branch/Cargo.toml @@ -8,7 +8,7 @@ publish = false [dependencies] anyhow = "1.0.86" git2.workspace = true -gix.workspace = true +gix = { workspace = true, features = ["serde"] } gitbutler-reference.workspace = true gitbutler-serde.workspace = true gitbutler-id.workspace = true @@ -18,7 +18,7 @@ gitbutler-diff.workspace = true itertools = "0.13" toml = "0.8.15" serde = { workspace = true, features = ["std"] } -bstr = "1.10.0" +bstr.workspace = true md5 = "0.7.0" hex = "0.4.3" tracing = "0.1.40" diff --git a/crates/gitbutler-branch/src/branch.rs b/crates/gitbutler-branch/src/branch.rs index 548ba1a1e..0e89850da 100644 --- a/crates/gitbutler-branch/src/branch.rs +++ b/crates/gitbutler-branch/src/branch.rs @@ -1,7 +1,9 @@ use anyhow::Result; +use bstr::BStr; use gitbutler_id::id::Id; use gitbutler_reference::{normalize_branch_name, Refname, RemoteRefname, VirtualRefname}; use serde::{Deserialize, Serialize}; +use std::ops::Deref; use crate::ownership::BranchOwnershipClaims; @@ -24,7 +26,7 @@ pub struct Branch { /// The local tracking branch, holding the state of the remote. pub upstream: Option, // upstream_head is the last commit on we've pushed to the upstream branch - #[serde(with = "gitbutler_serde::serde::oid_opt", default)] + #[serde(with = "gitbutler_serde::oid_opt", default)] pub upstream_head: Option, #[serde( serialize_with = "serialize_u128", @@ -37,10 +39,10 @@ pub struct Branch { )] pub updated_timestamp_ms: u128, /// tree is the last git tree written to a session, or merge base tree if this is new. use this for delta calculation from the session data - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub tree: git2::Oid, /// head is id of the last "virtual" commit in this branch - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub head: git2::Oid, pub ownership: BranchOwnershipClaims, // order is the number by which UI should sort branches @@ -135,3 +137,52 @@ pub struct BranchCreateRequest { pub order: Option, pub selected_for_changes: Option, } + +/// The identity of a branch as to allow to group similar branches together. +/// +/// * For *local* branches, it is what's left without the standard prefix, like `refs/heads`, e.g. `main` +/// for `refs/heads/main` or `feat/one` for `refs/heads/feat/one`. +/// * For *remote* branches, it is what's without the prefix and remote name, like `main` for `refs/remotes/origin/main`. +/// or `feat/one` for `refs/remotes/my/special/remote/feat/one`. +/// * For virtual branches, it's either the above if there is a `source_refname` or an `upstream`, or it's the normalized +/// name of the virtual branch. +#[derive(Debug, Clone, Serialize, PartialEq, Eq, Hash, Ord, PartialOrd)] +pub struct BranchIdentity( + /// The identity is always a valid reference name, full or partial. + pub gix::refs::PartialName, +); + +impl Deref for BranchIdentity { + type Target = BStr; + + fn deref(&self) -> &Self::Target { + self.0.as_ref().as_bstr() + } +} + +/// Facilitate obtaining this type from the UI. +impl TryFrom for BranchIdentity { + type Error = gix::refs::name::Error; + + fn try_from(value: String) -> std::result::Result { + gix::refs::PartialName::try_from(value).map(BranchIdentity) + } +} + +/// Used in testing, and **panics** if the value isn't a valid partial ref name +impl From<&str> for BranchIdentity { + fn from(value: &str) -> Self { + gix::refs::PartialName::try_from(value) + .map(BranchIdentity) + .expect("BUG: value must be valid ref name") + } +} + +/// Used in for short-name conversions +impl TryFrom<&BStr> for BranchIdentity { + type Error = gix::refs::name::Error; + + fn try_from(value: &BStr) -> std::result::Result { + gix::refs::PartialName::try_from(value.to_owned()).map(BranchIdentity) + } +} diff --git a/crates/gitbutler-branch/src/lib.rs b/crates/gitbutler-branch/src/lib.rs index 04cf5a144..773036604 100644 --- a/crates/gitbutler-branch/src/lib.rs +++ b/crates/gitbutler-branch/src/lib.rs @@ -1,7 +1,7 @@ mod branch; use anyhow::Context; -pub use branch::{Branch, BranchCreateRequest, BranchId, BranchUpdateRequest}; +pub use branch::{Branch, BranchCreateRequest, BranchId, BranchIdentity, BranchUpdateRequest}; use bstr::ByteSlice; mod branch_ext; pub use branch_ext::BranchExt; diff --git a/crates/gitbutler-branch/src/reference_ext.rs b/crates/gitbutler-branch/src/reference_ext.rs index f7e693cf1..83d8e6a38 100644 --- a/crates/gitbutler-branch/src/reference_ext.rs +++ b/crates/gitbutler-branch/src/reference_ext.rs @@ -1,3 +1,4 @@ +use crate::BranchIdentity; use anyhow::{Context, Result}; use bstr::{BStr, ByteSlice}; use gix::refs::Category; @@ -19,15 +20,15 @@ pub trait ReferenceExt { // TODO(ST): replace the original with this one. pub trait ReferenceExtGix { - /// Fetches a branches name without the remote name attached + /// Produces a name by removing all prefixes, leaving only its actual name. All known + /// `remotes` are needed to be able to strip remote names. /// - /// refs/heads/my-branch -> my-branch - /// refs/remotes/origin/my-branch -> my-branch - /// refs/remotes/Byron/gitbutler/my-branch -> my-branch (where the remote is Byron/gitbutler) + /// Here are some examples: /// - /// An ideal implementation wouldn't require us to list all the references, - /// but there doesn't seem to be a libgit2 solution to this. - fn given_name(&self, remotes: &BTreeSet>) -> Result; + /// `refs/heads/my-branch` -> `my-branch` + /// `refs/remotes/origin/my-branch` -> `my-branch` + /// `refs/remotes/Byron/gitbutler/my-branch` -> `my-branch` (where the remote is `Byron/gitbutler`) + fn identity(&self, remotes: &BTreeSet>) -> Result; } impl<'repo> ReferenceExt for git2::Reference<'repo> { @@ -65,13 +66,12 @@ impl<'repo> ReferenceExt for git2::Reference<'repo> { } impl ReferenceExtGix for &gix::refs::FullNameRef { - // TODO: make this `identity()`, and use `BranchIdentity` type. - fn given_name(&self, remotes: &BTreeSet>) -> Result { + fn identity(&self, remotes: &BTreeSet>) -> Result { let (category, shorthand_name) = self .category_and_short_name() .context("Branch could not be categorized")?; if !matches!(category, Category::RemoteBranch) { - return Ok(shorthand_name.to_string()); + return Ok(shorthand_name.try_into()?); } let longest_remote = remotes @@ -91,7 +91,6 @@ impl ReferenceExtGix for &gix::refs::FullNameRef { ))? .into(); - // TODO(correctness): this should be `BString`, but can't change it yet. - Ok(shorthand_name.to_string()) + Ok(shorthand_name.try_into()?) } } diff --git a/crates/gitbutler-commit/Cargo.toml b/crates/gitbutler-commit/Cargo.toml index 83636bb8b..fb1de5b99 100644 --- a/crates/gitbutler-commit/Cargo.toml +++ b/crates/gitbutler-commit/Cargo.toml @@ -7,5 +7,5 @@ publish = false [dependencies] git2.workspace = true -bstr = "1.10.0" +bstr.workspace = true uuid.workspace = true diff --git a/crates/gitbutler-diff/Cargo.toml b/crates/gitbutler-diff/Cargo.toml index 8293e1b40..353633341 100644 --- a/crates/gitbutler-diff/Cargo.toml +++ b/crates/gitbutler-diff/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] git2.workspace = true -bstr = "1.10.0" +bstr.workspace = true md5 = "0.7.0" anyhow = "1.0.86" hex = "0.4.3" diff --git a/crates/gitbutler-diff/src/diff.rs b/crates/gitbutler-diff/src/diff.rs index feb45a6b8..b6552925c 100644 --- a/crates/gitbutler-diff/src/diff.rs +++ b/crates/gitbutler-diff/src/diff.rs @@ -49,10 +49,7 @@ pub struct GitHunk { pub new_start: u32, pub new_lines: u32, /// The `+`, `-` or ` ` prefixed lines of the diff produced by `git2`, along with their line separator. - #[serde( - rename = "diff", - serialize_with = "gitbutler_serde::serde::as_string_lossy" - )] + #[serde(rename = "diff")] pub diff_lines: BString, pub binary: bool, pub change_type: ChangeType, diff --git a/crates/gitbutler-fs/Cargo.toml b/crates/gitbutler-fs/Cargo.toml index 7a7376a1a..3ce2f763f 100644 --- a/crates/gitbutler-fs/Cargo.toml +++ b/crates/gitbutler-fs/Cargo.toml @@ -7,7 +7,7 @@ publish = false [dependencies] serde = { workspace = true, features = ["std"]} -bstr = "1.10.0" +bstr.workspace = true anyhow = "1.0.86" gix = { workspace = true, features = ["dirwalk", "credentials", "parallel"] } walkdir = "2.5.0" diff --git a/crates/gitbutler-oplog/src/entry.rs b/crates/gitbutler-oplog/src/entry.rs index fd9df371f..5456c663b 100644 --- a/crates/gitbutler-oplog/src/entry.rs +++ b/crates/gitbutler-oplog/src/entry.rs @@ -16,10 +16,10 @@ use strum::EnumString; #[serde(rename_all = "camelCase")] pub struct Snapshot { /// The id of the commit that represents the snapshot - #[serde(rename = "id", with = "gitbutler_serde::serde::oid")] + #[serde(rename = "id", with = "gitbutler_serde::oid")] pub commit_id: git2::Oid, /// Snapshot creation time in seconds from Unix epoch seconds, based on a commit as `commit_id`. - #[serde(serialize_with = "gitbutler_serde::serde::as_time_seconds_from_unix_epoch")] + #[serde(serialize_with = "gitbutler_serde::as_time_seconds_from_unix_epoch")] pub created_at: git2::Time, /// The number of working directory lines added in the snapshot pub lines_added: usize, diff --git a/crates/gitbutler-oplog/src/state.rs b/crates/gitbutler-oplog/src/state.rs index 9ff06cb40..f648af241 100644 --- a/crates/gitbutler-oplog/src/state.rs +++ b/crates/gitbutler-oplog/src/state.rs @@ -26,7 +26,7 @@ fn unix_epoch() -> SystemTime { #[derive(Serialize, Deserialize, Debug)] pub struct Oplog { /// This is the sha of the last oplog commit - #[serde(with = "gitbutler_serde::serde::oid_opt", default)] + #[serde(with = "gitbutler_serde::oid_opt", default)] pub head_sha: Option, /// The time when the last snapshot was created. Seconds since Epoch #[serde( diff --git a/crates/gitbutler-project/src/project.rs b/crates/gitbutler-project/src/project.rs index dfa7e58a8..485a91e0e 100644 --- a/crates/gitbutler-project/src/project.rs +++ b/crates/gitbutler-project/src/project.rs @@ -61,7 +61,7 @@ impl FetchResult { #[derive(Debug, Deserialize, Serialize, Copy, Clone)] pub struct CodePushState { - #[serde(with = "gitbutler_serde::serde::oid")] + #[serde(with = "gitbutler_serde::oid")] pub id: git2::Oid, pub timestamp: time::SystemTime, } diff --git a/crates/gitbutler-reference/src/refname/remote.rs b/crates/gitbutler-reference/src/refname/remote.rs index 1197619d9..1f119b85f 100644 --- a/crates/gitbutler-reference/src/refname/remote.rs +++ b/crates/gitbutler-reference/src/refname/remote.rs @@ -6,9 +6,11 @@ use super::error::Error; #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub struct Refname { - // contains name of the remote, e.x. "origin" or "upstream" + /// contains name of the remote, e.x. "origin" or "upstream" remote: String, - // contains name of the branch, e.x. "master" or "main" + /// contains name of the branch, e.x. "master" or "main" + // TODO(ST): use `BString` for this, or maybe figure out if there could + // be better abstractions for `Refname`, or a better name for the type. branch: String, } diff --git a/crates/gitbutler-repo/Cargo.toml b/crates/gitbutler-repo/Cargo.toml index e819f141f..73397bb0a 100644 --- a/crates/gitbutler-repo/Cargo.toml +++ b/crates/gitbutler-repo/Cargo.toml @@ -9,7 +9,7 @@ publish = false git2.workspace = true gix.workspace = true anyhow = "1.0.86" -bstr = "1.10.0" +bstr.workspace = true tokio = { workspace = true, features = [ "rt-multi-thread", "rt", "macros", "sync" ] } gitbutler-git.workspace = true tracing = "0.1.40" diff --git a/crates/gitbutler-serde/Cargo.toml b/crates/gitbutler-serde/Cargo.toml index f9a8f9164..e2df75ace 100644 --- a/crates/gitbutler-serde/Cargo.toml +++ b/crates/gitbutler-serde/Cargo.toml @@ -7,5 +7,6 @@ publish = false [dependencies] git2.workspace = true +gix.workspace = true serde = { workspace = true, features = ["std"]} -bstr = "1.10.0" +bstr.workspace = true diff --git a/crates/gitbutler-serde/src/lib.rs b/crates/gitbutler-serde/src/lib.rs index 82b2d0949..c5e2dbd21 100644 --- a/crates/gitbutler-serde/src/lib.rs +++ b/crates/gitbutler-serde/src/lib.rs @@ -1 +1,89 @@ -pub mod serde; +use serde::Serialize; + +pub fn as_string_lossy_vec_remote_name( + v: &[gix::remote::Name<'static>], + s: S, +) -> Result +where + S: serde::Serializer, +{ + let vec: Vec = v.iter().map(|v| v.as_bstr().to_string()).collect(); + vec.serialize(s) +} + +pub fn as_time_seconds_from_unix_epoch(v: &git2::Time, s: S) -> Result +where + S: serde::Serializer, +{ + v.seconds().serialize(s) +} + +pub mod oid_opt { + use serde::{Deserialize, Deserializer, Serialize}; + + pub fn serialize(v: &Option, s: S) -> Result + where + S: serde::Serializer, + { + v.as_ref().map(|v| v.to_string()).serialize(s) + } + + pub fn deserialize<'de, D>(d: D) -> Result, D::Error> + where + D: Deserializer<'de>, + { + let hex = as Deserialize>::deserialize(d)?; + hex.map(|v| { + v.parse() + .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) + }) + .transpose() + } +} + +pub mod oid_vec { + use serde::{Deserialize, Deserializer, Serialize}; + + pub fn serialize(v: &[git2::Oid], s: S) -> Result + where + S: serde::Serializer, + { + let vec: Vec = v.iter().map(|v| v.to_string()).collect(); + vec.serialize(s) + } + + pub fn deserialize<'de, D>(d: D) -> Result, D::Error> + where + D: Deserializer<'de>, + { + let hex = as Deserialize>::deserialize(d)?; + let hex: Result, D::Error> = hex + .into_iter() + .map(|v| { + git2::Oid::from_str(v.as_str()) + .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) + }) + .collect(); + hex + } +} + +pub mod oid { + use serde::{Deserialize, Deserializer, Serialize}; + + pub fn serialize(v: &git2::Oid, s: S) -> Result + where + S: serde::Serializer, + { + v.to_string().serialize(s) + } + + pub fn deserialize<'de, D>(d: D) -> Result + where + D: Deserializer<'de>, + { + let hex = String::deserialize(d)?; + hex.parse() + .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) + } +} diff --git a/crates/gitbutler-serde/src/serde.rs b/crates/gitbutler-serde/src/serde.rs deleted file mode 100644 index ba0d467f9..000000000 --- a/crates/gitbutler-serde/src/serde.rs +++ /dev/null @@ -1,94 +0,0 @@ -use bstr::{BString, ByteSlice}; -use serde::Serialize; - -pub fn as_string_lossy(v: &BString, s: S) -> Result -where - S: serde::Serializer, -{ - v.to_str_lossy().serialize(s) -} - -pub fn as_string_lossy_vec(v: &[BString], s: S) -> Result -where - S: serde::Serializer, -{ - let vec: Vec = v.iter().map(|v| v.to_string()).collect(); - vec.serialize(s) -} - -pub fn as_time_seconds_from_unix_epoch(v: &git2::Time, s: S) -> Result -where - S: serde::Serializer, -{ - v.seconds().serialize(s) -} - -pub mod oid_opt { - use serde::{Deserialize, Deserializer, Serialize}; - - pub fn serialize(v: &Option, s: S) -> Result - where - S: serde::Serializer, - { - v.as_ref().map(|v| v.to_string()).serialize(s) - } - - pub fn deserialize<'de, D>(d: D) -> Result, D::Error> - where - D: Deserializer<'de>, - { - let hex = as Deserialize>::deserialize(d)?; - hex.map(|v| { - v.parse() - .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) - }) - .transpose() - } -} - -pub mod oid_vec { - use serde::{Deserialize, Deserializer, Serialize}; - - pub fn serialize(v: &[git2::Oid], s: S) -> Result - where - S: serde::Serializer, - { - let vec: Vec = v.iter().map(|v| v.to_string()).collect(); - vec.serialize(s) - } - - pub fn deserialize<'de, D>(d: D) -> Result, D::Error> - where - D: Deserializer<'de>, - { - let hex = as Deserialize>::deserialize(d)?; - let hex: Result, D::Error> = hex - .into_iter() - .map(|v| { - git2::Oid::from_str(v.as_str()) - .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) - }) - .collect(); - hex - } -} - -pub mod oid { - use serde::{Deserialize, Deserializer, Serialize}; - - pub fn serialize(v: &git2::Oid, s: S) -> Result - where - S: serde::Serializer, - { - v.to_string().serialize(s) - } - - pub fn deserialize<'de, D>(d: D) -> Result - where - D: Deserializer<'de>, - { - let hex = String::deserialize(d)?; - hex.parse() - .map_err(|err: git2::Error| serde::de::Error::custom(err.to_string())) - } -} diff --git a/crates/gitbutler-url/Cargo.toml b/crates/gitbutler-url/Cargo.toml index 1a6ccb2f7..ace8ff621 100644 --- a/crates/gitbutler-url/Cargo.toml +++ b/crates/gitbutler-url/Cargo.toml @@ -8,4 +8,4 @@ publish = false [dependencies] url = { version = "2.5.2", features = ["serde"] } thiserror.workspace = true -bstr = "1.10.0" +bstr.workspace = true