From d3ec6b7294d44e1cd524ac5bbb9048d415950e99 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Thu, 4 Apr 2024 16:36:48 +0200 Subject: GitRepo: Add method to keep tree alive by tagging Also adds an appropriate test for this method. --- src/buildtool/file_system/git_repo.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/buildtool/file_system/git_repo.hpp') diff --git a/src/buildtool/file_system/git_repo.hpp b/src/buildtool/file_system/git_repo.hpp index 60353a00..54706e41 100644 --- a/src/buildtool/file_system/git_repo.hpp +++ b/src/buildtool/file_system/git_repo.hpp @@ -183,6 +183,15 @@ class GitRepo { anon_logger_ptr const& logger) noexcept -> bool; + /// \brief Ensure given tree is kept alive via a tag. It is expected that + /// the tree is part of the repository already. + /// Only possible with real repository and thus non-thread-safe. + /// Returns success flag. + /// It guarantees the logger is called exactly once with fatal if failure. + [[nodiscard]] auto KeepTree(std::string const& tree_id, + std::string const& message, + anon_logger_ptr const& logger) noexcept -> bool; + /// \brief Get the tree id of a subtree given the root commit /// Calling it from a fake repository allows thread-safe use. /// Returns an error + data union, where at index 0 is a flag stating the -- cgit v1.2.3