ZIm/crates/git/src
Cole Miller 7f5c874a38
git: Use the CLI for loading commit SHAs and details (#29351)
Since #28065 merged we've seen deadlocks inside iconv when opening Zed
in a repository containing many submodules. These calls to iconv happen
inside libgit2, in our implementations of the methods `head_sha`,
`merge_head_shas`, and `show` on `RealGitRepository`. This PR moves
those methods to use the git CLI instead, sidestepping the issue. For
the sake of efficiency, a new `revparse_batch` method is added that uses
`git cat-file` to resolve several ref names in one invocation. I
originally intended to make `show` operate in batch mode as well (or
instead), but I can't see a good way to do that with the git CLI; `git
show` always bails on the first ref that it can't resolve, and
`for-each-ref` doesn't support symbolic refs like `HEAD`.

Separately, I removed the calls to `show` in `MergeDetails::load`, going
back to only loading the SHAs of the various merge heads. Loading full
commit details was intended to support the inlays feature that ended up
being cut from #28065, and we can add it back in when we need it.

Release Notes:

- N/A
2025-04-25 14:46:02 -04:00
..
blame.rs Allow viewing past commits in Zed (#27636) 2025-03-31 23:26:47 +00:00
commit.rs Allow viewing past commits in Zed (#27636) 2025-03-31 23:26:47 +00:00
git.rs git: Amend (#28187) 2025-04-14 21:07:19 +05:30
hosting_provider.rs Allow viewing past commits in Zed (#27636) 2025-03-31 23:26:47 +00:00
remote.rs Detect wider variety of usernames for SSH-based remotes (#21508) 2024-12-05 15:23:37 -08:00
repository.rs git: Use the CLI for loading commit SHAs and details (#29351) 2025-04-25 14:46:02 -04:00
status.rs chore: Bump Rust version to 1.86 (#28021) 2025-04-03 23:32:50 +02:00