修复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]
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")
.args(["-c", "core.quotePath=false"])
.args(["status", "--porcelain=v1", "-unormal"])
.args(["status", "--porcelain=v1", untracked_mode])
.current_dir(&path)
.output()
.await

View File

@@ -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

View File

@@ -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

View File

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