mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
Fix collab tests
This commit is contained in:
parent
95a413847a
commit
31a4acf98a
@ -2400,11 +2400,6 @@ impl BackgroundScannerState {
|
||||
}
|
||||
|
||||
fn reload_repositories(&mut self, dot_git_dirs_to_reload: &HashSet<PathBuf>, fs: &dyn Fs) {
|
||||
if dot_git_dirs_to_reload.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
log::debug!("reloading repositories: {dot_git_dirs_to_reload:?}");
|
||||
let scan_id = self.snapshot.scan_id;
|
||||
for dot_git_dir in dot_git_dirs_to_reload {
|
||||
// If there is already a repository for this .git directory, reload
|
||||
@ -3310,16 +3305,18 @@ impl BackgroundScanner {
|
||||
abs_paths.retain(|abs_path| {
|
||||
let snapshot = &self.state.lock().snapshot;
|
||||
{
|
||||
let mut is_git_related = false;
|
||||
if let Some(dot_git_dir) = abs_path
|
||||
.ancestors()
|
||||
.find(|ancestor| ancestor.file_name() == Some(&*DOT_GIT))
|
||||
{
|
||||
let dog_git_path = dot_git_dir
|
||||
let dot_git_path = dot_git_dir
|
||||
.strip_prefix(&root_canonical_path)
|
||||
.ok()
|
||||
.map(|path| path.to_path_buf())
|
||||
.unwrap_or_else(|| dot_git_dir.to_path_buf());
|
||||
dot_git_paths_to_reload.insert(dog_git_path.to_path_buf());
|
||||
dot_git_paths_to_reload.insert(dot_git_path.to_path_buf());
|
||||
is_git_related = true;
|
||||
}
|
||||
|
||||
let relative_path: Arc<Path> =
|
||||
@ -3351,7 +3348,9 @@ impl BackgroundScanner {
|
||||
}
|
||||
}
|
||||
if excluded_file_event {
|
||||
log::debug!("ignoring FS event for excluded path {relative_path:?}");
|
||||
if !is_git_related {
|
||||
log::debug!("ignoring FS event for excluded path {relative_path:?}");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -3360,31 +3359,39 @@ impl BackgroundScanner {
|
||||
}
|
||||
});
|
||||
|
||||
if relative_paths.is_empty() {
|
||||
if dot_git_paths_to_reload.is_empty() && relative_paths.is_empty() {
|
||||
return;
|
||||
}
|
||||
|
||||
log::debug!("received fs events {:?}", relative_paths);
|
||||
if !relative_paths.is_empty() {
|
||||
log::debug!("received fs events {:?}", relative_paths);
|
||||
|
||||
let (scan_job_tx, scan_job_rx) = channel::unbounded();
|
||||
self.reload_entries_for_paths(
|
||||
root_path,
|
||||
root_canonical_path,
|
||||
&relative_paths,
|
||||
abs_paths,
|
||||
Some(scan_job_tx.clone()),
|
||||
)
|
||||
.await;
|
||||
drop(scan_job_tx);
|
||||
self.scan_dirs(false, scan_job_rx).await;
|
||||
let (scan_job_tx, scan_job_rx) = channel::unbounded();
|
||||
self.reload_entries_for_paths(
|
||||
root_path,
|
||||
root_canonical_path,
|
||||
&relative_paths,
|
||||
abs_paths,
|
||||
Some(scan_job_tx.clone()),
|
||||
)
|
||||
.await;
|
||||
drop(scan_job_tx);
|
||||
self.scan_dirs(false, scan_job_rx).await;
|
||||
|
||||
let (scan_job_tx, scan_job_rx) = channel::unbounded();
|
||||
self.update_ignore_statuses(scan_job_tx).await;
|
||||
self.scan_dirs(false, scan_job_rx).await;
|
||||
let (scan_job_tx, scan_job_rx) = channel::unbounded();
|
||||
self.update_ignore_statuses(scan_job_tx).await;
|
||||
self.scan_dirs(false, scan_job_rx).await;
|
||||
}
|
||||
|
||||
{
|
||||
let mut state = self.state.lock();
|
||||
state.reload_repositories(&dot_git_paths_to_reload, self.fs.as_ref());
|
||||
if !dot_git_paths_to_reload.is_empty() {
|
||||
if relative_paths.is_empty() {
|
||||
state.snapshot.scan_id += 1;
|
||||
}
|
||||
log::debug!("reloading repositories: {dot_git_paths_to_reload:?}");
|
||||
state.reload_repositories(&dot_git_paths_to_reload, self.fs.as_ref());
|
||||
}
|
||||
state.snapshot.completed_scan_id = state.snapshot.scan_id;
|
||||
for (_, entry_id) in mem::take(&mut state.removed_entry_ids) {
|
||||
state.scanned_dirs.remove(&entry_id);
|
||||
|
Loading…
Reference in New Issue
Block a user