Update the filtering logic to properly handle directories with .gdignore files.

This commit is contained in:
Fredia Huya-Kouadio 2021-02-21 21:34:27 -08:00
parent 4f891b7060
commit 48108444f1
4 changed files with 21 additions and 6 deletions

View file

@ -471,6 +471,10 @@ void EditorExportPlatform::_edit_files_with_filter(DirAccess *da, const Vector<S
String dir = dirs[i]; String dir = dirs[i];
if (dir.begins_with(".")) if (dir.begins_with("."))
continue; continue;
if (EditorFileSystem::_should_skip_directory(cur_dir + dir))
continue;
da->change_dir(dir); da->change_dir(dir);
_edit_files_with_filter(da, p_filters, r_list, exclude); _edit_files_with_filter(da, p_filters, r_list, exclude);
da->change_dir(".."); da->change_dir("..");

View file

@ -684,9 +684,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
if (f.begins_with(".")) // Ignore special and . / .. if (f.begins_with(".")) // Ignore special and . / ..
continue; continue;
if (FileAccess::exists(cd.plus_file(f).plus_file("project.godot"))) // skip if another project inside this if (_should_skip_directory(cd.plus_file(f)))
continue;
if (FileAccess::exists(cd.plus_file(f).plus_file(".gdignore"))) // skip if another project inside this
continue; continue;
dirs.push_back(f); dirs.push_back(f);
@ -886,9 +884,7 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
int idx = p_dir->find_dir_index(f); int idx = p_dir->find_dir_index(f);
if (idx == -1) { if (idx == -1) {
if (FileAccess::exists(cd.plus_file(f).plus_file("project.godot"))) // skip if another project inside this if (_should_skip_directory(cd.plus_file(f)))
continue;
if (FileAccess::exists(cd.plus_file(f).plus_file(".gdignore"))) // skip if another project inside this
continue; continue;
EditorFileSystemDirectory *efd = memnew(EditorFileSystemDirectory); EditorFileSystemDirectory *efd = memnew(EditorFileSystemDirectory);
@ -2024,6 +2020,16 @@ Error EditorFileSystem::_resource_import(const String &p_path) {
return OK; return OK;
} }
bool EditorFileSystem::_should_skip_directory(const String &p_path) {
if (FileAccess::exists(p_path.plus_file("project.godot"))) // skip if another project inside this
return true;
if (FileAccess::exists(p_path.plus_file(".gdignore"))) // skip if a `.gdignore` file is inside this
return true;
return false;
}
bool EditorFileSystem::is_group_file(const String &p_path) const { bool EditorFileSystem::is_group_file(const String &p_path) const {
return group_file_cache.has(p_path); return group_file_cache.has(p_path);
} }

View file

@ -275,6 +275,8 @@ public:
bool is_group_file(const String &p_path) const; bool is_group_file(const String &p_path) const;
void move_group_file(const String &p_path, const String &p_new_path); void move_group_file(const String &p_path, const String &p_new_path);
static bool _should_skip_directory(const String &p_path);
EditorFileSystem(); EditorFileSystem();
~EditorFileSystem(); ~EditorFileSystem();
}; };

View file

@ -2774,6 +2774,9 @@ public:
print_verbose("- custom build enabled: " + bool_to_string(use_custom_build)); print_verbose("- custom build enabled: " + bool_to_string(use_custom_build));
print_verbose("- apk expansion enabled: " + bool_to_string(apk_expansion)); print_verbose("- apk expansion enabled: " + bool_to_string(apk_expansion));
print_verbose("- enabled abis: " + String(",").join(enabled_abis)); print_verbose("- enabled abis: " + String(",").join(enabled_abis));
print_verbose("- export filter: " + itos(p_preset->get_export_filter()));
print_verbose("- include filter: " + p_preset->get_include_filter());
print_verbose("- exclude filter: " + p_preset->get_exclude_filter());
Ref<Image> splash_image; Ref<Image> splash_image;
Ref<Image> splash_bg_color_image; Ref<Image> splash_bg_color_image;