From e63a782a71a0edbe67b035b03d41043009774643 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Thu, 16 May 2024 15:02:05 +0200 Subject: FileRoot: Fix parsing of ignore-special Git tree roots When populating the GitTree instance stored in a Git tree-type FileRoot with the ignore-special flag set, the GitTree instance would be created with an empty raw_id_ field, signaling that some of the entries might have been skipped and thus the root tree id is not anymore in a one-to-one correspondence with the stored list of entries. This however caused FileRoot instances with missing tree id information. This commit fixes the issue by always storing the raw_id_ field as the root id of the Git tree, as well as clarifying the relationship between this field and the ignore_special_ flag, including refactoring the tree id getters. (cherry picked from 06336198a38ffaec6c35df34580391579a7a7b22) --- src/buildtool/execution_engine/executor/executor.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/buildtool/execution_engine/executor/executor.hpp') diff --git a/src/buildtool/execution_engine/executor/executor.hpp b/src/buildtool/execution_engine/executor/executor.hpp index f7afb077..b7ca034c 100644 --- a/src/buildtool/execution_engine/executor/executor.hpp +++ b/src/buildtool/execution_engine/executor/executor.hpp @@ -269,7 +269,8 @@ class ExecutorImpl { Logger::Log(LogLevel::Trace, [&tree]() { std::ostringstream oss{}; - oss << "upload directory content of " << tree.Hash() << std::endl; + oss << "upload directory content of " << tree.FileRootHash() + << std::endl; for (auto const& [path, entry] : tree) { oss << fmt::format(" - {}: {}", path, entry->Hash()) << std::endl; @@ -344,7 +345,7 @@ class ExecutorImpl { if (not VerifyOrUploadTree(api, *tree)) { Logger::Log(LogLevel::Error, "failed to verifyorupload git tree {} [{}]", - tree->Hash(), + tree->FileRootHash(), hash); return false; } -- cgit v1.2.3