encoded file deletion
[?]
Apr 11, 2021, 8:02 AM
ZSF3YFZTDOXMCOC3HOT5C6MQLYLWOR7QJAOUDS2M2Z4SC2YW3GRACDependencies
- [2]
XR7MNOMUfile encoding in updates - [3]
3S6LU2U5abstract out FileMetadata (de)serialistion - [4]
WZVCLZKYaddress clippy lints - [5]
6HNRL5RTdetect non-utf8 text files - [6]
YN63NUZOSanakirja 1.0 - [7]
UM5DLRPBstore new non-UTF-8 files raw and decode to deplay the contents - [8]
KJDQ2WOMFixing the parsing of section headers in the text change format - [9]
VMOYG7MKtext file decoding for new files - [10]
UNZXTNSJChange text format: order dependencies in the order they were on the channel at record time - [11]
CIEUBH46Fixing an index-out-of-bounds error when serialising bad changes - [12]
O4DNWMPDCleaunp and proofreading of libpijul::record - [13]
LGEJSLTYFixing output (including its uses in reset and pull) - [14]
IIV3EL2XCleanup, formatting, and fixing the Git feature - [15]
3AMEP2Y5More convenient interface for channels - [16]
ZAEUSICJFile deletions were not shown with their names in the metadata during record - [17]
GHO6DWPIRefactoring iterators - [18]
27PYHR6LMaking the get_latest_touch function (useful to make archives) public in libpijul - [19]
Q3GU26WDmerge with changes from sanakirja v1.1.2 - [20]
NYOF5766track file encoding in the record, including change text for file adds - [21]
IYJZVLETCleaning up the literate programming bits - [22]
I52XSRUHMassive cleanup, and simplification - [23]
VO5OQW4WRemoving anyhow in libpijul - [24]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [25]
ZRUPLBBTColours in diff and change: separating concerns and dependencies - [26]
CCFJ7VO3Renaming "Record" to "Hunk" in the changes - [27]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [*]
LLT3GY6UWhen recording, do not consider deleted filenames as current - [*]
X243Z3Y5Recording only the required metadata (can even be changed later!) - [*]
BZCGXVS7Fixing two bugs around conflicts on the last line, where invalid patches were produced (first bug) and applied (second bug) - [*]
EAZ45JTFFixing a bug in change printing
Change contents
- edit in libpijul/src/tests/text.rs at line 47
/// Change a non-utf-8 text file. - edit in libpijul/src/tests/text.rs at line 104[4.3149]
#[test]fn delete_non_utf8_file_test() -> Result<(), anyhow::Error> {env_logger::try_init().unwrap_or(());let mut buf = Vec::new();use std::io::Read;let mut fh = std::fs::File::open("src/tests/data/gb.1")?;fh.read_to_end(&mut buf)?;let mut repo = working_copy::memory::Memory::new();repo.add_file("file", buf);let env = pristine::sanakirja::Pristine::new_anon()?;let mut txn = env.mut_txn_begin();let mut channel = txn.open_or_create_channel("main")?;txn.add_file("file")?;let store = changestore::memory::Memory::new();record_all(&mut repo, &store, &mut txn, &mut channel, "")?;let mut buf = Vec::new();{use std::io::Read;let mut fh = std::fs::File::open("src/tests/data/8859-1.2")?;fh.read_to_end(&mut buf)?;}repo.remove_path("file")?;let (h1, change1) = record_all_change(&mut repo, &store, &mut txn, &mut channel, "")?;let mut v = Vec::new();change1.write(&store,Some(h1),|l, _p| format!("{}:{}", l.path, l.line),true,&mut v,).unwrap();let lines: Vec<&str> = std::str::from_utf8(&v).unwrap().lines().filter(|l| l.starts_with(|c| c == '-')).collect();assert_eq!(vec![" -Chinese / 中文,普通话,汉语 (GB 2312 / GB-encoding)","- 你好"],lines);Ok(())} - edit in libpijul/src/record.rs at line 2
use crate::alive::retrieve; - edit in libpijul/src/record.rs at line 9
use crate::{alive::retrieve, text_encoding::Encoding}; - edit in libpijul/src/record.rs at line 62
encoding: Option<Encoding>, - edit in libpijul/src/record.rs at line 253
changes, - replacement in libpijul/src/record.rs at line 267[4.495974]→[4.49183:49256](∅→∅),[4.49256]→[3.125:298](∅→∅),[3.298]→[4.49257:49328](∅→∅),[4.496160]→[4.49257:49328](∅→∅),[4.49328]→[4.496294:496329](∅→∅),[4.496294]→[4.496294:496329](∅→∅)
let name_start = ChangePosition(self.rec.contents.len().into());let file_meta = FileMetadata {metadata: meta,basename: item.basename.as_str(),};file_meta.write(&mut self.rec.contents);let name_end = ChangePosition(self.rec.contents.len().into());self.rec.contents.push(0); - edit in libpijul/src/record.rs at line 302
let name_start = ChangePosition(self.rec.contents.len().into());let file_meta = FileMetadata {metadata: meta,basename: item.basename.as_str(),encoding: encoding.clone(),};file_meta.write(&mut self.rec.contents);let name_end = ChangePosition(self.rec.contents.len().into());self.rec.contents.push(0); - replacement in libpijul/src/record.rs at line 397[4.1468]→[4.500531:500570](∅→∅),[4.6542]→[4.500531:500570](∅→∅),[4.28600]→[4.500531:500570](∅→∅),[4.33566]→[4.500531:500570](∅→∅),[4.34150]→[4.500531:500570](∅→∅),[4.50044]→[4.500531:500570](∅→∅),[4.500531]→[4.500531:500570](∅→∅),[4.500570]→[3.299:361](∅→∅)
let mut name = Vec::new();let FileMetadata { basename, metadata } = changeslet mut meta = Vec::new();let FileMetadata {basename,metadata,encoding,} = changes - replacement in libpijul/src/record.rs at line 406
&mut name,&mut meta, - edit in libpijul/src/record.rs at line 420
encoding, - edit in libpijul/src/record.rs at line 449
self.former_parents[0].encoding.clone(), - edit in libpijul/src/record.rs at line 502
changes, - replacement in libpijul/src/record.rs at line 548
let mut name = Vec::new();let mut meta = Vec::new(); - replacement in libpijul/src/record.rs at line 553
&mut name,&mut meta, - replacement in libpijul/src/record.rs at line 557
if name.len() > 2 {if let Ok(name) = std::str::from_utf8(&name[2..]) {if !full_path.is_empty() {full_path.push('/');}full_path.push_str(name);}let FileMetadata { basename: name, .. } = FileMetadata::read(&mut meta);if !full_path.is_empty() {full_path.push('/'); - edit in libpijul/src/record.rs at line 561
full_path.push_str(name); - edit in libpijul/src/record.rs at line 569
changes, - edit in libpijul/src/record.rs at line 591
changes: &C, - edit in libpijul/src/record.rs at line 642
changes, - edit in libpijul/src/record.rs at line 687
encoding: Option<Encoding>, - edit in libpijul/src/record.rs at line 698
encoding: encoding.clone(), - edit in libpijul/src/record.rs at line 725
encoding, - edit in libpijul/src/record.rs at line 834
.. - edit in libpijul/src/record.rs at line 969
C: ChangeStore, - replacement in libpijul/src/record.rs at line 977
) -> Result<(), TxnErr<T::GraphError>> {changes: &C,) -> Result<(), RecordError<C::Error, W::Error, T::GraphError>>where<W as WorkingCopy>::Error: 'static,{ - edit in libpijul/src/record.rs at line 994
let name_dest = txn.find_block_end(channel, current_vertex).unwrap();let mut meta = Vec::new();let FileMetadata { encoding, .. } = changes.get_file_meta(|p| txn.get_external(&p).unwrap().map(From::from),*name_dest,&mut meta,).map_err(RecordError::Changestore)?; - replacement in libpijul/src/record.rs at line 1025
self.delete_inode_vertex(txn, channel, vertex, vertex.start_pos(), full_path)?self.delete_inode_vertex(txn,channel,vertex,vertex.start_pos(),full_path,encoding,)? - edit in libpijul/src/record.rs at line 1072
encoding: Option<Encoding>, - edit in libpijul/src/record.rs at line 1131
encoding, - replacement in libpijul/src/pristine/sanakirja.rs at line 484
let mut cursor = ::sanakirja::btree::cursor::Cursor::new(txn, graph).map_err(|x| BlockError::Txn(x.into()))?;let mut cursor =btree::cursor::Cursor::new(txn, graph).map_err(|x| BlockError::Txn(x.into()))?; - edit in libpijul/src/pristine/inode_vertex.rs at line 1
use super::vertex::*;use super::inode_metadata::*; - edit in libpijul/src/pristine/inode_vertex.rs at line 2
use super::inode_metadata::*;use super::vertex::*; - replacement in libpijul/src/pristine/inode_vertex.rs at line 8
pub metadata: InodeMetadata,pub position: Position<ChangeId>,pub metadata: InodeMetadata,pub position: Position<ChangeId>, - edit in libpijul/src/output/mod.rs at line 126
.. - edit in libpijul/src/fs.rs at line 571
.. - edit in libpijul/src/fs.rs at line 580
let basename = basename.to_string(); - replacement in libpijul/src/fs.rs at line 601
basename.to_string(),basename, - edit in libpijul/src/fs.rs at line 664
.. - edit in libpijul/src/fs.rs at line 673
let basename = basename.to_owned(); - replacement in libpijul/src/fs.rs at line 684
return Some(Ok((grandparent.dest(), perms, basename.to_owned())))return Some(Ok((grandparent.dest(), perms, basename))) - edit in libpijul/src/changestore/mod.rs at line 5
use crate::change::{Change, ChangeHeader}; - edit in libpijul/src/changestore/mod.rs at line 6
use crate::{change::{Change, ChangeHeader},text_encoding::Encoding,}; - replacement in libpijul/src/changestore/mod.rs at line 94
// pub encoding: Encoding,pub encoding: Option<Encoding>, - edit in libpijul/src/change.rs at line 574
encoding, - edit in libpijul/src/change.rs at line 579
encoding: encoding.clone(), - edit in libpijul/src/change.rs at line 585
encoding, - edit in libpijul/src/change.rs at line 590
encoding: encoding.clone(), - replacement in libpijul/src/change.rs at line 597
..encoding, - edit in libpijul/src/change.rs at line 607
encoding: encoding.clone(), - edit in libpijul/src/change.rs at line 697
encoding: Option<Encoding>, - edit in libpijul/src/change.rs at line 703
encoding: Option<Encoding>, - edit in libpijul/src/change.rs at line 1114
encoding, - edit in libpijul/src/change.rs at line 1119
encoding, - edit in libpijul/src/change.rs at line 1125
encoding, - edit in libpijul/src/change.rs at line 1130
encoding, - edit in libpijul/src/change/text_changes.rs at line 332
.. - edit in libpijul/src/change/text_changes.rs at line 375
encoding, - replacement in libpijul/src/change/text_changes.rs at line 378
write!(w, "File deletion: {:?} ", path)?;write!(w,"File deletion: {:?} {:?}",path,encoding_label(encoding))?; - replacement in libpijul/src/change/text_changes.rs at line 390
print_change_contents(w, changes, contents, change_contents, &None)?;print_change_contents(w, changes, contents, change_contents, encoding)?; - edit in libpijul/src/change/text_changes.rs at line 399
encoding, - replacement in libpijul/src/change/text_changes.rs at line 402
write!(w, "File un-deletion: {:?} ", path)?;write!(w,"File un-deletion: {:?} {:?}",path,encoding_label(encoding))?; - replacement in libpijul/src/change/text_changes.rs at line 413
print_change_contents(w, changes, contents, change_contents, &None)?;print_change_contents(w, changes, contents, change_contents, encoding)?; - edit in libpijul/src/change/text_changes.rs at line 429
.. - replacement in libpijul/src/change/text_changes.rs at line 553
print_change_contents(w, changes, change, change_contents, &None)?;print_change_contents(w, changes, change, change_contents, encoding)?; - replacement in libpijul/src/change/text_changes.rs at line 586
Regex::new(r#"^([0-9]+)\. File deletion: "([^"]*)" (\d+\.\d+)"#).unwrap();Regex::new(r#"^([0-9]+)\. File deletion: "([^"]*)" (\d+\.\d+) "(?P<encoding>[^"]*)""#).unwrap(); - replacement in libpijul/src/change/text_changes.rs at line 588
Regex::new(r#"^([0-9]+)\. File un-deletion: "([^"]*)" (\d+\.\d+)"#).unwrap();Regex::new(r#"^([0-9]+)\. File un-deletion: "([^"]*)" (\d+\.\d+) "(?P<encoding>[^"]*)""#).unwrap(); - edit in libpijul/src/change/text_changes.rs at line 635
let n = cap.name("n").unwrap().as_str().parse().unwrap();let encoding = encoding_from_label(cap); - edit in libpijul/src/change/text_changes.rs at line 640
encoding: encoding.clone(), - edit in libpijul/src/change/text_changes.rs at line 656
let n = cap.name("n").unwrap().as_str().parse().unwrap(); - replacement in libpijul/src/change/text_changes.rs at line 668
encoding: encoding_from_label(cap),encoding, - edit in libpijul/src/change/text_changes.rs at line 721
encoding: encoding_from_label(cap), - edit in libpijul/src/change/text_changes.rs at line 736
encoding: encoding_from_label(cap), - edit in libpijul/src/change/text_changes.rs at line 783
encoding: None, - replacement in libpijul/src/change/text_changes.rs at line 1316
for a in encoding.decode(&contents).split_terminator('\n') {for a in encoding.decode(&contents).split('\n') { - edit in libpijul/src/change/text_changes.rs at line 1332
debug!("print_change_contents {:?}", change); - edit in libpijul/src/change/text_changes.rs at line 1338
debug!("print_change_contents {:?}", c); - edit in libpijul/src/change/text_changes.rs at line 1357[32.43][32.43]
debug!("print_change_contents {:?}", buf);