5656 - Author struct: name, email, timestamp with Display implementation
5757 - CommitMessage: subject and optional body parsing
5858 - CommitDetails: full commit info including file changes and diff stats
59- - ** Core types** : Hash (in src/types.rs), IndexStatus, WorktreeStatus, FileEntry (in src/commands/status.rs), Branch, BranchList, BranchType (in src/commands/branch.rs), Commit, CommitLog, Author, CommitMessage, CommitDetails, LogOptions (in src/commands/log.rs), RepoConfig (in src/commands/config.rs), Remote, RemoteList, FetchOptions, PushOptions (in src/commands/remote.rs), RestoreOptions, RemoveOptions, MoveOptions (in src/commands/files.rs), DiffOutput, FileDiff, DiffStatus, DiffOptions, DiffStats, DiffChunk, DiffLine, DiffLineType (in src/commands/diff.rs), Tag, TagList, TagType, TagOptions (in src/commands/tag.rs)
59+ - ** Core types** : Hash (in src/types.rs), IndexStatus, WorktreeStatus, FileEntry (in src/commands/status.rs), Branch, BranchList, BranchType (in src/commands/branch.rs), Commit, CommitLog, Author, CommitMessage, CommitDetails, LogOptions (in src/commands/log.rs), RepoConfig (in src/commands/config.rs), Remote, RemoteList, FetchOptions, PushOptions (in src/commands/remote.rs), RestoreOptions, RemoveOptions, MoveOptions (in src/commands/files.rs), DiffOutput, FileDiff, DiffStatus, DiffOptions, DiffStats, DiffChunk, DiffLine, DiffLineType (in src/commands/diff.rs), Tag, TagList, TagType, TagOptions (in src/commands/tag.rs), Stash, StashList, StashOptions, StashApplyOptions (in src/commands/stash.rs)
6060- ** Utility functions** : git(args, working_dir) -> Result<String >, git_raw(args, working_dir) -> Result<Output >
6161- ** Remote management** : Full remote operations with network support
6262 - Repository::add_remote(name, url) -> Result<()> - add remote repository
110110 - TagList: Box<[ Tag] > with iterator methods (iter, lightweight, annotated), search (find, find_containing, for_commit), counting (len, lightweight_count, annotated_count)
111111 - TagOptions builder: annotated, force, message, sign with builder pattern (with_annotated, with_force, with_message, with_sign)
112112 - Author struct: name, email, timestamp for annotated tag metadata
113- - ** Command modules** : status.rs, add.rs, commit.rs, branch.rs, log.rs, config.rs, remote.rs, files.rs, diff.rs, tag.rs (in src/commands/)
114- - ** Testing** : 152+ tests covering all functionality with comprehensive edge cases
113+ - ** Stash operations** : Complete stash management with type-safe API
114+ - Repository::stash_list() -> Result<StashList > - list all stashes with comprehensive filtering
115+ - Repository::stash_save(message) -> Result<Stash > - create simple stash
116+ - Repository::stash_push(message, options) -> Result<Stash > - create stash with options
117+ - Repository::stash_apply(index, options) -> Result<()> - apply stash without removing it
118+ - Repository::stash_pop(index, options) -> Result<()> - apply and remove stash
119+ - Repository::stash_show(index) -> Result<String > - show stash contents
120+ - Repository::stash_drop(index) -> Result<()> - remove specific stash
121+ - Repository::stash_clear() -> Result<()> - remove all stashes
122+ - Stash struct: index, message, hash, branch, timestamp
123+ - StashList: Box<[ Stash] > with iterator methods (iter), search (find_containing, for_branch), access (latest, get), counting (len, is_empty)
124+ - StashOptions builder: untracked, keep_index, patch, staged_only, paths with builder pattern (with_untracked, with_keep_index, with_patch, with_staged_only, with_paths)
125+ - StashApplyOptions builder: restore_index, quiet with builder pattern (with_index, with_quiet)
126+ - ** Command modules** : status.rs, add.rs, commit.rs, branch.rs, log.rs, config.rs, remote.rs, files.rs, diff.rs, tag.rs, stash.rs (in src/commands/)
127+ - ** Testing** : 161+ tests covering all functionality with comprehensive edge cases
115128- Run ` cargo fmt && cargo build && cargo test && cargo clippy --all-targets --all-features -- -D warnings ` after code changes
116129- Make sure all examples are running
117130
@@ -130,6 +143,7 @@ The `examples/` directory contains comprehensive demonstrations of library funct
130143- ** file_lifecycle_operations.rs** : Comprehensive file management - restore/reset/remove/move operations, .gitignore management, advanced file lifecycle workflows, staging area manipulation
131144- ** diff_operations.rs** : Comprehensive diff operations showcase - unstaged/staged diffs, commit comparisons, advanced options (whitespace handling, path filtering), output formats (name-only, stat, numstat), and change analysis
132145- ** tag_operations.rs** : Complete tag management - create/delete/list tags, lightweight vs annotated tags, TagOptions builder, tag filtering and search, comprehensive tag workflows
146+ - ** stash_operations.rs** : Complete stash management - save/apply/pop/list stashes, advanced options (untracked files, keep index, specific paths), stash filtering and search, comprehensive stash workflows
133147- ** error_handling.rs** : Comprehensive error handling patterns - GitError variants, recovery strategies
134148
135149Run examples with: ` cargo run --example <example_name> `
0 commit comments