summaryrefslogtreecommitdiff
path: root/src/bin/git-undo-restore-autosave.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/git-undo-restore-autosave.rs')
-rw-r--r--src/bin/git-undo-restore-autosave.rs16
1 files changed, 16 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(())
+}