summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/file_system/TARGETS2
-rw-r--r--src/buildtool/file_system/git_repo.cpp17
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));
}
}