in focus/internals/src/lib/index/content_hash.rs [447:471]
fn find_load_dependencies(ctx: &HashContext, tree: &git2::Tree) -> Result<BTreeSet<Label>> {
trace!(?tree, "Finding load dependencies");
if let Some(result) = ctx.caches.borrow().load_dependencies_cache.get(&tree.id()) {
return Ok(result.clone());
}
let mut result = BTreeSet::new();
for tree_entry in tree {
if is_tree_entry_relevant_to_build_graph(&tree_entry) {
let deps = extract_load_statements_from_tree_entry(ctx, &tree_entry)?;
result.extend(deps);
}
}
if let Some(old_value) = ctx
.caches
.borrow_mut()
.load_dependencies_cache
.insert(tree.id(), result.clone())
{
if old_value != result {
error!(key = ?tree.id(), ?old_value, new_value = ?result, "Non-deterministic content hashing for load dependencies");
}
}
Ok(result)
}