summaryrefslogtreecommitdiff
path: root/src/buildtool/file_system/git_repo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/file_system/git_repo.cpp')
-rw-r--r--src/buildtool/file_system/git_repo.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/buildtool/file_system/git_repo.cpp b/src/buildtool/file_system/git_repo.cpp
index 3383f1c2..0b59ba80 100644
--- a/src/buildtool/file_system/git_repo.cpp
+++ b/src/buildtool/file_system/git_repo.cpp
@@ -2065,12 +2065,9 @@ auto GitRepo::CreateShallowTree(tree_entries_t const& entries) noexcept
for (auto const& entry : std::filesystem::directory_iterator{dir}) {
if (auto type = FileSystemManager::Type(entry.path(),
/*allow_upwards=*/true)) {
- if (not read_and_store_entry(entry.path().filename(), *type)) {
- std::invoke(*logger,
- fmt::format("could not read and store to ODB "
- "subdir entry {}",
- entry.path().string()),
- /*fatal=*/true);
+ if (not read_and_store_entry(
+ entry.path().filename(), *type, logger)) {
+ // logging with fatal already handled
return false;
}
}
@@ -2101,8 +2098,10 @@ auto GitRepo::CreateTreeFromDirectory(std::filesystem::path const& dir,
return std::nullopt;
#else
tree_entries_t entries{};
- auto dir_read_and_store = [this, &entries, dir, logger](auto name,
- auto type) {
+ StoreDirEntryFunc dir_read_and_store =
+ [this, &entries, dir](std::filesystem::path const& name,
+ ObjectType type,
+ anon_logger_ptr const& logger) -> bool {
try {
const auto full_name = dir / name;
if (IsTreeObject(type)) {
@@ -2113,10 +2112,7 @@ auto GitRepo::CreateTreeFromDirectory(std::filesystem::path const& dir,
ObjectType::Tree);
return true;
}
- std::invoke(
- *logger,
- fmt::format("failed creating tree {}", full_name.string()),
- /*fatal=*/true);
+ // logging with fatal already handled
return false;
}
// for non-tree entries, read content and write it as a blob to the
@@ -2147,8 +2143,16 @@ auto GitRepo::CreateTreeFromDirectory(std::filesystem::path const& dir,
};
if (ReadDirectory(dir, dir_read_and_store, logger)) {
- return CreateTree(entries);
+ if (auto tree = CreateTree(entries)) {
+ return tree;
+ }
+ std::invoke(
+ *logger,
+ fmt::format("failed to create tree from entries of directory {}",
+ dir.string()),
+ /*fatal=*/true);
}
+ // logging with fatal already handled
return std::nullopt;
#endif // BOOTSTRAP_BUILD_TOOL
}