git: Add ability to clone remote repositories from Zed (#35606)

This PR adds preliminary git clone support through using the new
`GitClone` action. This works with SSH connections too.

- [x] Get backend working
- [x] Add a UI to interact with this

Future follow-ups:
- Polish the UI
- Have the path select prompt say "Select Repository clone target"
instead of “Open”
- Use Zed path prompt if the user has that as a setting
- Add support for cloning from a user's GitHub repositories directly

Release Notes:

- Add the ability to clone remote git repositories through the `git:
Clone` action

---------

Co-authored-by: hpmcdona <hayden_mcdonald@brown.edu>
This commit is contained in:
Anthony Eid 2025-08-11 11:09:38 -04:00 committed by GitHub
parent 12084b6677
commit 62270b33c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 310 additions and 8 deletions

View file

@ -202,6 +202,16 @@ message GitInit {
string fallback_branch_name = 3;
}
message GitClone {
uint64 project_id = 1;
string abs_path = 2;
string remote_repo = 3;
}
message GitCloneResponse {
bool success = 1;
}
message CheckForPushedCommits {
uint64 project_id = 1;
reserved 2;

View file

@ -399,7 +399,10 @@ message Envelope {
GetDefaultBranchResponse get_default_branch_response = 360;
GetCrashFiles get_crash_files = 361;
GetCrashFilesResponse get_crash_files_response = 362; // current max
GetCrashFilesResponse get_crash_files_response = 362;
GitClone git_clone = 363;
GitCloneResponse git_clone_response = 364; // current max
}
reserved 87 to 88;

View file

@ -316,6 +316,8 @@ messages!(
(PullWorkspaceDiagnostics, Background),
(GetDefaultBranch, Background),
(GetDefaultBranchResponse, Background),
(GitClone, Background),
(GitCloneResponse, Background)
);
request_messages!(
@ -484,6 +486,7 @@ request_messages!(
(GetDocumentDiagnostics, GetDocumentDiagnosticsResponse),
(PullWorkspaceDiagnostics, Ack),
(GetDefaultBranch, GetDefaultBranchResponse),
(GitClone, GitCloneResponse)
);
entity_messages!(
@ -615,7 +618,8 @@ entity_messages!(
LogToDebugConsole,
GetDocumentDiagnostics,
PullWorkspaceDiagnostics,
GetDefaultBranch
GetDefaultBranch,
GitClone
);
entity_messages!(