Add "File History" option to Git Panel entry context menu (#44016)

Sublime Merge:

<img width="403" height="313" alt="image"
src="https://github.com/user-attachments/assets/3ebf3c20-324f-4453-88fb-ad93da546f92"
/>

Fork: 

<img width="347" height="474" alt="image"
src="https://github.com/user-attachments/assets/bcec8920-9415-4ffe-9f17-8ee3e764c5bb"
/>

Zed:

<img width="362" height="316" alt="image"
src="https://github.com/user-attachments/assets/06e577cb-f897-45e0-b4b3-59a2c28b3342"
/>


Release Notes:

- Added a "File History" option to Git Panel entry context menu
This commit is contained in:
Joseph T. Lyons
2025-12-02 20:39:29 +00:00
committed by GitHub
parent b1af02ca71
commit d283338885
+25 -1
View File
@@ -6,7 +6,8 @@ use crate::project_diff::{self, Diff, ProjectDiff};
use crate::remote_output::{self, RemoteAction, SuccessMessage};
use crate::{branch_picker, picker_prompt, render_remote_button};
use crate::{
git_panel_settings::GitPanelSettings, git_status_icon, repository_selector::RepositorySelector,
file_history_view::FileHistoryView, git_panel_settings::GitPanelSettings, git_status_icon,
repository_selector::RepositorySelector,
};
use agent_settings::AgentSettings;
use anyhow::Context as _;
@@ -842,6 +843,26 @@ impl GitPanel {
});
}
fn file_history(&mut self, _: &git::FileHistory, window: &mut Window, cx: &mut Context<Self>) {
maybe!({
let entry = self.entries.get(self.selected_entry?)?.status_entry()?;
let active_repo = self.active_repository.as_ref()?;
let repo_path = entry.repo_path.clone();
let git_store = self.project.read(cx).git_store();
FileHistoryView::open(
repo_path,
git_store.downgrade(),
active_repo.downgrade(),
self.workspace.clone(),
window,
cx,
);
Some(())
});
}
fn open_file(
&mut self,
_: &menu::SecondaryConfirm,
@@ -3997,6 +4018,8 @@ impl GitPanel {
.separator()
.action("Open Diff", Confirm.boxed_clone())
.action("Open File", SecondaryConfirm.boxed_clone())
.separator()
.action("File History", Box::new(git::FileHistory))
});
self.selected_entry = Some(ix);
self.set_context_menu(context_menu, position, window, cx);
@@ -4499,6 +4522,7 @@ impl Render for GitPanel {
.on_action(cx.listener(Self::close_panel))
.on_action(cx.listener(Self::open_diff))
.on_action(cx.listener(Self::open_file))
.on_action(cx.listener(Self::file_history))
.on_action(cx.listener(Self::focus_changes_list))
.on_action(cx.listener(Self::focus_editor))
.on_action(cx.listener(Self::expand_commit_editor))