Change summary
crates/worktree/src/worktree.rs | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
Detailed changes
@@ -3826,7 +3826,8 @@ impl BackgroundScanner {
.await;
// Ensure that .git and .gitignore are processed first.
- child_paths.sort_unstable();
+ swap_to_front(&mut child_paths, *GITIGNORE);
+ swap_to_front(&mut child_paths, *DOT_GIT);
for child_abs_path in child_paths {
let child_abs_path: Arc<Path> = child_abs_path.into();
@@ -4620,6 +4621,16 @@ impl BackgroundScanner {
}
}
+fn swap_to_front(child_paths: &mut Vec<PathBuf>, file: &OsStr) {
+ let position = child_paths
+ .iter()
+ .position(|path| path.file_name().unwrap() == file);
+ if let Some(position) = position {
+ let temp = child_paths.remove(position);
+ child_paths.insert(0, temp);
+ }
+}
+
fn char_bag_for_path(root_char_bag: CharBag, path: &Path) -> CharBag {
let mut result = root_char_bag;
result.extend(