Unrecord did not check whether a file already existed before adding it back
[?]
Apr 29, 2021, 8:33 PM
P6WE7YKL6ILKLYKMJUJLGINN7L4U7X4KUIE5ELTK2LEENX3DUBCQCDependencies
- [2]
UIWXP2E2Fixing an infinite loop after unrecord - [3]
YN63NUZOSanakirja 1.0 - [4]
R3H7D42UDebugging `pijul git`: proper error reporting - [5]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [6]
7UPL3Y2AUnrecord: don't restore the same unrecorded file deletion twice in the inodes and tree tables - [7]
VO5OQW4WRemoving anyhow in libpijul - [8]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [9]
MDBC27ZUFixing a bug when unrecording directory deletions (the "directory marker" in the tree table was not set) - [10]
5BRU2RRWCleanup (debugging a crash related to trees/inodes) - [11]
I52XSRUHMassive cleanup, and simplification
Change contents
- replacement in libpijul/src/unrecord/working_copy.rs at line 58
let mut return_value = None;let mut return_value = Some(Inode::ROOT); - replacement in libpijul/src/unrecord/working_copy.rs at line 61
return_value = Some(restore_inode(txn, changes, source, dest, parent_inode)?);continue;if parent_inode != Inode::ROOT {return_value = restore_inode(txn, changes, source, dest, parent_inode)?;continue;}} else {continue - replacement in libpijul/src/unrecord/working_copy.rs at line 85
return_value = Some(restore_inode(txn, changes, source, dest, Inode::ROOT)?);return_value = restore_inode(txn, changes, source, dest, Inode::ROOT)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 87
return_value = Some(restore_inode(txn, changes, source, dest, inode)?);return_value = restore_inode(txn, changes, source, dest, inode)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 106
) -> Result<Inode, super::UnrecordError<P::Error, T::TreeError>> {) -> Result<Option<Inode>, super::UnrecordError<P::Error, T::TreeError>> { - edit in libpijul/src/unrecord/working_copy.rs at line 116
let file_id = OwnedPathId {parent_inode,basename,}; - replacement in libpijul/src/unrecord/working_copy.rs at line 117
Ok(*inode)Ok(Some(*inode)) - replacement in libpijul/src/unrecord/working_copy.rs at line 119[3.98]→[3.21288:21343](∅→∅),[3.21343]→[3.15226:15327](∅→∅),[3.15327]→[3.36:196](∅→∅),[3.196]→[2.0:40](∅→∅)
let inode = crate::fs::create_new_inode(txn)?;put_tree_with_rev(txn, &file_id, &inode)?;put_inodes_with_rev(txn, &inode, &dest)?;if meta.is_dir() {let id = OwnedPathId {parent_inode: inode,basename: SmallString::new(),};txn.put_tree(&id, &inode)?;let file_id = OwnedPathId {parent_inode,basename,};if txn.get_tree(&file_id, None)?.is_none() {let inode = crate::fs::create_new_inode(txn)?;put_tree_with_rev(txn, &file_id, &inode)?;put_inodes_with_rev(txn, &inode, &dest)?;if meta.is_dir() {let id = OwnedPathId {parent_inode: inode,basename: SmallString::new(),};txn.put_tree(&id, &inode)?;}Ok(Some(inode))} else {Ok(None) - edit in libpijul/src/unrecord/working_copy.rs at line 138[3.256]→[3.338:356](∅→∅),[3.1619]→[3.338:356](∅→∅),[3.7412]→[3.338:356](∅→∅),[3.15327]→[3.338:356](∅→∅),[3.21453]→[3.338:356](∅→∅),[3.338]→[3.338:356](∅→∅)
Ok(inode)