修复git未跟踪文件目录显示不全

This commit is contained in:
xintaofei
2026-03-24 10:05:36 +08:00
parent a4805621f9
commit 6067d5f9c4
4 changed files with 21 additions and 7 deletions

View File

@@ -1307,10 +1307,18 @@ pub async fn git_stash_show(
} }
#[tauri::command] #[tauri::command]
pub async fn git_status(path: String) -> Result<Vec<GitStatusEntry>, AppCommandError> { pub async fn git_status(
path: String,
show_all_untracked: Option<bool>,
) -> Result<Vec<GitStatusEntry>, AppCommandError> {
let untracked_mode = if show_all_untracked.unwrap_or(false) {
"-uall"
} else {
"-unormal"
};
let output = crate::process::tokio_command("git") let output = crate::process::tokio_command("git")
.args(["-c", "core.quotePath=false"]) .args(["-c", "core.quotePath=false"])
.args(["status", "--porcelain=v1", "-unormal"]) .args(["status", "--porcelain=v1", untracked_mode])
.current_dir(&path) .current_dir(&path)
.output() .output()
.await .await

View File

@@ -583,7 +583,7 @@ export function GitChangesTab() {
setError(null) setError(null)
try { try {
const statusEntries = await gitStatus(folder.path) const statusEntries = await gitStatus(folder.path, true)
const hasTrackedEntries = statusEntries.some( const hasTrackedEntries = statusEntries.some(
(entry) => !isUntrackedStatus(entry.status) (entry) => !isUntrackedStatus(entry.status)
) )
@@ -739,7 +739,7 @@ export function GitChangesTab() {
setDirectoryGitLoading(true) setDirectoryGitLoading(true)
try { try {
const statusEntries = await gitStatus(folder.path) const statusEntries = await gitStatus(folder.path, true)
const scopedEntries = scopeGitStatusEntriesForDirectory( const scopedEntries = scopeGitStatusEntriesForDirectory(
statusEntries, statusEntries,
target.path target.path

View File

@@ -318,7 +318,7 @@ export function CommitWorkspace({
setLoadingStatus(true) setLoadingStatus(true)
setError(null) setError(null)
try { try {
const result = await gitStatus(folderPath) const result = await gitStatus(folderPath, true)
setEntries(result) setEntries(result)
const tracked = result.filter( const tracked = result.filter(
(entry) => entry.status !== UNTRACKED_STATUS (entry) => entry.status !== UNTRACKED_STATUS

View File

@@ -762,8 +762,14 @@ export async function gitSetRemoteUrl(
return invoke("git_set_remote_url", { path, name, url }) return invoke("git_set_remote_url", { path, name, url })
} }
export async function gitStatus(path: string): Promise<GitStatusEntry[]> { export async function gitStatus(
return invoke("git_status", { path }) path: string,
showAllUntracked?: boolean
): Promise<GitStatusEntry[]> {
return invoke("git_status", {
path,
showAllUntracked: showAllUntracked ?? null,
})
} }
export async function gitDiff(path: string, file?: string): Promise<string> { export async function gitDiff(path: string, file?: string): Promise<string> {