From 6b31a88acbe6a6556e36f838b914a82879949811 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Thu, 5 Jun 2025 10:31:45 +0200 Subject: GitRepo: Fix wrong handling of fatal logging ...in creating Git tree from filesystem directory. --- src/buildtool/file_system/git_repo.hpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/buildtool/file_system/git_repo.hpp') diff --git a/src/buildtool/file_system/git_repo.hpp b/src/buildtool/file_system/git_repo.hpp index c559cbba..3fcbbf83 100644 --- a/src/buildtool/file_system/git_repo.hpp +++ b/src/buildtool/file_system/git_repo.hpp @@ -361,13 +361,17 @@ class GitRepo { /// \brief Open real repository at given location. explicit GitRepo(std::filesystem::path const& repo_path) noexcept; - using StoreDirEntryFunc = - std::function; + /// \brief Function type handling directory entries read from filesystem. + /// \returns Success flag. Must guarantee that the logger is called exactly + /// once with fatal if returning false. + using StoreDirEntryFunc = std::function< + bool(std::filesystem::path const&, ObjectType, anon_logger_ptr const&)>; /// \brief Helper function to read the entries of a filesystem subdirectory /// and store them to the ODB. It is a modified version of the same-named /// function from FileSystemManager which accepts a subdir and a specific /// logger instead of the default. + /// It guarantees the logger is called exactly once with fatal if failure. [[nodiscard]] static auto ReadDirectory( std::filesystem::path const& dir, StoreDirEntryFunc const& read_and_store_entry, @@ -376,6 +380,7 @@ class GitRepo { /// \brief Create a tree from the content of a directory by recursively /// adding its entries to the object database. /// \return The raw id of the tree. + /// It guarantees the logger is called exactly once with fatal if failure. [[nodiscard]] auto CreateTreeFromDirectory( std::filesystem::path const& dir, anon_logger_ptr const& logger) noexcept -> std::optional; -- cgit v1.2.3