feat: add git stash management

Add a Stashes dialog with create, apply, pop, and drop actions
Include untracked files automatically when stashing
Show file counts for current changes and stash entries
This commit is contained in:
Bohdan Triapitsyn
2026-05-05 23:39:20 +03:00
parent c80c2b62a8
commit 93267927ff
19 changed files with 754 additions and 109 deletions
+13
View File
@@ -209,6 +209,13 @@ export interface GitPullOptions {
rebase?: boolean;
}
export interface GitStashEntry {
ref: string;
message: string;
relativeTime: string;
hash: string;
}
export interface GitRemote {
name: string;
fetchUrl: string;
@@ -429,6 +436,12 @@ export interface GitAPI {
gitPush(directory: string, options?: { remote?: string; branch?: string; options?: string[] | Record<string, unknown> }): Promise<GitPushResult>;
gitPull(directory: string, options?: GitPullOptions): Promise<GitPullResult>;
gitFetch(directory: string, options?: { remote?: string; branch?: string }): Promise<{ success: boolean }>;
listGitStashes(directory: string): Promise<{ stashes: GitStashEntry[] }>;
countGitStashFiles(directory: string, refs: string[]): Promise<{ counts: Record<string, number> }>;
stashGitChanges(directory: string, options?: { message?: string }): Promise<{ success: boolean; created: boolean; message: string; output: string }>;
applyGitStash(directory: string, options: { ref: string }): Promise<{ success: boolean; ref: string }>;
popGitStash(directory: string, options: { ref: string }): Promise<{ success: boolean; ref: string }>;
dropGitStash(directory: string, options: { ref: string }): Promise<{ success: boolean; ref: string }>;
checkoutBranch(directory: string, branch: string): Promise<{ success: boolean; branch: string }>;
createBranch(directory: string, name: string, startPoint?: string): Promise<{ success: boolean; branch: string }>;
renameBranch(directory: string, oldName: string, newName: string): Promise<{ success: boolean; branch: string }>;