Skip to content

Remove gitoxide: standardize local read-only ops on the git subprocess backend#138

Merged
0lut merged 1 commit into
mainfrom
devin/1783294279-remove-gitoxide
Jul 6, 2026
Merged

Remove gitoxide: standardize local read-only ops on the git subprocess backend#138
0lut merged 1 commit into
mainfrom
devin/1783294279-remove-gitoxide

Conversation

@staging-devin-ai-integration

@staging-devin-ai-integration staging-devin-ai-integration Bot commented Jul 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Removes the gix (gitoxide) dependency and the dual-backend layer it existed for. The five local read-only operations (rev_parse, is_ancestor, for_each_ref, for_each_ref_commits, cat_file_batch_types) were previously dispatched through a LocalGitBackend trait with two implementations (in-process GixBackend — the default — and subprocess GitBackend), selected via use_gitoxide config / GIT_CACHE_USE_GITOXIDE. That meant maintaining two parity-tested implementations of every op while all mutating and network paths already went through the git binary.

- Git { ..., local_backend: Arc<dyn LocalGitBackend> }  // GixBackend | GitBackend
- Git::with_gitoxide(bool), Git::run_gix(...)
+ Git methods run the subprocess implementations directly (unchanged bodies from GitBackend)
  • Deleted crates/git-cache-git/src/backend.rs and src/gix_backend.rs; the former GitBackend bodies are inlined into the corresponding Git methods, so behavior matches the previous use_gitoxide = false path exactly. Input validation (reject_revision_arg, reject_ref_arg) is unchanged and still happens before argv composition.
  • Removed AppConfig.use_gitoxide, default_use_gitoxide, and GIT_CACHE_USE_GITOXIDE env parsing (unknown TOML keys and env vars were already ignored, so existing deployment configs won't break). README row dropped.
  • Removed the gix/subprocess parity test in git_wrapper.rs and collapsed the _gix_backend/_git_backend duplicate regression tests in git_client_advanced.rs into one; TestServer::start_with_file_url_upstream loses its backend parameter.
  • Dropped gix from the workspace and async-trait from git-cache-git (only the deleted trait used it); Cargo.lock sheds ~60 transitive gix-* crates.

Release notes

No user facing change (the previously default in-process gitoxide backend is removed; all local read-only Git operations now run through the git binary, matching the existing GIT_CACHE_USE_GITOXIDE=false behavior).

Link to Devin session: https://staging.itsdev.in/sessions/f90f17d194054a468473b35247f3177e
Requested by: @0lut


Devin Review

Status Commit
⚪ Not started

Run Devin Review

Open in Devin Review (Staging)

…s backend

Co-Authored-By: Staging-Devin AI <166158716+staging-devin-ai-integration[bot]@users.noreply.github.com>
@0lut 0lut self-assigned this Jul 5, 2026
@staging-devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

@0lut
0lut merged commit 6e2f613 into main Jul 6, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant