update gix #14869
Merged
Merged
Conversation
Byron
force-pushed
the
gix-upgrade
branch
2 times, most recently
from
July 19, 2026 21:03
3056496 to
07d1fbd
Compare
Byron
marked this pull request as ready for review
July 19, 2026 21:04
Byron
requested review from
Caleb-T-Owens,
estib-vega and
jonathantanmy2
as code owners
July 19, 2026 21:04
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the workspace’s pinned gix/gitoxide revision and adapts GitButler’s Rust crates to the updated gix config/remote APIs, aiming to avoid an ODB panic after fetch and benefit from config API/performance improvements.
Changes:
- Bump
gixandgix-testtoolsgit revisions in the workspace (and refreshCargo.lockaccordingly). - Update call sites to new
gix-configAPIs (notably config getters and section mutation helpers) and adjust type/lifetime usage (e.g.,gix::config::File,gix::remote::Names). - Refactor various remote-name and ref-name utilities to use the updated
gixremote naming types.
Reviewed changes
Copilot reviewed 40 out of 41 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| crates/gitbutler-repo/src/managed_hooks.rs | Adapt core.hooksPath retrieval to new trusted_path() return shape. |
| crates/gitbutler-repo/src/commands.rs | Update remote lookup and config writing for remotes to new gix APIs. |
| crates/gitbutler-project/src/controller.rs | Update config value comparisons to use slice accessors. |
| crates/gitbutler-branch/src/reference_ext.rs | Switch remote-name inputs from custom sets to gix::remote::Names. |
| crates/gitbutler-branch-actions/src/branch.rs | Propagate gix::remote::Names usage through branch identity resolution and tests. |
| crates/but/src/command/legacy/setup.rs | Update writing of remote.*.url to the new config section API. |
| crates/but/src/command/legacy/push.rs | Adjust handling of remote ref return types (ownership changes). |
| crates/but/src/command/legacy/branch/show.rs | Update config file type signature to new gix::config::File form. |
| crates/but/src/command/git_config.rs | Update edit closure signature to new gix::config::File type. |
| crates/but/src/command/config.rs | Update AI git-config editing helpers to new gix::config::File type. |
| crates/but/src/command/alias.rs | Update config section set/push APIs and config file type signatures. |
| crates/but-workspace/tests/workspace/upstream_integration.rs | Update raw config mutation calls to new key argument type. |
| crates/but-workspace/src/ref_info.rs | Simplify/adjust remote names collection under new gix::remote::Names behavior. |
| crates/but-workspace/src/lib.rs | Update stored remote name type to new gix::remote::Names form. |
| crates/but-workspace/src/legacy/push.rs | Update remote names parameter type to new gix::remote::Names form. |
| crates/but-workspace/src/branch/apply.rs | Update local tracking config persistence to new config APIs and types. |
| crates/but-secret/src/secret.rs | Update stored config/prompt option types to new non-'static forms. |
| crates/but-rebase/src/commit.rs | Adjust path ownership handling per updated gix APIs. |
| crates/but-project-handle/src/storage_path.rs | Update trusted_path() matching to new Result<Option<_>> shape. |
| crates/but-llm/src/openrouter.rs | Update git-config reading signatures to new gix::config::File type. |
| crates/but-llm/src/openai.rs | Update git-config reading signatures to new gix::config::File type. |
| crates/but-llm/src/ollama.rs | Update git-config reading signatures to new gix::config::File type. |
| crates/but-llm/src/lmstudio.rs | Update git-config reading signatures to new gix::config::File type. |
| crates/but-llm/src/lib.rs | Update provider initialization signature to new gix::config::File type. |
| crates/but-llm/src/client.rs | Update LLMClient trait signature to new gix::config::File type. |
| crates/but-llm/src/anthropic.rs | Update git-config reading signatures to new gix::config::File type. |
| crates/but-graph/src/projection/workspace/api/mod.rs | Adjust remote-name collection to work with updated gix::remote::Names. |
| crates/but-graph/src/init/overlay.rs | Adapt overlay wrapper return types to new ownership expectations. |
| crates/but-core/tests/core/branch/canned_refname.rs | Update raw config mutation calls to new key argument type. |
| crates/but-core/src/settings.rs | Update config string/program retrieval types away from Cow to owned bytes. |
| crates/but-core/src/repo_ext.rs | Update config file return types to new gix::config::File form. |
| crates/but-core/src/ref_metadata.rs | Update config parsing helpers for ref names and booleans to new return types. |
| crates/but-core/src/lib.rs | Update extract_remote_name_and_short_name signature to new Names type. |
| crates/but-core/src/git_config.rs | Update config open/edit/write helpers for new gix config mutation APIs. |
| crates/but-core/src/commit/mod.rs | Update commit signing config access patterns per updated trusted_path() API. |
| crates/but-core/src/branch/mod.rs | Adjust return type ownership for tracking branch resolution. |
| crates/but-api/src/workspace.rs | Update remote-name conversion for target-branch derivation under new Names type. |
| crates/but-api/src/legacy/git.rs | Update config accessor signature to new gix::config::File type. |
| crates/but-api/src/legacy/forge.rs | Update remote lookup and config writing to new gix APIs. |
| Cargo.toml | Bump pinned git revision for gix/gix-testtools (and patch override). |
| Cargo.lock | Refresh lockfile to reflect updated gitoxide revision and transitive dependency changes. |
- fixes panic in ODB, easily caused after fetch - better gix-config API and improved performance Co-authored-by: GPT 5.6 <codex@openai.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 40 out of 41 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
crates/but-core/src/commit/mod.rs:379
- The context string mentions
user.signingKey, but the config key being read isuser.signingkey(lowercasek). Keeping the message consistent with the actual key avoids confusion when debugging trust issues.
let signing_key = config
.trusted_path("user.signingkey")?
.with_context(|| format!("Didn't trust 'user.signingKey': {signing_key}"))?;
krlvi
approved these changes
Jul 19, 2026
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.
Tasks
gix#14869)