diff options
-rw-r--r-- | src/buildtool/file_system/TARGETS | 2 | ||||
-rw-r--r-- | src/buildtool/file_system/git_repo.cpp | 17 |
2 files changed, 16 insertions, 3 deletions
diff --git a/src/buildtool/file_system/TARGETS b/src/buildtool/file_system/TARGETS index 9d70f7d8..aeefb7f7 100644 --- a/src/buildtool/file_system/TARGETS +++ b/src/buildtool/file_system/TARGETS @@ -135,6 +135,8 @@ , ["src/utils/cpp", "hex_string"] , ["src/utils/cpp", "gsl"] , ["src/buildtool/file_system", "file_system_manager"] + , ["src/buildtool/common", "artifact_digest_factory"] + , ["src/buildtool/crypto", "hash_function"] ] , "cflags": ["-pthread"] } diff --git a/src/buildtool/file_system/git_repo.cpp b/src/buildtool/file_system/git_repo.cpp index b4c06224..f2f7b042 100644 --- a/src/buildtool/file_system/git_repo.cpp +++ b/src/buildtool/file_system/git_repo.cpp @@ -22,6 +22,8 @@ #include <thread> #include <unordered_set> +#include "src/buildtool/common/artifact_digest_factory.hpp" +#include "src/buildtool/crypto/hash_function.hpp" #include "src/buildtool/file_system/file_system_manager.hpp" #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/logging/logger.hpp" @@ -1851,9 +1853,18 @@ auto GitRepo::ReadTree(std::string const& id, [](tree_entry_t const& item) { return IsSymlinkObject(item.type); })) { - symlinks.emplace_back(ToHexString(entry.first), - /*size=*/0, - /*is_tree=*/false); + auto digest = ArtifactDigestFactory::Create( + HashFunction::Type::GitSHA1, + ToHexString(entry.first), + /*size=*/0, + /*is_tree=*/false); + if (not digest) { + Logger::Log(LogLevel::Debug, + "Conversion error in GitRepo:\n {}", + std::move(digest).error()); + return std::nullopt; + } + symlinks.emplace_back(*std::move(digest)); } } |