From 340085abf846bd99761365e91644eb1862e8162c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Mon, 29 Nov 2021 00:28:41 +0100 Subject: [PATCH] Detect change from worktree to non-worktree during sync --- src/lib.rs | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 253776c..c22c008 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -135,15 +135,25 @@ fn sync_trees(config: Config) { ); process::exit(1); } - repo_handle = Some(open_repo(&repo_path, repo.worktree_setup).unwrap_or_else( - |error| { - print_repo_error( - &repo.name, - &format!("Opening repository failed: {}", error), - ); + repo_handle = match open_repo(&repo_path, repo.worktree_setup) { + Ok(repo) => Some(repo), + Err(error) => { + if !repo.worktree_setup { + if open_repo(&repo_path, true).is_ok() { + print_repo_error( + &repo.name, + "Repo already exists, but is using a worktree setup", + ); + } + } else { + print_repo_error( + &repo.name, + &format!("Opening repository failed: {}", error), + ); + } process::exit(1); - }, - )); + } + }; } else if matches!(&repo.remotes, None) || repo.remotes.as_ref().unwrap().is_empty() { print_repo_action( &repo.name,