From 909c147b4bf1a976b81cfaa36dbc862339521498 Mon Sep 17 00:00:00 2001 From: Xiaobo Liu Date: Mon, 16 Feb 2026 21:36:15 +0800 Subject: [PATCH] git_ui: Add git init button to empty repository state (#49203) Release Notes: - Git: Added `git init` button that quickly allows to turn an empty repository into a Git repository. https://github.com/user-attachments/assets/58b0d49f-b813-4d1c-a086-4bd21d226916 Signed-off-by: Xiaobo Liu --- crates/git_ui/src/git_panel.rs | 5 +++++ crates/git_ui/src/project_diff.rs | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/git_ui/src/git_panel.rs b/crates/git_ui/src/git_panel.rs index 50b29381fba0f54e4a03bca904e15d017ff4968b..d50f9088211425518f5f97366aa3a1419821581f 100644 --- a/crates/git_ui/src/git_panel.rs +++ b/crates/git_ui/src/git_panel.rs @@ -228,6 +228,11 @@ pub fn register(workspace: &mut Workspace) { workspace.register_action(|workspace, _: &ExpandCommitEditor, window, cx| { CommitModal::toggle(workspace, None, window, cx) }); + workspace.register_action(|workspace, _: &git::Init, window, cx| { + if let Some(panel) = workspace.panel::(cx) { + panel.update(cx, |panel, cx| panel.git_init(window, cx)); + } + }); } #[derive(Debug, Clone)] diff --git a/crates/git_ui/src/project_diff.rs b/crates/git_ui/src/project_diff.rs index 7c460d5f89167409c34fcdf56cced49cb60fc0a1..9b6277285abc1fc6baf24f0f944449407724d332 100644 --- a/crates/git_ui/src/project_diff.rs +++ b/crates/git_ui/src/project_diff.rs @@ -1671,9 +1671,12 @@ impl RenderOnce for ProjectDiffEmptyState { v_flex() .gap_1() .when(self.no_repo, |this| { - // TODO: add git init this.text_center() .child(Label::new("No Repository").color(Color::Muted)) + .child( + Button::new("initialize-repo", "Initialize Repository") + .on_click(move |_, _, cx| cx.dispatch_action(&git::Init)), + ) }) .map(|this| { if not_ahead_or_behind && self.current_branch.is_some() {