Skip to content

CI: Create CODEOWNERS validator hook#116646

Merged
Repiteo merged 1 commit into
godotengine:masterfrom
Repiteo:ci/codeowners
Mar 6, 2026
Merged

CI: Create CODEOWNERS validator hook#116646
Repiteo merged 1 commit into
godotengine:masterfrom
Repiteo:ci/codeowners

Conversation

@Repiteo

@Repiteo Repiteo commented Feb 23, 2026

Copy link
Copy Markdown
Contributor

A long, long overdue feature I've wanted for the repo was the ability to validate our CODEOWNERS on-demand. Specifically: as a pre-commit hook. While there was the excellent codeowners ci tool, it didn't have a native pre-commit implementation, nor was it available in Python. This addresses both these points, by reimplementing the relevant logic as a Python script. Now we will know ahead of time if PRs are attempting to add files that would wind up without an owner!

Marking as a draft for the time being, as the initial run of this found that there's currently 211 files without a codeowner! Before merging, we should ensure that each of these get a proper owner:

Details
drivers/accesskit/accessibility_driver_accesskit.cpp
drivers/accesskit/accessibility_driver_accesskit.h
drivers/accesskit/dynwrappers/accesskit-dll_wrap.c
drivers/accesskit/dynwrappers/accesskit-dll_wrap.h
drivers/accesskit/dynwrappers/accesskit-dylib_wrap.c
drivers/accesskit/dynwrappers/accesskit-dylib_wrap.h
drivers/accesskit/dynwrappers/accesskit-so_wrap.c
drivers/accesskit/dynwrappers/accesskit-so_wrap.h
drivers/apple/foundation_helpers.h
drivers/apple/foundation_helpers.mm
drivers/apple/os_log_logger.cpp
drivers/apple/os_log_logger.h
drivers/apple/thread_apple.cpp
drivers/apple/thread_apple.h
drivers/apple_embedded/app.swift
drivers/apple_embedded/app_delegate_service.h
drivers/apple_embedded/app_delegate_service.mm
drivers/apple_embedded/apple_embedded.h
drivers/apple_embedded/apple_embedded.mm
drivers/apple_embedded/bridging_header_apple_embedded.h
drivers/apple_embedded/display_layer_apple_embedded.h
drivers/apple_embedded/display_server_apple_embedded.h
drivers/apple_embedded/display_server_apple_embedded.mm
drivers/apple_embedded/godot_app_delegate.h
drivers/apple_embedded/godot_app_delegate.mm
drivers/apple_embedded/godot_keyboard_input_view.h
drivers/apple_embedded/godot_keyboard_input_view.mm
drivers/apple_embedded/godot_view_apple_embedded.h
drivers/apple_embedded/godot_view_apple_embedded.mm
drivers/apple_embedded/godot_view_controller.h
drivers/apple_embedded/godot_view_controller.mm
drivers/apple_embedded/godot_view_renderer.h
drivers/apple_embedded/godot_view_renderer.mm
drivers/apple_embedded/key_mapping_apple_embedded.h
drivers/apple_embedded/key_mapping_apple_embedded.mm
drivers/apple_embedded/main_utilities.h
drivers/apple_embedded/main_utilities.mm
drivers/apple_embedded/os_apple_embedded.h
drivers/apple_embedded/os_apple_embedded.mm
drivers/apple_embedded/platform_config.h
drivers/apple_embedded/rendering_context_driver_vulkan_apple_embedded.h
drivers/apple_embedded/rendering_context_driver_vulkan_apple_embedded.mm
drivers/apple_embedded/tts_apple_embedded.h
drivers/apple_embedded/tts_apple_embedded.mm
drivers/register_driver_types.cpp
drivers/register_driver_types.h
modules/objectdb_profiler/editor/data_viewers/class_view.cpp
modules/objectdb_profiler/editor/data_viewers/class_view.h
modules/objectdb_profiler/editor/data_viewers/node_view.cpp
modules/objectdb_profiler/editor/data_viewers/node_view.h
modules/objectdb_profiler/editor/data_viewers/object_view.cpp
modules/objectdb_profiler/editor/data_viewers/object_view.h
modules/objectdb_profiler/editor/data_viewers/refcounted_view.cpp
modules/objectdb_profiler/editor/data_viewers/refcounted_view.h
modules/objectdb_profiler/editor/data_viewers/shared_controls.cpp
modules/objectdb_profiler/editor/data_viewers/shared_controls.h
modules/objectdb_profiler/editor/data_viewers/snapshot_view.cpp
modules/objectdb_profiler/editor/data_viewers/snapshot_view.h
modules/objectdb_profiler/editor/data_viewers/summary_view.cpp
modules/objectdb_profiler/editor/data_viewers/summary_view.h
modules/objectdb_profiler/editor/objectdb_profiler_panel.cpp
modules/objectdb_profiler/editor/objectdb_profiler_panel.h
modules/objectdb_profiler/editor/objectdb_profiler_plugin.cpp
modules/objectdb_profiler/editor/objectdb_profiler_plugin.h
modules/objectdb_profiler/editor/snapshot_data.cpp
modules/objectdb_profiler/editor/snapshot_data.h
modules/objectdb_profiler/register_types.cpp
modules/objectdb_profiler/register_types.h
modules/objectdb_profiler/snapshot_collector.cpp
modules/objectdb_profiler/snapshot_collector.h
modules/register_module_types.h
platform/register_platform_apis.h
platform/visionos/README.md
platform/visionos/api/api.cpp
platform/visionos/api/api.h
platform/visionos/display_layer_visionos.h
platform/visionos/display_layer_visionos.mm
platform/visionos/display_server_visionos.h
platform/visionos/display_server_visionos.mm
platform/visionos/doc_classes/EditorExportPlatformVisionOS.xml
platform/visionos/export/export.cpp
platform/visionos/export/export.h
platform/visionos/export/export_plugin.cpp
platform/visionos/export/export_plugin.h
platform/visionos/export/logo.svg
platform/visionos/export/run_icon.svg
platform/visionos/godot_view_visionos.h
platform/visionos/godot_view_visionos.mm
platform/visionos/main_visionos.mm
platform/visionos/os_visionos.h
platform/visionos/os_visionos.mm
platform/visionos/platform_config.h
platform/visionos/platform_thread.h
platform/visionos/visionos.h
scene/property_list_helper.cpp
scene/property_list_helper.h
scene/property_utils.cpp
scene/property_utils.h
scene/register_scene_types.cpp
scene/register_scene_types.h
scene/resources/atlas_texture.cpp
scene/resources/atlas_texture.h
scene/resources/bit_map.cpp
scene/resources/bit_map.h
scene/resources/blit_material.cpp
scene/resources/blit_material.h
scene/resources/bone_map.cpp
scene/resources/bone_map.h
scene/resources/camera_attributes.cpp
scene/resources/camera_attributes.h
scene/resources/camera_texture.cpp
scene/resources/camera_texture.h
scene/resources/canvas_item_material.cpp
scene/resources/canvas_item_material.h
scene/resources/color_palette.cpp
scene/resources/color_palette.h
scene/resources/compositor.cpp
scene/resources/compositor.h
scene/resources/compressed_texture.cpp
scene/resources/compressed_texture.h
scene/resources/curve.cpp
scene/resources/curve.h
scene/resources/curve_texture.cpp
scene/resources/curve_texture.h
scene/resources/dpi_texture.cpp
scene/resources/dpi_texture.h
scene/resources/drawable_texture_2d.cpp
scene/resources/drawable_texture_2d.h
scene/resources/environment.cpp
scene/resources/environment.h
scene/resources/external_texture.cpp
scene/resources/external_texture.h
scene/resources/gradient.cpp
scene/resources/gradient.h
scene/resources/gradient_texture.cpp
scene/resources/gradient_texture.h
scene/resources/image_texture.cpp
scene/resources/image_texture.h
scene/resources/immediate_mesh.cpp
scene/resources/immediate_mesh.h
scene/resources/label_settings.cpp
scene/resources/label_settings.h
scene/resources/material.cpp
scene/resources/material.h
scene/resources/mesh.cpp
scene/resources/mesh.h
scene/resources/mesh_data_tool.compat.inc
scene/resources/mesh_data_tool.cpp
scene/resources/mesh_data_tool.h
scene/resources/mesh_texture.cpp
scene/resources/mesh_texture.h
scene/resources/multimesh.cpp
scene/resources/multimesh.h
scene/resources/navigation_mesh.cpp
scene/resources/navigation_mesh.h
scene/resources/packed_scene.cpp
scene/resources/packed_scene.h
scene/resources/particle_process_material.cpp
scene/resources/particle_process_material.h
scene/resources/physics_material.cpp
scene/resources/physics_material.h
scene/resources/placeholder_textures.cpp
scene/resources/placeholder_textures.h
scene/resources/portable_compressed_texture.cpp
scene/resources/portable_compressed_texture.h
scene/resources/resource_format_text.cpp
scene/resources/resource_format_text.h
scene/resources/skeleton_profile.cpp
scene/resources/skeleton_profile.h
scene/resources/sky.cpp
scene/resources/sky.h
scene/resources/sprite_frames.cpp
scene/resources/sprite_frames.h
scene/resources/style_box.cpp
scene/resources/style_box.h
scene/resources/style_box_flat.cpp
scene/resources/style_box_flat.h
scene/resources/style_box_line.cpp
scene/resources/style_box_line.h
scene/resources/style_box_texture.cpp
scene/resources/style_box_texture.h
scene/resources/surface_tool.cpp
scene/resources/surface_tool.h
scene/resources/syntax_highlighter.cpp
scene/resources/syntax_highlighter.h
scene/resources/texture.cpp
scene/resources/texture.h
scene/resources/texture_rd.cpp
scene/resources/texture_rd.h
scene/resources/theme.cpp
scene/resources/theme.h
scene/resources/video_stream.cpp
scene/resources/video_stream.h
scene/resources/world_2d.cpp
scene/resources/world_2d.h
scene/scene_string_names.h
servers/display/display_server.compat.inc
servers/display/display_server.cpp
servers/display/display_server.h
servers/display/display_server_headless.cpp
servers/display/display_server_headless.h
servers/display/native_menu.cpp
servers/display/native_menu.h
servers/movie_writer/movie_writer.cpp
servers/movie_writer/movie_writer.h
servers/movie_writer/movie_writer_pngwav.cpp
servers/movie_writer/movie_writer_pngwav.h
servers/nav_heap.h
servers/register_server_types.cpp
servers/register_server_types.h
servers/server_wrap_mt_common.h

@Repiteo Repiteo added this to the 4.x milestone Feb 23, 2026
@Repiteo Repiteo force-pushed the ci/codeowners branch 6 times, most recently from b994e12 to 8e840db Compare February 23, 2026 16:25
@AThousandShips

AThousandShips commented Feb 23, 2026

Copy link
Copy Markdown
Member

Note that this overlaps a bit with:

I'd suggest rebasing on that to avoid collisions

@Repiteo

Repiteo commented Feb 23, 2026

Copy link
Copy Markdown
Contributor Author

Indeed; this'll be integrated only after that's merged 👍

EDIT: It'll also need #111046, so the passed files use the correct syntax

@Repiteo

Repiteo commented Feb 23, 2026

Copy link
Copy Markdown
Contributor Author

Following the merge of #116130 and with the addition of a few extra rules, the amount of files without an owner is now 95:

Details
scene/property_list_helper.cpp
scene/property_list_helper.h
scene/property_utils.cpp
scene/property_utils.h
scene/resources/atlas_texture.cpp
scene/resources/atlas_texture.h
scene/resources/bit_map.cpp
scene/resources/bit_map.h
scene/resources/blit_material.cpp
scene/resources/blit_material.h
scene/resources/camera_attributes.cpp
scene/resources/camera_attributes.h
scene/resources/camera_texture.cpp
scene/resources/camera_texture.h
scene/resources/canvas_item_material.cpp
scene/resources/canvas_item_material.h
scene/resources/color_palette.cpp
scene/resources/color_palette.h
scene/resources/compositor.cpp
scene/resources/compositor.h
scene/resources/compressed_texture.cpp
scene/resources/compressed_texture.h
scene/resources/curve.cpp
scene/resources/curve.h
scene/resources/curve_texture.cpp
scene/resources/curve_texture.h
scene/resources/dpi_texture.cpp
scene/resources/dpi_texture.h
scene/resources/drawable_texture_2d.cpp
scene/resources/drawable_texture_2d.h
scene/resources/environment.cpp
scene/resources/environment.h
scene/resources/external_texture.cpp
scene/resources/external_texture.h
scene/resources/gradient.cpp
scene/resources/gradient.h
scene/resources/gradient_texture.cpp
scene/resources/gradient_texture.h
scene/resources/image_texture.cpp
scene/resources/image_texture.h
scene/resources/immediate_mesh.cpp
scene/resources/immediate_mesh.h
scene/resources/label_settings.cpp
scene/resources/label_settings.h
scene/resources/material.cpp
scene/resources/material.h
scene/resources/mesh.cpp
scene/resources/mesh.h
scene/resources/mesh_data_tool.compat.inc
scene/resources/mesh_data_tool.cpp
scene/resources/mesh_data_tool.h
scene/resources/mesh_texture.cpp
scene/resources/mesh_texture.h
scene/resources/multimesh.cpp
scene/resources/multimesh.h
scene/resources/navigation_mesh.cpp
scene/resources/navigation_mesh.h
scene/resources/packed_scene.cpp
scene/resources/packed_scene.h
scene/resources/particle_process_material.cpp
scene/resources/particle_process_material.h
scene/resources/placeholder_textures.cpp
scene/resources/placeholder_textures.h
scene/resources/portable_compressed_texture.cpp
scene/resources/portable_compressed_texture.h
scene/resources/resource_format_text.cpp
scene/resources/resource_format_text.h
scene/resources/sky.cpp
scene/resources/sky.h
scene/resources/sprite_frames.cpp
scene/resources/sprite_frames.h
scene/resources/style_box.cpp
scene/resources/style_box.h
scene/resources/style_box_flat.cpp
scene/resources/style_box_flat.h
scene/resources/style_box_line.cpp
scene/resources/style_box_line.h
scene/resources/style_box_texture.cpp
scene/resources/style_box_texture.h
scene/resources/surface_tool.cpp
scene/resources/surface_tool.h
scene/resources/syntax_highlighter.cpp
scene/resources/syntax_highlighter.h
scene/resources/texture.cpp
scene/resources/texture.h
scene/resources/texture_rd.cpp
scene/resources/texture_rd.h
scene/resources/theme.cpp
scene/resources/theme.h
scene/resources/video_stream.cpp
scene/resources/video_stream.h
scene/resources/world_2d.cpp
scene/resources/world_2d.h
scene/scene_string_names.h
servers/server_wrap_mt_common.h

@Repiteo Repiteo marked this pull request as ready for review March 5, 2026 19:45
@Repiteo Repiteo requested a review from a team as a code owner March 5, 2026 19:45
@Repiteo

Repiteo commented Mar 5, 2026

Copy link
Copy Markdown
Contributor Author

Tackled the last of the stragglers, so every file is now accounted for. I'm not thrilled at using a wildcard for /scene/resources/*, but I think submitting like that is preferable to letting this sit stagnant any longer

@Repiteo Repiteo requested a review from AThousandShips March 5, 2026 19:47
@AThousandShips

Copy link
Copy Markdown
Member

I'll take a proper look tomorrow!

@AThousandShips AThousandShips left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With the one caveat, looked at the validator script and it makes sense, though I'm not sure I fully get it but it seems to work!

Comment thread .github/CODEOWNERS Outdated
@Repiteo Repiteo modified the milestones: 4.x, 4.7 Mar 6, 2026
@Repiteo Repiteo merged commit 992b3ff into godotengine:master Mar 6, 2026
20 checks passed
@Repiteo Repiteo deleted the ci/codeowners branch March 6, 2026 18:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants