New semantics for missing context: only the first line of the context is marked as zombie and reconnected to its relatives
latest | ||
master | ||
testing |
files: &mut Vec<(Key<PatchId>, Edge)>) -> bool {
alive.push(a)
line_num,
patch_id,
patch_id,
self.repair_missing_up_context(find_alive, branch, up_context, flag, patch_id, alive, files)?
self.repair_missing_down_context(find_alive, branch, down_context, patch_id, alive)?
let mut has_unknown_children = false;
if k != dest || v.flag | EdgeFlags::FOLDER_EDGE > EdgeFlags::PSEUDO_EDGE | EdgeFlags::FOLDER_EDGE {
has_unknown_children =
v.introduced_by != patch_id && {
let ext = self.external_hash(v.introduced_by).to_owned();
!dependencies.contains(&ext)
};
debug!("child is_unknown({}): {:?} {:?}", line!(), v, has_unknown_children);
if has_unknown_children {
break
if has_unknown_children {
self.repair_missing_up_context(find_alive, branch, dest, flag, patch_id, alive, files)?;
let mut has_unknown_parent = false;
has_unknown_parent = v.introduced_by != patch_id && {
};
debug!("parent is_unknown({}): {:?} {:?}", line!(), v, has_unknown_children);
if has_unknown_parent {
break
if has_unknown_parent {
self.repair_missing_down_context(find_alive, branch, dest, patch_id, alive)?
self.find_alive_ancestors(find_alive, branch, alive, files);
for ancestor in alive.drain(..) {
edge.introduced_by = patch_id.clone();
debug!("repairing up context: {:?} {:?}", context, edge);
self.put_nodes_with_rev(branch, context, edge)?;
edge.introduced_by = patch_id.clone();
debug!("file: repairing up context: {:?} {:?}", key, edge);
self.put_nodes_with_rev(branch, key, edge)?;
edge.introduced_by = patch_id.clone();
debug!("repairing down context: {:?} {:?}", key, edge);
self.put_nodes_with_rev(branch, context, edge)?;
RUST_LOG="libpijul::apply=debug" pijul pull -a --repository b a 2> /tmp/log
cd b
pijul info --debug
cp debug_master /tmp
cd ..
find b >> /tmp/log
cp b/file /tmp/b_file