git: Add base branch support to create_branch (#42151)
Closes [#41674](https://github.com/zed-industries/zed/issues/41674) Description: Creating a branch from a base requires switching to the base branch first, then creating the new branch and checking out to it, which requires multiple operations. Add base_branch parameter to create_branch to allow a new branch from a base branch in one operation which is synonymous to the command `git switch -c <new-branch> <base-branch>`. Below is the video after solving the issue: (`master` branch is the default branch here, and I create a branch `new-branch-2` based off the `master` branch. I also show the error which used to appear before the fix.) [Screencast from 2025-11-07 05-14-32.webm](https://github.com/user-attachments/assets/d37d1b58-af5f-44e8-b867-2aa5d4ef3d90) Release Notes: - Fixed the branch-picking error by replacing multiple sequential switch operations with just one switch operation. Signed-off-by: ayu-ch <ayu.chandekar@gmail.com>
This commit is contained in:
@@ -241,18 +241,10 @@ impl BranchListDelegate {
|
||||
return;
|
||||
};
|
||||
let new_branch_name = new_branch_name.to_string().replace(' ', "-");
|
||||
let base_branch = from_branch.map(|b| b.to_string());
|
||||
cx.spawn(async move |_, cx| {
|
||||
if let Some(based_branch) = from_branch {
|
||||
repo.update(cx, |repo, _| repo.change_branch(based_branch.to_string()))?
|
||||
.await??;
|
||||
}
|
||||
|
||||
repo.update(cx, |repo, _| {
|
||||
repo.create_branch(new_branch_name.to_string())
|
||||
})?
|
||||
.await??;
|
||||
repo.update(cx, |repo, _| {
|
||||
repo.change_branch(new_branch_name.to_string())
|
||||
repo.create_branch(new_branch_name, base_branch)
|
||||
})?
|
||||
.await??;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user