chore(deps): bump gix to 0.83.0 and fix 8 security advisories#1388
Conversation
- Bump gix from 0.81.0 to 0.82.0 in weaver_common and xtask
- Work around gix 0.82.0 regression where shallow clone + tag refspec
fails (gix assumes ref is a branch, breaking tags)
- Update aws-lc-sys 0.37.0 -> 0.40.0 (fixes RUSTSEC-2026-{0044..0048})
- Update rustls-webpki 0.103.9 -> 0.103.13 (fixes RUSTSEC-2026-0104)
- Update quinn-proto 0.11.13 -> 0.11.14 (fixes RUSTSEC-2026-0037)
- Update time 0.3.46 -> 0.3.47 (fixes RUSTSEC-2026-0009)
There was a problem hiding this comment.
Pull request overview
Updates Git-related dependencies and lockfile to address reported RustSec advisories, and adjusts weaver_common’s Git clone behavior to work around a gix 0.82.0 shallow-clone regression when a refspec may be a tag.
Changes:
- Bump
gixto0.82.0inweaver_commonandxtask. - Update
Cargo.lockto pick up patched transitive dependencies (security advisories). - Modify Git clone flow to skip shallow clone when a refspec is provided.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| crates/xtask/Cargo.toml | Bumps gix to 0.82.0 for xtask tooling. |
| crates/weaver_common/Cargo.toml | Bumps gix to 0.82.0 for core library usage. |
| crates/weaver_common/src/vdir.rs | Workaround: avoid shallow clone when a refspec is provided to prevent tag-related failures. |
| Cargo.lock | Updates resolved dependency graph to incorporate patched versions addressing advisories. |
Comments suppressed due to low confidence (1)
crates/weaver_common/src/vdir.rs:444
- The variable name
prepareis used for thePrepareFetchbuilder and then re-used (shadowed) later inlet (mut prepare, _outcome) = fetch.fetch_then_checkout(...), which makes this flow harder to follow. Consider renaming one of them (e.g.,prepare_fetchfor the builder orcheckout/worktreefor the post-fetch value) to avoid shadowing and improve readability.
let prepare = PrepareFetch::new(
url,
tmp_path.clone(),
Kind::WithWorktree,
create::Options {
destination_must_be_empty: true,
fs_capabilities: None,
},
if is_git_credentials_enabled() {
open::Options::default()
} else {
open::Options::isolated()
},
)
.map_err(|e| GitError {
repo_url: url.to_owned(),
message: e.to_string(),
})?;
let mut fetch = if refspec.is_none() {
prepare.with_shallow(Shallow::DepthAtRemote(
NonZeroU32::new(1).expect("1 is not zero"),
))
} else {
prepare
}
.with_ref_name(refspec.as_ref())
.map_err(|e| GitError {
repo_url: url.to_owned(),
message: e.to_string(),
})?;
let (mut prepare, _outcome) = fetch
.fetch_then_checkout(progress::Discard, &AtomicBool::new(false))
.map_err(|e| GitError {
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Removes gix's dependency on winnow (replaced with hand-implemented parsers in gix 0.83.0), resolving multi-version winnow conflicts. The shallow clone + tag refspec workaround from the previous commit is still needed as this bug persists in 0.83.0.
Replace placeholder TODO with actual issue URL: GitoxideLabs/gitoxide#2554
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1388 +/- ##
=======================================
- Coverage 82.0% 82.0% -0.1%
=======================================
Files 118 118
Lines 9895 9897 +2
=======================================
- Hits 8120 8119 -1
- Misses 1775 1778 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| })?; | ||
|
|
||
| let mut fetch = if refspec.is_none() { | ||
| prepare.with_shallow(Shallow::DepthAtRemote( |
There was a problem hiding this comment.
Just a note - there is ZERO actual test coverage on this branch - which means we need to manually check git ref support.
Summary
gixfrom 0.81.0 to 0.83.0 inweaver_commonandxtaskwinnow(replaced with hand-implemented parsers in 0.83.0)Security Fixes
aws-lc-sysrustls-webpkiquinn-prototimeAll security updates are semver-compatible patch/minor bumps with no API changes — only
Cargo.lockis affected.gix 0.82.0+ Shallow Clone Workaround
gix 0.82.0 (via
gix-protocol0.60.0) introduced stricter refspec validation that causes shallow clone + tag refspec to fail. This bug persists in gix 0.83.0. The root cause is inclone/fetch/mod.rsline 119:When a tag name like
v1.26.0is passed as a refspec,Category::LocalBranchconverts it torefs/heads/v1.26.0, which doesn't matchrefs/tags/v1.26.0on the remote. The newis_missing_required_mapping()validation ingix-protocol0.60.0+ then rejects the fetch.Workaround: Skip shallow clone when a specific refspec is provided (since it may be a tag). Non-refspec clones still use shallow clone for performance.
This is the same bug causing CI failures on #1392 and #1393.
Upstream issue: GitoxideLabs/gitoxide#2544
Why 0.83.0 instead of 0.82.0
gix 0.83.0 removes gix's dependency on
winnow(replaced with hand-implemented parsers), which resolves multi-versionwinnowdependency conflicts that were blocking downstream projects like otel-arrow (see #1393).Testing
cargo buildpasses for all workspace cratescargo test --workspace --exclude weaverpasses with 0 failures (613+ tests)