From d3ce7e1633ec8be6d76e43f7e28b4155c9f06b2a Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Mon, 18 Nov 2024 18:07:24 +0100 Subject: Add RehashGitDigest function --- src/buildtool/execution_api/utils/rehash_utils.cpp | 27 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) (limited to 'src/buildtool/execution_api/utils/rehash_utils.cpp') diff --git a/src/buildtool/execution_api/utils/rehash_utils.cpp b/src/buildtool/execution_api/utils/rehash_utils.cpp index bbaefaeb..c5ca60c2 100644 --- a/src/buildtool/execution_api/utils/rehash_utils.cpp +++ b/src/buildtool/execution_api/utils/rehash_utils.cpp @@ -136,11 +136,11 @@ template TReadCallback> [&target_storage]( std::variant const& data, bool is_exec) -> std::optional { - if (not std::holds_alternative(data)) { - return std::nullopt; - } - return target_storage.CAS().StoreBlob( - std::get(data), is_exec); + return std::visit( + [&target_storage, is_exec](auto const& d) { + return target_storage.CAS().StoreBlob(d, is_exec); + }, + data); }; BazelMsgFactory::TreeStoreFunc store_dir = [&cas = target_storage.CAS()](std::string const& content) { @@ -252,4 +252,21 @@ auto RehashDigest(std::vector const& digests, /*from_git=*/false); } +auto RehashGitDigest(std::vector const& digests, + StorageConfig const& source_config, + StorageConfig const& target_config, + RepositoryConfig const& repo_config) + -> expected, std::string> { + auto read = [&repo_config]( + ArtifactDigest const& digest, + ObjectType /*type*/) -> std::optional { + return repo_config.ReadBlobFromGitCAS(digest.hash()); + }; + return RehashDigestImpl(digests, + source_config, + target_config, + std::move(read), + /*from_git=*/true); +} + } // namespace RehashUtils -- cgit v1.2.3