Do not panic on non-worktree file indexing

Kirill Bulatov created

Change summary

crates/project/src/worktree.rs | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)

Detailed changes

crates/project/src/worktree.rs 🔗

@@ -963,12 +963,19 @@ impl LocalWorktree {
             let mut index_task = None;
             let snapshot = this.read_with(&cx, |this, _| this.as_local().unwrap().snapshot());
             if let Some(repo) = snapshot.repository_for_path(&path) {
-                let repo_path = repo.work_directory.relativize(&snapshot, &path).unwrap();
-                if let Some(repo) = snapshot.git_repositories.get(&*repo.work_directory) {
-                    let repo = repo.repo_ptr.clone();
-                    index_task = Some(
-                        cx.background()
-                            .spawn(async move { repo.lock().load_index_text(&repo_path) }),
+                if let Some(repo_path) = repo.work_directory.relativize(&snapshot, &path) {
+                    if let Some(repo) = snapshot.git_repositories.get(&*repo.work_directory) {
+                        let repo = repo.repo_ptr.clone();
+                        index_task = Some(
+                            cx.background()
+                                .spawn(async move { repo.lock().load_index_text(&repo_path) }),
+                        );
+                    }
+                } else {
+                    log::warn!(
+                        "Skipping loading index text from path {:?} is not in repository {:?}",
+                        path,
+                        repo.work_directory,
                     );
                 }
             }