From 6067d5f9c4ba16c52766ed30f2654f8d323d8395 Mon Sep 17 00:00:00 2001 From: xintaofei Date: Tue, 24 Mar 2026 10:05:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgit=E6=9C=AA=E8=B7=9F?= =?UTF-8?q?=E8=B8=AA=E6=96=87=E4=BB=B6=E7=9B=AE=E5=BD=95=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/commands/folders.rs | 12 ++++++++++-- src/components/layout/aux-panel-git-changes-tab.tsx | 4 ++-- src/components/layout/commit-dialog.tsx | 2 +- src/lib/tauri.ts | 10 ++++++++-- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/commands/folders.rs b/src-tauri/src/commands/folders.rs index 7d0a054..c0b810a 100644 --- a/src-tauri/src/commands/folders.rs +++ b/src-tauri/src/commands/folders.rs @@ -1307,10 +1307,18 @@ pub async fn git_stash_show( } #[tauri::command] -pub async fn git_status(path: String) -> Result, AppCommandError> { +pub async fn git_status( + path: String, + show_all_untracked: Option, +) -> Result, AppCommandError> { + let untracked_mode = if show_all_untracked.unwrap_or(false) { + "-uall" + } else { + "-unormal" + }; let output = crate::process::tokio_command("git") .args(["-c", "core.quotePath=false"]) - .args(["status", "--porcelain=v1", "-unormal"]) + .args(["status", "--porcelain=v1", untracked_mode]) .current_dir(&path) .output() .await diff --git a/src/components/layout/aux-panel-git-changes-tab.tsx b/src/components/layout/aux-panel-git-changes-tab.tsx index eb4d578..fa5d76a 100644 --- a/src/components/layout/aux-panel-git-changes-tab.tsx +++ b/src/components/layout/aux-panel-git-changes-tab.tsx @@ -583,7 +583,7 @@ export function GitChangesTab() { setError(null) try { - const statusEntries = await gitStatus(folder.path) + const statusEntries = await gitStatus(folder.path, true) const hasTrackedEntries = statusEntries.some( (entry) => !isUntrackedStatus(entry.status) ) @@ -739,7 +739,7 @@ export function GitChangesTab() { setDirectoryGitLoading(true) try { - const statusEntries = await gitStatus(folder.path) + const statusEntries = await gitStatus(folder.path, true) const scopedEntries = scopeGitStatusEntriesForDirectory( statusEntries, target.path diff --git a/src/components/layout/commit-dialog.tsx b/src/components/layout/commit-dialog.tsx index 5109702..f26c2cb 100644 --- a/src/components/layout/commit-dialog.tsx +++ b/src/components/layout/commit-dialog.tsx @@ -318,7 +318,7 @@ export function CommitWorkspace({ setLoadingStatus(true) setError(null) try { - const result = await gitStatus(folderPath) + const result = await gitStatus(folderPath, true) setEntries(result) const tracked = result.filter( (entry) => entry.status !== UNTRACKED_STATUS diff --git a/src/lib/tauri.ts b/src/lib/tauri.ts index 6648475..ed680e5 100644 --- a/src/lib/tauri.ts +++ b/src/lib/tauri.ts @@ -762,8 +762,14 @@ export async function gitSetRemoteUrl( return invoke("git_set_remote_url", { path, name, url }) } -export async function gitStatus(path: string): Promise { - return invoke("git_status", { path }) +export async function gitStatus( + path: string, + showAllUntracked?: boolean +): Promise { + return invoke("git_status", { + path, + showAllUntracked: showAllUntracked ?? null, + }) } export async function gitDiff(path: string, file?: string): Promise {