From ee630350d3c0c28a561b166381d5b75ea8bf209a Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 30 Mar 2026 20:27:33 -0400 Subject: Fix bugs in restore-autosave --- .gitignore | 0 Cargo.lock | 0 Cargo.toml | 0 git-autosave.service | 0 rustfmt.toml | 0 src/authenticate.rs | 0 src/bin/git-autosave-daemon.rs | 0 src/bin/git-autosave.rs | 0 src/bin/git-init-autosave.rs | 0 src/bin/git-restore-autosave.rs | 5 ++++- src/lib.rs | 2 +- 11 files changed, 5 insertions(+), 2 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Cargo.lock mode change 100644 => 100755 Cargo.toml mode change 100644 => 100755 git-autosave.service mode change 100644 => 100755 rustfmt.toml mode change 100644 => 100755 src/authenticate.rs mode change 100644 => 100755 src/bin/git-autosave-daemon.rs mode change 100644 => 100755 src/bin/git-autosave.rs mode change 100644 => 100755 src/bin/git-init-autosave.rs mode change 100644 => 100755 src/bin/git-restore-autosave.rs mode change 100644 => 100755 src/lib.rs diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/Cargo.lock b/Cargo.lock old mode 100644 new mode 100755 diff --git a/Cargo.toml b/Cargo.toml old mode 100644 new mode 100755 diff --git a/git-autosave.service b/git-autosave.service old mode 100644 new mode 100755 diff --git a/rustfmt.toml b/rustfmt.toml old mode 100644 new mode 100755 diff --git a/src/authenticate.rs b/src/authenticate.rs old mode 100644 new mode 100755 diff --git a/src/bin/git-autosave-daemon.rs b/src/bin/git-autosave-daemon.rs old mode 100644 new mode 100755 diff --git a/src/bin/git-autosave.rs b/src/bin/git-autosave.rs old mode 100644 new mode 100755 diff --git a/src/bin/git-init-autosave.rs b/src/bin/git-init-autosave.rs old mode 100644 new mode 100755 diff --git a/src/bin/git-restore-autosave.rs b/src/bin/git-restore-autosave.rs old mode 100644 new mode 100755 index 51cc14c..8613e15 --- a/src/bin/git-restore-autosave.rs +++ b/src/bin/git-restore-autosave.rs @@ -31,15 +31,17 @@ impl Display for AutosaveOption { fn main() -> Result<(), anyhow::Error> { let all_users = std::env::args().any(|arg| arg == "--all-users"); let all_branches = std::env::args().any(|arg| arg == "--all-branches"); + let all_devices = std::env::args().any(|arg| arg == "--all-devices"); let anytime = std::env::args().any(|arg| arg == "--anytime"); let force = std::env::args().any(|arg| arg == "--force"); let repository = Repository::discover(".")?; + let gitconfig = repository.config()?; + let repo_id = gitconfig.get_entry("autosave.id")?; let signature = repository.signature()?; let branch = git_autosave::current_branch(&repository)?; let earliest_time = repository.head()?.peel_to_commit()?.time(); - let gitconfig = repository.config()?; let config: &'static _ = Box::leak(Box::new(git_autosave::load_config()?)); let auth = GitAuthenticator::new().set_prompter(Inquirer(config)); let mut callbacks = RemoteCallbacks::new(); @@ -61,6 +63,7 @@ fn main() -> Result<(), anyhow::Error> { }) .filter(|autosave| all_branches || autosave.branch_name == branch) .filter(|autosave| anytime || autosave.time > earliest_time) + .filter(|autosave| all_devices || autosave.repo_id.as_bytes() != repo_id.value_bytes()) .collect::>(); if autosaves.is_empty() { diff --git a/src/lib.rs b/src/lib.rs old mode 100644 new mode 100755 index 839403b..5a6b7df --- a/src/lib.rs +++ b/src/lib.rs @@ -330,7 +330,7 @@ pub fn merge_commit_with_tree( &commit.tree()?, Some(MergeOptions::new().find_renames(true).patience(true)), )? - .write_tree()?) + .write_tree_to(repository)?) } pub fn save_undo_tree(repository: &Repository, workdir: &Tree<'_>) -> Result<(), TreeError> { -- cgit v1.2.3