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)
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
9999 - DiffOptions: context_lines, whitespace handling, path filtering, output formats (name-only, stat, numstat)
100100 - DiffStats: files_changed, insertions, deletions with aggregate statistics
101101 - Complete filtering: files_with_status(), iter(), is_empty(), len() for result analysis
102- - ** Command modules** : status.rs, add.rs, commit.rs, branch.rs, log.rs, config.rs, remote.rs, files.rs, diff.rs (in src/commands/)
103- - ** Testing** : 144+ tests covering all functionality with comprehensive edge cases
102+ - ** Tag operations** : Complete tag management with type-safe API
103+ - Repository::tags() -> Result<TagList > - list all tags with comprehensive filtering
104+ - Repository::create_tag(name, target) -> Result<Tag > - create lightweight tag
105+ - Repository::create_tag_with_options(name, target, options) -> Result<Tag > - create tag with options
106+ - Repository::delete_tag(name) -> Result<()> - delete tag
107+ - Repository::show_tag(name) -> Result<Tag > - detailed tag information
108+ - Tag struct: name, hash, tag_type, message, tagger, timestamp
109+ - TagType enum: Lightweight, Annotated
110+ - TagList: Box<[ Tag] > with iterator methods (iter, lightweight, annotated), search (find, find_containing, for_commit), counting (len, lightweight_count, annotated_count)
111+ - TagOptions builder: annotated, force, message, sign with builder pattern (with_annotated, with_force, with_message, with_sign)
112+ - Author struct: name, email, timestamp for annotated tag metadata
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
104128- Run ` cargo fmt && cargo build && cargo test && cargo clippy --all-targets --all-features -- -D warnings ` after code changes
105129- Make sure all examples are running
106130
@@ -118,6 +142,8 @@ The `examples/` directory contains comprehensive demonstrations of library funct
118142- ** remote_operations.rs** : Complete remote management - add/remove/rename remotes, fetch/push operations with options, network operations, error handling
119143- ** file_lifecycle_operations.rs** : Comprehensive file management - restore/reset/remove/move operations, .gitignore management, advanced file lifecycle workflows, staging area manipulation
120144- ** 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
145+ - ** 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
121147- ** error_handling.rs** : Comprehensive error handling patterns - GitError variants, recovery strategies
122148
123149Run examples with: ` cargo run --example <example_name> `
0 commit comments