aboutsummaryrefslogtreecommitdiff
path: root/src/workspace.rs
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-07-28 15:34:13 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-07-28 15:34:13 +0300
commite16d7d8c07a20f5ee0b4111808680bbcfd7df9ac (patch)
tree2c5c338c6096deaad1487b4b77e71d671e30b842 /src/workspace.rs
parent81f355fadac7d0d45b077dfc28f9f679add6bbb6 (diff)
fix: preserve linked worktree workspace labels
Diffstat (limited to 'src/workspace.rs')
-rw-r--r--src/workspace.rs18
1 files changed, 17 insertions, 1 deletions
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()
@@ -1678,6 +1678,22 @@ mod tests {
}
#[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()
.duration_since(std::time::UNIX_EPOCH)