From 1f344bd93258fac03b6ea82c15dd5dad41ee20fa Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Mon, 29 Aug 2022 11:35:15 +0200 Subject: Git CAS: Move Git tree ops to fake repo wrapper class --- src/buildtool/file_system/git_tree.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/buildtool/file_system/git_tree.cpp') diff --git a/src/buildtool/file_system/git_tree.cpp b/src/buildtool/file_system/git_tree.cpp index 6e65ecd6..db391b7e 100644 --- a/src/buildtool/file_system/git_tree.cpp +++ b/src/buildtool/file_system/git_tree.cpp @@ -68,8 +68,14 @@ auto GitTree::Read(gsl::not_null const& cas, std::string const& tree_id) noexcept -> std::optional { if (auto raw_id = FromHexString(tree_id)) { - if (auto entries = cas->ReadTree(*raw_id)) { - return GitTree::FromEntries(cas, std::move(*entries), *raw_id); + auto repo = GitRepo::Open(cas); + if (repo != std::nullopt) { + if (auto entries = repo->ReadTree(*raw_id)) { + return GitTree::FromEntries(cas, std::move(*entries), *raw_id); + } + } + else { + return ::std::nullopt; } } return std::nullopt; @@ -113,7 +119,11 @@ auto GitTreeEntry::Blob() const noexcept -> std::optional { auto GitTreeEntry::Tree() const& noexcept -> std::optional const& { return tree_cached_.SetOnceAndGet([this]() -> std::optional { if (IsTree()) { - if (auto entries = cas_->ReadTree(raw_id_)) { + auto repo = GitRepo::Open(cas_); + if (repo == std::nullopt) { + return std::nullopt; + } + if (auto entries = repo->ReadTree(raw_id_)) { return GitTree::FromEntries(cas_, std::move(*entries), raw_id_); } } -- cgit v1.2.3