From 48529669f7502a6d6644d8648e0c279331e2cf20 Mon Sep 17 00:00:00 2001 From: Anthony Eid Date: Mon, 6 Apr 2026 16:59:02 -0400 Subject: [PATCH] Fix proto migration --- crates/project/src/git_store.rs | 23 +++++++++++++++++++---- crates/proto/proto/git.proto | 2 +- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/crates/project/src/git_store.rs b/crates/project/src/git_store.rs index 64f8a71277dd44f64f56bf9c50f8bef746c6f808..04448be9039df915853b020fe008411756a28967 100644 --- a/crates/project/src/git_store.rs +++ b/crates/project/src/git_store.rs @@ -2414,9 +2414,12 @@ impl GitStore { let repository_id = RepositoryId::from_proto(envelope.payload.repository_id); let repository_handle = Self::repository_for_request(&this, repository_id, &mut cx)?; let directory = PathBuf::from(envelope.payload.directory); - let start_point = match envelope.payload.name { - Some(name) => CreateWorktreeStartPoint::Branched { name }, - None => CreateWorktreeStartPoint::Detached, + let start_point = if envelope.payload.name.is_empty() { + CreateWorktreeStartPoint::Detached + } else { + CreateWorktreeStartPoint::Branched { + name: envelope.payload.name, + } }; let commit = envelope.payload.commit; @@ -6007,6 +6010,17 @@ impl Repository { path: PathBuf, commit: Option, ) -> oneshot::Receiver> { + if matches!( + &start_point, + CreateWorktreeStartPoint::Branched { name } if name.is_empty() + ) { + let (sender, receiver) = oneshot::channel(); + sender + .send(Err(anyhow!("branch name cannot be empty"))) + .ok(); + return receiver; + } + let id = self.id; let message = match &start_point { CreateWorktreeStartPoint::Detached => "git worktree add (detached)".into(), @@ -6020,6 +6034,7 @@ impl Repository { CreateWorktreeStartPoint::Detached => None, CreateWorktreeStartPoint::Branched { name } => Some(name), }; + let remote_name = branch_name.clone().unwrap_or_default(); match repo { RepositoryState::Local(LocalRepositoryState { backend, .. }) => { @@ -6030,7 +6045,7 @@ impl Repository { .request(proto::GitCreateWorktree { project_id: project_id.0, repository_id: id.to_proto(), - name: branch_name, + name: remote_name, directory: path.to_string_lossy().to_string(), commit, }) diff --git a/crates/proto/proto/git.proto b/crates/proto/proto/git.proto index 779a71cf34d72684f1d4166894aac618bfdafffe..9324feb21b1f50ac1041ed0afc8b59cb9b7fe2c6 100644 --- a/crates/proto/proto/git.proto +++ b/crates/proto/proto/git.proto @@ -591,7 +591,7 @@ message Worktree { message GitCreateWorktree { uint64 project_id = 1; uint64 repository_id = 2; - optional string name = 3; + string name = 3; string directory = 4; optional string commit = 5; }