summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/git/git_api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/git/git_api.cpp')
-rw-r--r--src/buildtool/execution_api/git/git_api.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/buildtool/execution_api/git/git_api.cpp b/src/buildtool/execution_api/git/git_api.cpp
index 231e717a..2c083e64 100644
--- a/src/buildtool/execution_api/git/git_api.cpp
+++ b/src/buildtool/execution_api/git/git_api.cpp
@@ -81,7 +81,8 @@ auto GitApi::RetrieveToPaths(
}
}
else {
- auto blob = repo_config_.ReadBlobFromGitCAS(info.digest.hash());
+ auto blob = repo_config_.ReadBlobFromGitCAS(
+ info.digest.hash(), /*is_symlink=*/IsSymlinkObject(info.type));
if (not blob) {
return false;
}
@@ -141,7 +142,8 @@ auto GitApi::RetrieveToFds(
}
}
else {
- auto blob = repo_config_.ReadBlobFromGitCAS(info.digest.hash());
+ auto blob = repo_config_.ReadBlobFromGitCAS(
+ info.digest.hash(), /*is_symlink=*/IsSymlinkObject(info.type));
if (not blob) {
Logger::Log(LogLevel::Debug,
"Blob {} not known to git",
@@ -217,7 +219,9 @@ auto GitApi::RetrieveToCas(
content = tree->RawData();
}
else {
- content = repo_config_.ReadBlobFromGitCAS(info->digest.hash());
+ content = repo_config_.ReadBlobFromGitCAS(
+ info->digest.hash(),
+ /*is_symlink=*/IsSymlinkObject(info->type));
}
if (not content) {
return false;
@@ -248,10 +252,14 @@ auto GitApi::RetrieveToCas(
auto GitApi::RetrieveToMemory(Artifact::ObjectInfo const& artifact_info)
const noexcept -> std::optional<std::string> {
- return repo_config_.ReadBlobFromGitCAS(artifact_info.digest.hash());
+ return repo_config_.ReadBlobFromGitCAS(
+ artifact_info.digest.hash(),
+ /*is_symlink=*/IsSymlinkObject(artifact_info.type));
}
auto GitApi::IsAvailable(ArtifactDigest const& digest) const noexcept -> bool {
- return repo_config_.ReadBlobFromGitCAS(digest.hash(), LogLevel::Trace)
- .has_value();
+ return repo_config_
+ .ReadBlobFromGitCAS(
+ digest.hash(), /*is_symlink=*/false, LogLevel::Trace)
+ .has_value(); // allow invalid symlink if just to check existence
}