summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2022-12-23 17:21:03 +0100
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2022-12-23 18:33:09 +0100
commitc9beba5763c98ab0c13e46631aef1e9da1022f0e (patch)
treedc4bc39f03c74a3d87dbe720a36bfddb30dd8a30
parent0374b80dd407d7b35654a01e3c7526b749d3464e (diff)
downloadjustbuild-c9beba5763c98ab0c13e46631aef1e9da1022f0e.tar.gz
Just-MR: Fix wrong commit_git_map key
The subdir is required alongside the commit hash for a valid map key when importing a Git repository into our Git cache.
-rw-r--r--src/other_tools/root_maps/commit_git_map.cpp2
-rw-r--r--src/other_tools/root_maps/commit_git_map.hpp9
2 files changed, 7 insertions, 4 deletions
diff --git a/src/other_tools/root_maps/commit_git_map.cpp b/src/other_tools/root_maps/commit_git_map.cpp
index e8dfeef4..d0b10258 100644
--- a/src/other_tools/root_maps/commit_git_map.cpp
+++ b/src/other_tools/root_maps/commit_git_map.cpp
@@ -136,7 +136,7 @@ void EnsureCommit(GitRepoInfo const& repo_info,
if (is_commit_present == std::nullopt) {
return;
}
- if (not *is_commit_present) {
+ if (not is_commit_present.value()) {
// if commit not there, fetch it
// get refspec for branch
GitOpKey op_key = {{
diff --git a/src/other_tools/root_maps/commit_git_map.hpp b/src/other_tools/root_maps/commit_git_map.hpp
index e032cf65..eb7c26a9 100644
--- a/src/other_tools/root_maps/commit_git_map.hpp
+++ b/src/other_tools/root_maps/commit_git_map.hpp
@@ -27,10 +27,10 @@ struct GitRepoInfo {
std::string hash{}; /* key */
std::string repo_url{};
std::string branch{};
- std::string subdir{};
+ std::string subdir{}; /* key */
[[nodiscard]] auto operator==(const GitRepoInfo& other) const -> bool {
- return hash == other.hash;
+ return hash == other.hash and subdir == other.subdir;
}
};
@@ -39,7 +39,10 @@ template <>
struct hash<GitRepoInfo> {
[[nodiscard]] auto operator()(const GitRepoInfo& ct) const noexcept
-> std::size_t {
- return std::hash<std::string>{}(ct.hash);
+ size_t seed{};
+ hash_combine<std::string>(&seed, ct.hash);
+ hash_combine<std::string>(&seed, ct.subdir);
+ return seed;
}
};
} // namespace std