diff options
| author | Mica White <botahamec@outlook.com> | 2026-04-19 17:50:03 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-04-19 17:50:03 -0400 |
| commit | 48920824d7529646d154467bcfdd6107e1e28acd (patch) | |
| tree | 6990ab5114c9520f996da0646b9fd436b4bbd5c8 | |
| parent | 1495c12ceca5194757765d4dd95889f2d4ab4fcd (diff) | |
git undo-restore-autosave
| -rw-r--r-- | src/bin/git-undo-restore-autosave.rs | 16 | ||||
| -rw-r--r-- | src/lib.rs | 5 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/bin/git-undo-restore-autosave.rs b/src/bin/git-undo-restore-autosave.rs new file mode 100644 index 0000000..c3d00df --- /dev/null +++ b/src/bin/git-undo-restore-autosave.rs @@ -0,0 +1,16 @@ +use git2::{Repository, build::CheckoutBuilder}; + +fn main() -> Result<(), anyhow::Error> { + let force = std::env::args().any(|arg| arg == "--force"); + + let repository = Repository::discover(".")?; + let tree = git_autosave::load_undo_tree(&repository)?; + + let mut options = CheckoutBuilder::new(); + if force { + options.force(); + } + repository.checkout_tree(tree.as_object(), Some(&mut options))?; + + Ok(()) +} @@ -256,3 +256,8 @@ pub fn saved_restored_autosave( Ok(()) } + +pub fn load_undo_tree(repository: &Repository) -> Result<Tree<'_>, git2::Error> { + let reference = repository.find_reference(UNDO_RESTORE_REF)?; + reference.peel_to_tree() +} |
