Fixing known patches in deleted contexts
Dependencies
- [2]
ZDK3GNDBTag transactions (including a massive refactoring of errors) - [3]
422NG2MTFixing a confusion on filename conflicts, where some names could be mistakenly treated as zombies - [4]
5SLOJYHGFixing the Git feature - [5]
HMMMKONLFixing alive vertices - [6]
6YMDOZIBRefactoring apply - [7]
GHO6DWPIRefactoring iterators - [8]
43AJ37IXGetting rid of edge validation, which does not work for zombie conflicts - [9]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [10]
GVQ7YSEDChecking for dependencies even for a local change - [11]
VO5OQW4WRemoving anyhow in libpijul - [12]
IXC43DSHFixing a bug in unrecord - [13]
I52XSRUHMassive cleanup, and simplification - [14]
YN63NUZOSanakirja 1.0 - [15]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [16]
I24UEJQLVarious post-fire fixes
Change contents
- edit in libpijul/src/unrecord/mod.rs at line 180
change, - edit in libpijul/src/unrecord/mod.rs at line 391
change: &Change, - edit in libpijul/src/unrecord/mod.rs at line 434
let hash: Hash = (*txn.get_external(&change_id).unwrap().unwrap()).into(); - replacement in libpijul/src/unrecord/mod.rs at line 445
|h| change.knows(h),|h| {if edge.previous.contains(EdgeFlags::DELETED) {// When reintroducing a deleted flag, check whether// the re-introduction patch knows about the alive// edges around the target.changes.knows(edge.introduced_by.as_ref().unwrap_or(&hash), h).unwrap()} else {// When the edge we are re-introducing is not a// deletion edge, this check isn't actually used: the// only zombies in that case are from a deleted// context, and these aren't detected with known// patches.true}}, - replacement in libpijul/src/apply.rs at line 176
Ok(apply_change_to_channel(txn, channel, internal, &hash, &change, workspace).map_err(ApplyError::LocalChange)?,Ok(apply_change_to_channel(txn,channel,&mut |h| changes.knows(h, hash).unwrap(),internal,&hash,&change,workspace, - edit in libpijul/src/apply.rs at line 185
.map_err(ApplyError::LocalChange)?) - replacement in libpijul/src/apply.rs at line 239
apply_change_to_channel(txn, channel, internal, &hash, &change, workspace).map_err(ApplyError::LocalChange)?;apply_change_to_channel(txn,channel,&mut |h| changes.knows(h, &hash).unwrap(),internal,&hash,&change,workspace,).map_err(ApplyError::LocalChange)?; - replacement in libpijul/src/apply.rs at line 299
fn apply_change_to_channel<T: ChannelMutTxnT + TreeTxnT>(fn apply_change_to_channel<T: ChannelMutTxnT + TreeTxnT, F: FnMut(&Hash) -> bool>( - edit in libpijul/src/apply.rs at line 302
changes: &mut F, - replacement in libpijul/src/apply.rs at line 323[4.949433]→[4.125802:125846](∅→∅),[4.125846]→[4.64950:65039](∅→∅),[4.65039]→[4.125932:125950](∅→∅),[4.125932]→[4.125932:125950](∅→∅)
Atom::NewVertex(ref n) => {put_newvertex(txn, T::graph_mut(channel), change, ws, change_id, n)?}Atom::NewVertex(ref n) => put_newvertex(txn,T::graph_mut(channel),changes,change,ws,change_id,n,)?, - replacement in libpijul/src/apply.rs at line 424[4.96399]→[4.227:321](∅→∅),[4.127224]→[4.227:321](∅→∅),[4.144461]→[4.227:321](∅→∅),[4.67381]→[4.227:321](∅→∅)
let n = apply_change_to_channel(txn, &mut channel, internal, &hash, &change, workspace)?;let n = apply_change_to_channel(txn,&mut channel,&mut |_| true,internal,&hash,&change,workspace,)?; - replacement in libpijul/src/apply/vertex.rs at line 6
pub fn put_newvertex<T: GraphMutTxnT + TreeTxnT>(pub fn put_newvertex<T: GraphMutTxnT + TreeTxnT, F: FnMut(&Hash) -> bool>( - edit in libpijul/src/apply/vertex.rs at line 9
changes: &mut F, - replacement in libpijul/src/apply/vertex.rs at line 33
if put_up_context(txn, graph, ch, ws, up)? && n.flag.contains(EdgeFlags::FOLDER) {if put_up_context(txn, graph, changes, ws, up)? && n.flag.contains(EdgeFlags::FOLDER) { - replacement in libpijul/src/apply/vertex.rs at line 74
fn put_up_context<T: GraphMutTxnT + TreeTxnT>(fn put_up_context<T: GraphMutTxnT + TreeTxnT, F: FnMut(&Hash) -> bool>( - replacement in libpijul/src/apply/vertex.rs at line 77
ch: &Change,knows: &mut F, - replacement in libpijul/src/apply/vertex.rs at line 114
if !ch.knows(&introduced_by) {if !knows(&introduced_by) { - edit in libpijul/src/apply/edge.rs at line 86
debug!("putting zombie {:?} {:?} {:?}", source, target, intro); - edit in libpijul/src/apply/edge.rs at line 146
debug!("known {:?} ?", intro);