chore(deps): update rust crate gix to 0.86 - #3753
Merged
Merged
Conversation
renovate
Bot
force-pushed
the
renovate/gix-0.x
branch
3 times, most recently
from
July 23, 2026 23:17
0421f8d to
d77b308
Compare
renovate
Bot
force-pushed
the
renovate/gix-0.x
branch
from
July 24, 2026 02:29
d77b308 to
0f18865
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.85→0.86Release Notes
GitoxideLabs/gitoxide (gix)
v0.86.0: gix v0.86.0Compare Source
New Features (BREAKING)
Changed (BREAKING)
replace
maybe-asyncwithbisync.Replace the globally feature-selected maybe-async dependency with bisync 0.3 and
re-export the locally selected macro mode from gix-protocol.
Also use it to deduplicate portions which previously couldn't be handled.
adapt to lifetime-free configuration files in
gix-configUpdate repository configuration storage, snapshots, overrides, and caches
to use the self-contained
gix_config::Filerepresentation. Configurationcan now move through repository initialization, cloning, and remote setup
without artificial input lifetimes or conversions to
'static.BString,PathBuf,OsString, andFullNamevaluesfrom configuration-derived lookups.
Option<Result<T, E>>toResult<Option<T>, E>, allowing errors to propagate naturally with?.AsBStrinconfiguration setters, converters, remote lookup, and remote saving.
Cowconstruction,into_owned(), and redundantcloning from configuration consumers.
enriching validation errors.
Adapt config-tree conversions for the new owned values and optional-result
shape, including booleans, integers, paths, URLs, refspecs, timeouts,
compression levels, and reference names.
Return owned remote names, default remote names, branch tracking
references, and submodule paths so these results are independent of the
repository configuration borrow. Protocol feature values likewise use
owned strings.
Update repository opening, initialization, cloning, remotes, filters,
status, submodules, and related tests to use the lifetime-free APIs.
Other
some/(a tree of only empty directories) now collapses to an emptydirectory and is skipped when empty directories aren't emitted, matching
Git which treats a tree with no files as clean. See #2490.
New Features
Repository::normalize_path()This way, one won't have to use the
Pattern + normalizeworkaround anymore.discover_opts()as sibling toopen_opts().This makes isolated discovery easier, at the cost of less control compared to itsgix::ThreadSafeRepository` counterpart.Understand and validate core.compression, core.looseCompression and pack.compression, including git's -1 mapping to the zlib default. Apply these settings when writing loose objects and receiving packs.
core.fscacheon WindowsConnection::configured_credentials_for_current_url().It extracts the URL from the input action, which is relevant in case
of redirects which changes the initial url.
Chore
let archived fixtures bypass Git version gates
Git-dependent fixture tests currently skip outright when the installed Git is
incompatible, even when a checked-in archive contains a known-good fixture that
could run safely. This also keeps 32-bit CI pinned to Debian 12 because Debian
13 ships affected Git 2.47.x.
Use the guarded scripted-fixture loaders for minimum-version worktree tests and
the shared rev-spec fixture, then return 32-bit CI to Debian stable.
Git
57fb139introduced reversed :/ traversal in 2.47.x; Git0ff919erestored youngest-first ordering in 2.48.0.
Bug Fixes
avoid treating symbolic remote names as URLs
--- agent
Configured remotes without an effective fetch URL exposed their symbolic name
as a local-path URL.
Only use a remote name as the missing fetch URL when remote-name classification,
a non-file transport, or native absolute-path detection identifies it as a URL.
Git baseline: remote.c:remotes_remote_get_1() adds the explicitly supplied name
as a URL when the remote has no configured URL; t/t5505-remote.sh covers remote
get-url behavior. This change intentionally diverges for symbolic names.
always treat submodule names as relative.
Previously it would assume they are relative, join them with
a base path, which could promptly be overridden by an absolute
submodule name, which is valid for Git as well.
Code handling submodule paths is now aware and won't accidentally
break out of the repository anymore.
honor credential.protectProtocol for helper exchanges
preserve multiple remote URLs
Configured remotes can have multiple remote..url or remote..pushUrl
values, but
gix::Remotekept only one value because lookup used the singularconfig accessor. That meant the most recent config value won, while Git exposes
every effective URL and uses the first one for the singular get-url form.
Add ordered URL storage to
gix::Remoteand exposeRemote::urls(Direction)forall effective URLs. Keep Remote::url(Direction) as the singular compatibility
API, now returning the first effective URL. Fetch URLs used as push fallbacks
try pushInsteadOf first and then insteadOf, matching Git behavior.
The regression fixture records Git 2.50.1 behavior with git remote get-url:
without --all it prints the first configured URL, and with --all it prints all
configured URLs in order for both fetch and push.
keep
core.worktree-derived worktree paths in the caller's path namespaceSince
b1c1cce, relativecore.worktreevalues from repository-ownedconfiguration were resolved against the symlink-resolved git dir whenever
that differed from the logical git dir. That is correct when the
.gitdirectory itself is reached through a symlink (#2052), but it also fired
when merely an ancestor directory is a symlink - like
/varon macOS,where
TMPDIRdefaults to a path inside the symlinked/var/folders.In that case a submodule repository opened through the symlinked path
would return a canonicalized
workdir()whileRepository::path()andall paths the caller holds remain in the symlinked namespace, breaking
prefix-based path logic such as
repo.workdir().strip_prefix(parent_worktree_dir).Now the symlink-resolved base is only used when resolving the relative
worktree path against the logical and the resolved git dir leads to
different directories on disk. If both denote the same directory, the
logical path is kept, so all paths of the opened repository remain
consistent with the path it was opened with.
consume open_path_as_is after resolving repository paths
Repository::kind()detects linked worktrees of bare repospass through the allocation limit
This is particularly important in untrusted repositories, which
get a reduced allocation limit.
gix::open()now handlesrepo.gitdirectories correctly.Previously they were incorrectly assumed to be the actual
.gitrepositoryand treated as such.
resolve relative core.worktree from real git dir
Chore (BREAKING)
gix-configMarked as breaking explicitly to as we know paramter types were
changed to use convenience traits.
Commit Statistics
Commit Details
view details
1568b31)319cec2)b1c1cce)5f244b3)cb6ec7d)f0ec710)443b401)31a94aa)2315ede)gix-filter(552402f)02cb162)Repository::normalize_path()(6fe97a9)discover_opts()as sibling toopen_opts().` (2f4c488)e7af50e)271454b)a3e9a77)9949e9f)4d47453)adf4b7a)maybe-asyncwithbisync. (c3f2244)5982dfe)gix-config(6aa934a)e70732a)gix-attributes(e11d7a2)c16b5a1)43ff87a)55b5158)gix-config(582d7b5)402babd)53515b6)299d16b)gix-credentials(f88cf10)cf3053a)d89bda0)27aec47)7056d62)432e2b1)6e1c4a2)f1ac335)6e5a5de)1cda1d1)core.worktree-derived worktree paths in the caller's path namespace (24293fc)d5cd537)1ff51ca)8f8d6ab)b36ca4c)Repository::kind()detects linked worktrees of bare repos (54a3c2a)6d95da6)gix-features, usegix-zlibaccordingly. (9c2977a)e9c973d)d533f0c)dc1fdc3)0052e42)0a5c62a)3e43c42)54b5393)a82b492)32cb1ad)core.fscacheon Windows (158f899)f2dfdd8)7de7a30)d8aeaac)Connection::configured_credentials_for_current_url(). (a5d4616)gix-transport(6a7a717)f77cb0a)gix::open()now handlesrepo.gitdirectories correctly. (9fe1050)c31dac2)596ab93)7e17fcf)a7625fa)1e3da34)1b1541e)Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.