summaryrefslogtreecommitdiff
path: root/src/buildtool/file_system/git_tree.cpp
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2024-05-16 15:02:05 +0200
committerKlaus Aehlig <klaus.aehlig@huawei.com>2024-05-21 15:09:49 +0200
commite63a782a71a0edbe67b035b03d41043009774643 (patch)
tree1401805df2fbe2f1c33d95899e9a71c2af51c27f /src/buildtool/file_system/git_tree.cpp
parent9e888fe80a835b084a28f7b9cb4b5759b4eaf47a (diff)
downloadjustbuild-e63a782a71a0edbe67b035b03d41043009774643.tar.gz
FileRoot: Fix parsing of ignore-special Git tree roots
When populating the GitTree instance stored in a Git tree-type FileRoot with the ignore-special flag set, the GitTree instance would be created with an empty raw_id_ field, signaling that some of the entries might have been skipped and thus the root tree id is not anymore in a one-to-one correspondence with the stored list of entries. This however caused FileRoot instances with missing tree id information. This commit fixes the issue by always storing the raw_id_ field as the root id of the Git tree, as well as clarifying the relationship between this field and the ignore_special_ flag, including refactoring the tree id getters. (cherry picked from 06336198a38ffaec6c35df34580391579a7a7b22)
Diffstat (limited to 'src/buildtool/file_system/git_tree.cpp')
-rw-r--r--src/buildtool/file_system/git_tree.cpp11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/buildtool/file_system/git_tree.cpp b/src/buildtool/file_system/git_tree.cpp
index a5a3262d..e7a2f41d 100644
--- a/src/buildtool/file_system/git_tree.cpp
+++ b/src/buildtool/file_system/git_tree.cpp
@@ -88,12 +88,10 @@ auto GitTree::Read(gsl::not_null<GitCASPtr> const& cas,
check_symlinks,
/*is_hex_id=*/false,
ignore_special)) {
- // the raw_id value is NOT recomputed when ignore_special==true,
- // so we set it to empty to signal that it should not be used!
- return GitTree::FromEntries(cas,
- std::move(*entries),
- ignore_special ? "" : *raw_id,
- ignore_special);
+ // NOTE: the raw_id value is NOT recomputed when
+ // ignore_special==true.
+ return GitTree::FromEntries(
+ cas, std::move(*entries), *raw_id, ignore_special);
}
}
else {
@@ -164,7 +162,6 @@ auto GitTreeEntry::Tree(bool ignore_special) const& noexcept
check_symlinks,
/*is_hex_id=*/false,
ignore_special)) {
- // the raw_id value is not used when ignore_special==true
return GitTree::FromEntries(
cas_, std::move(*entries), raw_id_, ignore_special);
}