From e16d7d8c07a20f5ee0b4111808680bbcfd7df9ac Mon Sep 17 00:00:00 2001 From: Ogulcan Celik Date: Tue, 28 Jul 2026 15:34:13 +0300 Subject: fix: preserve linked worktree workspace labels --- src/workspace.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/workspace.rs') diff --git a/src/workspace.rs b/src/workspace.rs index 73a46d25..bb079b96 100644 --- a/src/workspace.rs +++ b/src/workspace.rs @@ -65,7 +65,7 @@ pub(crate) fn discover_workspace_git_identity( let space = git_space_metadata(cwd); let auto_label = space .as_ref() - .map(|space| space.label.clone()) + .map(|space| self::git::automatic_workspace_label(cwd, &space.repo_root)) .unwrap_or_else(|| fallback_label_from_cwd(cwd)); let status_cache_key = space .as_ref() @@ -1677,6 +1677,22 @@ mod tests { std::fs::remove_dir_all(root).expect("remove test repo"); } + #[test] + fn linked_worktree_auto_label_uses_checkout_name_not_repo_name() { + let (base, repo, checkout) = + self::git::test_support::create_repo_with_linked_worktree("linked-auto-label"); + + let (space, auto_label, _) = discover_workspace_git_identity(&checkout); + + assert_eq!( + space.unwrap().repo_name, + repo.file_name().unwrap().to_str().unwrap() + ); + assert_eq!(auto_label, checkout.file_name().unwrap().to_str().unwrap()); + + std::fs::remove_dir_all(base).unwrap(); + } + #[test] fn display_name_reads_cached_identity_without_rechecking_filesystem() { let stamp = std::time::SystemTime::now() -- cgit v1.2.3