ZIm/crates
Max Brunsfeld ae6d350334
Use system-installed git binary for push/pull/fetch (#25900)
### Problem

When using HTTPS remotes, users are getting errors when trying to push
or pull via the git panel.

On macOS, Zed bundles a `git` binary that's part of
[`dugite-native`](https://github.com/desktop/dugite-native). But we
don't include the entire package. Additional binaries from
`dugite-native` are needed for pulling and pushing over HTTPS.

### Solution

Rather than bundling those additional binaries, I've changed the `push`,
`pull`, and `fetch` actions to rely on the *system-installed* `git`
binary. The downside of this is that, if the user does not have Git
installed, they wont' be able to push, pull, or fetch from within Zed.
But we believe that the vast majority of users will have Git installed.
Also, unlike `diff` and `status`, which Zed needs to call in the
background without any user interaction, `push`/`pull` and `fetch` are
explicit actions that the user takes in Zed, so there is an opportunity
to prompt them to install Git if they haven't.

### Background

There are three ways (that I know of) that users might authenticate when
pushing, pulling, or fetching over HTTPS.

1. Via a built-in [Git
`credential.helper`](https://git-scm.com/docs/gitcredentials). On macOS,
Git ships with a helper called `credential-osxkeychain` that stores
internet passwords in the OS Keychain. You can opt into this globally
with the command `git config --global credential.helper osxkeychain`,
which writes to your `~/.gitconfig`.
2. Via [`Git Credential Manager`
(GCM)](https://github.com/git-ecosystem/git-credential-manager), which
is a different `credential.helper`, [built by
GitHub](https://github.blog/security/application-security/git-credential-manager-authentication-for-everyone/),
which must be installed manually, and integrates with specific Git
hosting providers like GitHub and Azure.
3. By typing their Username and Password/Access-token interactively when
pushing/pulling/fetching.

### Testing Status

* [ ] 🚫 Interactive password auth - not yet supported, requires
https://github.com/zed-industries/zed/pull/25848
* [x] **credential-osxkeychain** - when using the built-in credential
helper, and the credentials are already stored in the keychain,
push/pull/fetch now work fine .
* [ ] **GCM**  - still testing.
* Right now, I'm seeing `git-credential-manager` just hang indefinitely
when pushing from Zed, even though it works when pushing from a
terminal.



Release Notes:

- N/A
2025-03-02 17:31:47 -08:00
..
activity_indicator Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
anthropic Add Anthropic Claude 3.7 support (#25497) 2025-02-24 16:10:26 -05:00
assets Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
assistant2 chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
assistant_context_editor chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
assistant_settings assistant: Add Bedrock support (#21092) 2025-02-24 18:10:12 -05:00
assistant_slash_command Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163) 2025-02-19 15:32:29 +00:00
assistant_slash_commands chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
assistant_tool Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
assistant_tools assistant_tools: Rename FileToolInput to NowToolInput (#25456) 2025-02-24 09:37:07 -05:00
audio Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
auto_update cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
auto_update_ui Use the MessageNotification component for the release notes toast (#25013) 2025-02-17 11:32:04 -03:00
aws_http_client Add aws_http_client and bedrock crates (#25490) 2025-02-24 20:28:20 +00:00
bedrock bedrock: Add Claude 3.7 Sonnet (#25583) 2025-02-25 13:52:42 -05:00
breadcrumbs Use carriage return instead of newline symbol for single line text (#25616) 2025-02-25 18:26:50 -07:00
buffer_diff Optimistically update hunk states when staging and unstaging hunks (#25687) 2025-02-28 20:55:29 +00:00
call cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
channel Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
cli cli: Add extra paths in detect() on Windows (#25765) 2025-03-02 00:17:55 +08:00
client Add CredentialsProvider to silence keychain prompts in development (#25266) 2025-02-20 17:58:50 +00:00
clock chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
collab chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
collab_ui Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
collections chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
command_palette cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
command_palette_hooks vim: :set support (#24209) 2025-02-11 04:55:40 +00:00
component git_ui: New panel design (#25821) 2025-02-28 20:00:39 +00:00
component_preview git_ui: New panel design (#25821) 2025-02-28 20:00:39 +00:00
context_server context_server: Abstract server transport (#24528) 2025-02-26 17:19:19 +00:00
context_server_settings Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
copilot Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
credentials_provider Use the development credentials provider in development by default (#25273) 2025-02-20 19:07:16 +00:00
db cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
deepseek Add DeepSeek support (#23551) 2025-01-27 13:40:59 -05:00
diagnostics Dismiss active diagnostics on invalidation (#25646) 2025-02-26 22:30:23 +02:00
docs_preprocessor Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
editor Add stop_at_indent for Editor::DeleteToBeginningOfLine (#25688) 2025-03-01 11:03:47 -05:00
evals Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163) 2025-02-19 15:32:29 +00:00
extension theme: Don't log errors for missing themes until extensions have loaded (#25098) 2025-02-18 17:47:25 +00:00
extension_api Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
extension_cli extension_cli: Include the list of what an extension provides in the generated manifest (#24295) 2025-02-05 18:17:19 +00:00
extension_host Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
extensions_ui git_ui: Commit modal refinement (#25484) 2025-02-24 19:19:06 +00:00
feature_flags zeta: Remove predict-edits-launch feature flag (#24829) 2025-02-13 21:48:09 +00:00
feedback cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
file_finder Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
file_icons Allow icon themes to provide their own file associations (#24926) 2025-02-15 00:35:13 +00:00
fs Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
fsevent Deflake fs::test_event_stream_simple (#24013) 2025-01-30 23:53:36 -07:00
fuzzy Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
git Use system-installed git binary for push/pull/fetch (#25900) 2025-03-02 17:31:47 -08:00
git_hosting_providers git_hosting_providers: Add support for Chromium repositories (#24881) 2025-02-20 19:11:32 -05:00
git_ui Diff View: Scroll to center of hunks when reviewing (#25846) 2025-03-01 03:20:26 +00:00
go_to_line project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
google_ai Partially fix assistant onboarding (#25313) 2025-02-24 07:29:55 +00:00
gpui Support hunk-wise StageAndNext and UnstageAndNext (#25845) 2025-03-01 02:39:08 +00:00
gpui_macros Revert "Hide the mouse when the user is typing in the editor (#25040)" (#25393) 2025-02-22 10:19:23 -05:00
gpui_tokio Make the gpui_tokio crate generic over the context it spawns (#23995) 2025-01-31 02:00:55 +00:00
html_to_markdown Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
http_client Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
image_viewer image_viewer: Hide breadcrumb (#25654) 2025-02-26 17:24:35 +01:00
indexed_docs Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
inline_completion edit predictions: Show user if current project is open source (#24587) 2025-02-10 22:28:56 -03:00
inline_completion_button Support absolute disabled_globs (#25755) 2025-02-27 15:29:32 -03:00
install_cli Fix missed renames in #22632 (#23688) 2025-01-26 23:37:34 +00:00
journal cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
language Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
language_extension Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
language_model Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
language_model_selector Move PopoverButton into ui (#25724) 2025-02-27 02:51:19 +00:00
language_models assistant: Refine settings view's instruction visuals (#25812) 2025-02-28 12:06:47 -03:00
language_selector Refactor to use SharedString in more places (#23813) 2025-01-28 19:04:21 -05:00
language_tools Persist selections for editors (#25083) 2025-02-18 14:27:00 +00:00
languages Add constructor highlighting for JS/TS/TSX (#25207) 2025-03-02 00:43:51 +00:00
livekit_api Change license of crates/livekit_api from AGPL to GPL (#25206) 2025-02-19 23:32:51 +00:00
livekit_client cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
livekit_client_macos Rename livekit_server to livekit_api (#24984) 2025-02-16 20:24:12 +00:00
lmstudio lmstudio: Support missing quantization in model metadata (#24054) 2025-01-31 22:28:11 +00:00
lsp lsp: Use available workspace folders in initialize params (#25753) 2025-02-27 16:45:59 +01:00
markdown Remove language::markdown (#25136) 2025-02-19 08:55:36 -07:00
markdown_preview markdown_preview: Fix markdown preview not updating on AcceptEditPrediction (#25772) 2025-02-28 01:22:46 +05:30
media chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
menu chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
migrator migrator: Fix keymap task_name regression (#24898) 2025-02-15 01:33:30 +05:30
mistral assistant: Add Mistral support (#24879) 2025-02-14 13:07:41 -05:00
multi_buffer Allow unfolding deleted buffers in project diff w/ keyboard (#25835) 2025-02-28 16:02:35 -08:00
node_runtime Pass extra CA certs to node process if env var exists (#23662) 2025-01-30 08:56:02 -08:00
notifications Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
ollama Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
open_ai Update Assistant context limits (#25087) 2025-02-19 11:06:20 -05:00
outline git_ui: Commit modal refinement (#25484) 2025-02-24 19:19:06 +00:00
outline_panel outline panel: Improve the search query header design (#25283) 2025-02-20 18:09:33 -03:00
panel git_ui: New panel design (#25821) 2025-02-28 20:00:39 +00:00
paths Settings/keymap backup path next to files + update notification messages (#24517) 2025-02-09 16:51:37 -07:00
picker ui: Remove track_focus method from Picker render (#25043) 2025-02-17 19:18:12 -03:00
prettier lsp: Use available workspace folders in initialize params (#25753) 2025-02-27 16:45:59 +01:00
project lsp: Do not add trailing slash to workspace folders (#25903) 2025-03-02 22:09:13 +00:00
project_panel Save buffers after restoring hunks in the project diff (#25620) 2025-02-26 15:16:17 -05:00
project_symbols windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
prompt_library chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
prompt_store chore: Extract PromptStore out of prompt_library (#25837) 2025-03-01 00:34:28 +01:00
proto editor: Add Organize Imports Action (#25793) 2025-03-01 00:59:09 +05:30
recent_projects Fix UI font size changes not applying (#25307) 2025-02-21 06:24:02 -03:00
refineable windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
release_channel windows: Missing commit of #25412 (#25732) 2025-02-27 08:00:42 +00:00
remote ssh: Allow ssh -F ssh_config (#25619) 2025-02-26 16:23:25 -05:00
remote_server cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
repl Fix theme selector resetting the buffer size (#25425) 2025-02-23 15:24:43 +00:00
reqwest_client Redact Google Gemini API keys from error messaging and log (#24884) 2025-02-17 11:42:22 -05:00
rich_text Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163) 2025-02-19 15:32:29 +00:00
rope Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
rpc extensions_ui: Add general structure for filtering extensions by what they provide (#24325) 2025-02-06 00:09:37 +00:00
schema_generator Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
search Fix buffer search options not resetting when dismissed after Vim mode search then reopened with buffer: deploy search (#25838) 2025-02-28 18:59:22 -06:00
semantic_index Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163) 2025-02-19 15:32:29 +00:00
semantic_version chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
session cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
settings Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
settings_ui Fix UI font size changes not applying (#25307) 2025-02-21 06:24:02 -03:00
snippet Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
snippet_provider snippets: Fix snippets not updating while containing comments (#23755) 2025-01-28 10:37:48 +01:00
snippets_ui Remove more references to 'model' in GPUI APIs (#23693) 2025-01-27 04:00:27 +00:00
sqlez Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
sqlez_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
story Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
storybook ui: More component previews, UI component cleanup (#25302) 2025-02-21 09:20:53 -05:00
streaming_diff chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
sum_tree Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
supermaven Include prediction ID on edit prediction accepted/discarded events (#24480) 2025-02-07 22:06:37 +00:00
supermaven_api Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
tab_switcher project: Fine-grained language server management (#24038) 2025-02-14 15:41:49 +01:00
task cx.background_executor().spawn(...) -> cx.background_spawn(...) (#25103) 2025-02-18 20:30:33 +00:00
tasks_ui Use active worktree's task sources (#25784) 2025-02-27 22:57:59 +00:00
telemetry chore: Use workspace fields for edition and publish (#23291) 2025-01-17 17:39:22 +01:00
telemetry_events Add build SHA to panic reports and zed --version (on nightly/dev) (#24258) 2025-02-06 02:09:24 -07:00
terminal Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
terminal_view terminal: Update terminal reopening from global to per-workspace (#25336) 2025-02-22 00:05:52 +05:30
text Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
theme git_ui: Commit modal refinement (#25484) 2025-02-24 19:19:06 +00:00
theme_extension theme: Don't log errors for missing themes until extensions have loaded (#25098) 2025-02-18 17:47:25 +00:00
theme_importer Add schema_generator for generating JSON schemas (#23991) 2025-01-31 01:22:10 +00:00
theme_selector icon_theme_selector: Add footer and related docs (#25042) 2025-02-20 00:02:24 +00:00
time_format Add an undo button to the git panel (#24593) 2025-02-12 15:57:08 -07:00
title_bar title_bar: Fix the order of the collab buttons (#25775) 2025-02-27 16:22:05 -05:00
toolchain_selector Revert "file_finder: Remove common segments of long paths in search results (#25049)" (#25163) 2025-02-19 15:32:29 +00:00
ui git_ui: New panel design (#25821) 2025-02-28 20:00:39 +00:00
ui_input Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
ui_macros Fix UI font size changes not applying (#25307) 2025-02-21 06:24:02 -03:00
util Optimize JSON merging by removing redundant key clones in serde_json operations (#25866) 2025-03-01 14:13:38 -05:00
util_macros windows: Fix tests on Windows (#22616) 2025-02-05 14:30:09 +00:00
vim vim: Combine match arms in Mode::is_visual (#25675) 2025-02-26 19:45:04 +00:00
vim_mode_setting Eliminate GPUI View, ViewContext, and WindowContext types (#22632) 2025-01-26 03:02:45 +00:00
welcome New commit review flow in project diff view (#25229) 2025-02-21 06:52:34 +00:00
workspace pane: Hide "Copy Relative Path" and "Reveal In Project Panel" actions for files outside of the projects (#25386) 2025-03-01 23:31:18 +02:00
worktree Rust 1.85 (#25272) 2025-02-28 18:33:35 +01:00
zed Make more log files read only (#25887) 2025-03-02 08:05:55 +00:00
zed_actions Adds a way to toggle font size without settings adjustments (#24857) 2025-02-14 13:27:48 +02:00
zeta zeta: Fix update required notification not showing (#25588) 2025-02-25 20:02:43 +00:00