From 7571f74dbc53e9b4fe3b9000662ca686960db78e Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Mon, 23 Sep 2024 12:09:44 +0200 Subject: StorageUtils: Add generation-aware rehashing ID file map Such a file could be used to store mappings of digests from CAS or Git cache to digests of different hash type that represent same content. --- src/buildtool/storage/fs_utils.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/buildtool/storage/fs_utils.cpp') diff --git a/src/buildtool/storage/fs_utils.cpp b/src/buildtool/storage/fs_utils.cpp index 171a5d1c..05883814 100644 --- a/src/buildtool/storage/fs_utils.cpp +++ b/src/buildtool/storage/fs_utils.cpp @@ -104,6 +104,16 @@ auto GetResolvedTreeIDFile(StorageConfig const& storage_config, tree_hash; } +auto GetRehashIDFile(StorageConfig const& storage_config, + HashFunction::Type target_hash_type, + std::string const& hash, + bool from_git, + std::size_t generation) noexcept -> std::filesystem::path { + return storage_config.GenerationCacheRoot(generation) / + fmt::format("to-{}", ToString(target_hash_type)) / + (from_git ? "from-git" : "from-cas") / hash; +} + auto WriteTreeIDFile(std::filesystem::path const& tree_id_file, std::string const& tree_id) noexcept -> bool { // needs to be done safely, so use the rename trick -- cgit v1.2.3