summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Aehlig <klaus.aehlig@huawei.com>2024-07-22 17:29:02 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-07-23 17:31:49 +0200
commitaade92f3feba199a9e997aaed8fbc8eb0b610b0a (patch)
tree16b69c50ab4414ca7c0e0c231a84c7e06b79408a
parent1b4917d40e5b4bbfeae5146bc826299bbc27898f (diff)
downloadjustbuild-aade92f3feba199a9e997aaed8fbc8eb0b610b0a.tar.gz
git_commit_map: avoid duplicate creation and fix usage
... as CheckCommitExists returns an optional bool, not a plain one.
-rw-r--r--src/other_tools/root_maps/commit_git_map.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/other_tools/root_maps/commit_git_map.cpp b/src/other_tools/root_maps/commit_git_map.cpp
index 8efd628a..479068e2 100644
--- a/src/other_tools/root_maps/commit_git_map.cpp
+++ b/src/other_tools/root_maps/commit_git_map.cpp
@@ -622,19 +622,22 @@ void EnsureCommit(GitRepoInfo const& repo_info,
auto old_repo = GitRepo::Open(old);
auto no_logging = std::make_shared<AsyncMapConsumerLogger>(
[](auto /*unused*/, auto /*unused*/) {});
- if (old_repo and GitRepo::Open(old)->CheckCommitExists(
- repo_info.hash, no_logging)) {
- TakeCommitFromOlderGeneration(old,
- storage_config,
- repo_root,
- repo_info,
- git_cas,
- critical_git_op_map,
- progress,
- ts,
- ws_setter,
- logger);
- return;
+ if (old_repo) {
+ auto check_result =
+ old_repo->CheckCommitExists(repo_info.hash, no_logging);
+ if (check_result and *check_result) {
+ TakeCommitFromOlderGeneration(old,
+ storage_config,
+ repo_root,
+ repo_info,
+ git_cas,
+ critical_git_op_map,
+ progress,
+ ts,
+ ws_setter,
+ logger);
+ return;
+ }
}
}
}