Fixing conflicts with the new patch parsing code, and introducing AddRoot
Dependencies
- [2]
RMDMAYRXAdding a root inode (aka supporting submodules) - [3]
UN2M77YUTest new changes against the old code. Fix several small bugs. - [4]
XR7MNOMUfile encoding in updates - [5]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [6]
QQZNSB26Permission update (after #X243) - [7]
CCFJ7VO3Renaming "Record" to "Hunk" in the changes - [8]
I24UEJQLVarious post-fire fixes - [9]
TNN56XYKlibpijul alpha.43 - [10]
73NW2X2MReturning a parse error instead of panicking when parsing a text change - [11]
ZSF3YFZTencoded file deletion - [12]
HYRH4E55rustfmt.toml: init - [13]
RRCSHAYZFormatting - [14]
DJ5JYH3KCOPYING - [15]
G734WNM6flake.nix: use crate2nix - [16]
X243Z3Y5Recording only the required metadata (can even be changed later!) - [17]
SGXOEWHUAdding a patched chardetng (temporarily) - [18]
VO5OQW4WRemoving anyhow in libpijul - [19]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [20]
HDGRZISMVersion updates - [21]
HSEYMLO2Adding an untracked change iterator - [22]
7KNPYIDUSplitting the WorkingCopy trait into a read-only record and a read/write output - [23]
3S6LU2U5abstract out FileMetadata (de)serialistion - [24]
5FI6SBEZRe-implement change printing and parsing - [25]
YTQS4ES3Fixing a parsing problem (related to permissions), and the associated permissions - [26]
SL45MHGV+contrib/pijul2svg.sh (license as usual: GPL-2.0-or-later) - [27]
YE5WBHXBFixing contrib permissions - [28]
RUBSM5DRFixing a bug when outputting changes in text format
Change contents
- file move: libpijul → libpijul
- replacement in libpijul/src/change.rs at line 569
Hunk::AddRoot { change } => Hunk::DelRoot {change: change.inverse(hash),Hunk::AddRoot { name, inode } => Hunk::DelRoot {name: name.inverse(hash),inode: inode.inverse(hash), - replacement in libpijul/src/change.rs at line 573
Hunk::DelRoot { change } => Hunk::AddRoot {change: change.inverse(hash),Hunk::DelRoot { name, inode } => Hunk::AddRoot {name: name.inverse(hash),inode: inode.inverse(hash), - replacement in libpijul/src/change.rs at line 767
change: Atom,name: Atom,inode: Atom, - replacement in libpijul/src/change.rs at line 771
change: Atom,name: Atom,inode: Atom, - replacement in libpijul/src/change.rs at line 859
Hunk::AddRoot { change } | Hunk::DelRoot { change } => Some(change),Hunk::AddRoot { inode, name } | Hunk::DelRoot { inode, name } => {self.extra = Some(inode);Some(name)}, - replacement in libpijul/src/change.rs at line 925
Hunk::AddRoot { ref change } | Hunk::DelRoot { ref change } => Some(change),Hunk::AddRoot { ref inode, ref name } | Hunk::DelRoot { ref inode, ref name } => {self.extra = Some(inode);Some(name)}, - replacement in libpijul/src/change.rs at line 1010
Hunk::AddRoot { ref change } | Hunk::DelRoot { ref change } => Some(change),Hunk::AddRoot { ref name, ref inode } | Hunk::DelRoot { ref name, ref inode } => {self.extra = Some(inode);Some(name)}, - replacement in libpijul/src/change.rs at line 1245
BaseHunk::AddRoot { change } => BaseHunk::AddRoot { change: f(change)? },BaseHunk::DelRoot { change } => BaseHunk::DelRoot { change: f(change)? },BaseHunk::AddRoot { name, inode } => BaseHunk::AddRoot { name: f(name)?, inode: f(inode)? },BaseHunk::DelRoot { name, inode } => BaseHunk::DelRoot { name: f(name)?, inode: f(inode)? }, - edit in libpijul/src/change/text_changes_old.rs at line 583
_ => {} - edit in libpijul/src/change/text_changes_old.rs at line 1158
_ => {unimplemented!()}, - edit in libpijul/src/change/text_changes.rs at line 198
dbg!(&header); - edit in libpijul/src/change/text_changes.rs at line 201
dbg!(&deps); - edit in libpijul/src/change/text_changes.rs at line 204
dbg!(&hunks); - edit in libpijul/src/change/text_changes.rs at line 258
debug!("res = {:?}", res); - edit in libpijul/src/change/text_changes.rs at line 444
metadata, - resurrect zombie in libpijul/src/change/text_changes.rs at line 444
let contents = if let Some(Atom::NewVertex(ref n)) = contents {change_contents[n.start.us()..n.end.us()].to_vec() - edit in libpijul/src/change/text_changes.rs at line 444
let (name, metadata) = if n.start == n.end {("", InodeMetadata::DIR)} else {let FileMetadata {basename: name,metadata: perms,..} = FileMetadata::read(&change_contents[n.start.0.into()..n.end.0.into()]);(name, perms)}; - edit in libpijul/src/change/text_changes.rs at line 556[4.5532]→[2.28493:28507](∅→∅),[4.5532]→[2.28493:28507](∅→∅),[2.28549]→[2.28549:28588](∅→∅),[2.28549]→[2.28549:28588](∅→∅),[2.28642]→[2.28642:28656](∅→∅),[2.28642]→[2.28642:28656](∅→∅),[2.28698]→[2.28698:28739](∅→∅),[2.28698]→[2.28698:28739](∅→∅)
}writeln!(w, "Root",)?;}writeln!(w, "Unroot",)?; - edit in libpijul/src/change/text_changes.rs at line 564
Hunk::AddRoot { name, .. } => {if let Atom::NewVertex(ref n) = name {PrintableHunk::AddRoot {start: n.start.0 .0,}} else {unreachable!()}}Hunk::DelRoot { inode, name } => PrintableHunk::DelRoot {name: to_printable_edge_map(name, hashes),inode: to_printable_edge_map(inode, hashes),}, - edit in libpijul/src/change/text_changes.rs at line 591
debug!("from_printable {:?}", hunk); - replacement in libpijul/src/change/text_changes.rs at line 701
add_name.up_context = from_printable_pos_vec_offsets(changes, offsets, &up_context)?;add_name.up_context =from_printable_pos_vec_offsets(changes, offsets, &up_context)?; - replacement in libpijul/src/change/text_changes.rs at line 731
path: if parent == "" { name } else { parent + "/" + &name },path: if parent == "" {name} else {parent + "/" + &name}, - replacement in libpijul/src/change/text_changes.rs at line 791
x.up_context = from_printable_pos_vec_offsets(changes, offsets, &new_vertex.up_context)?;x.down_context = from_printable_pos_vec_offsets(changes, offsets, &new_vertex.down_context)?;x.up_context = from_printable_pos_vec_offsets(changes,offsets,&new_vertex.up_context,)?;x.down_context = from_printable_pos_vec_offsets(changes,offsets,&new_vertex.down_context,)?; - replacement in libpijul/src/change/text_changes.rs at line 835
x.up_context = from_printable_pos_vec_offsets(changes, offsets, &replacement.up_context)?;x.down_context = from_printable_pos_vec_offsets(changes, offsets, &replacement.down_context)?;x.up_context =from_printable_pos_vec_offsets(changes, offsets, &replacement.up_context)?;x.down_context = from_printable_pos_vec_offsets(changes,offsets,&replacement.down_context,)?; - replacement in libpijul/src/change/text_changes.rs at line 894
c.up_context = from_printable_pos_vec_offsets(changes, offsets, &change.up_context)?;c.down_context = from_printable_pos_vec_offsets(changes, offsets, &change.down_context)?;c.up_context =from_printable_pos_vec_offsets(changes, offsets, &change.up_context)?;c.down_context =from_printable_pos_vec_offsets(changes, offsets, &change.down_context)?; - edit in libpijul/src/change/text_changes.rs at line 924
_ => unimplemented!(), - edit in libpijul/src/change/text_changes.rs at line 941
PrintableHunk::AddRoot { start } => {contents_.push(0);let root_inode = Position {change: Some(Hash::None),pos: ChangePosition(contents_.len().into()),};contents_.push(0);let inode = contents_.len();contents_.push(0);if let Entry::Occupied(mut e) = updatables.entry(hunk_id as usize) {if let crate::InodeUpdate::Add { ref mut pos, .. } = e.get_mut() {offsets.insert(pos.0.into(), ChangePosition((start + 1).into()));*pos = ChangePosition((start + 1).into())}}Ok(Hunk::AddRoot {name: Atom::NewVertex(NewVertex {up_context: vec![root_inode],down_context: Vec::new(),start: ChangePosition(start.into()),end: ChangePosition(start.into()),flag: EdgeFlags::FOLDER | EdgeFlags::BLOCK,inode: root_inode,}),inode: Atom::NewVertex(NewVertex {up_context: vec![Position {change: None,pos: ChangePosition(start.into()),}],down_context: Vec::new(),start: ChangePosition(inode.into()),end: ChangePosition(inode.into()),flag: EdgeFlags::FOLDER | EdgeFlags::BLOCK,inode: root_inode,})})}PrintableHunk::DelRoot { name, inode } => {let root_inode = PrintablePos(1, 0);Ok(Hunk::DelRoot {name: Atom::EdgeMap(EdgeMap {edges: from_printable_edge_map(&name, changes)?,inode: from_printable_pos(changes, root_inode)?,}),inode: Atom::EdgeMap(EdgeMap {edges: from_printable_edge_map(&inode, changes)?,inode: from_printable_pos(changes, root_inode)?,}),})} - edit in libpijul/src/change/text_changes.rs at line 1147[4.4295]→[2.28028:28090](∅→∅),[4.4295]→[2.28028:28090](∅→∅),[2.28090]→[2.28090:28492](∅→∅),[2.28090]→[2.28090:28492](∅→∅)
let (name, perms) = if n.start == n.end {("", InodeMetadata::DIR)} else {let FileMetadata {basename: name,metadata: perms,..} = FileMetadata::read(&change_contents[n.start.0.into()..n.end.0.into()]);(name, perms)}; - resolve order conflict in libpijul/src/change/text_changes.rs at line 1147[4.88449]
- edit in libpijul/src/change/printable.rs at line 157
},AddRoot {start: u64,},DelRoot {name: Vec<PrintableEdge>,inode: Vec<PrintableEdge>, - edit in libpijul/src/change/printable.rs at line 565
AddRoot {start} => {writeln!(w,"Root add\n up {}, new {}:{}",PrintablePos(1, 0),start, start,)?;}DelRoot {name, inode} => {writeln!(w,"Root del",)?;writeln!(w, "{}", PrintableAtom::Edges(name.to_vec()))?;writeln!(w, "{}", PrintableAtom::Edges(inode.to_vec()))?;} - edit in libpijul/src/change/parse.rs at line 300
fn parse_root_addition_hunk(i: &str) -> IResult<&str, PrintableHunk> {debug!("root add {:?}", i);let (i, _) = delimited(space0, tag("Root add"), space0)(i)?;let (i, _) = tuple((space0, newline, multispace0))(i)?;debug!("root add {:?}", i);let (i, up_context) = preceded(tag("up"), parse_context)(i)?;debug!("root add {:?}", i);let (i, (start, end)) = delimited(space0, parse_start_end, pair(space0, newline))(i)?;debug!("root add {:?}", i);assert_eq!(&up_context[..], &[PrintablePos(1, 0)]);assert_eq!(start, end);Ok((i,PrintableHunk::AddRoot {start},))}fn parse_root_deletion_hunk(i: &str) -> IResult<&str, PrintableHunk> {let (i, _) = delimited(space0, tag("Root del"), space0)(i)?;let (i, _) = tuple((space0, newline))(i)?;let (i, name) = parse_edges(i)?;let (i, inode) = parse_edges(i)?;Ok((i,PrintableHunk::DelRoot {inode, name},))} - edit in libpijul/src/change/parse.rs at line 400
debug!("parse_hunk {:?}", input); - edit in libpijul/src/change/parse.rs at line 414
parse_root_addition_hunk,parse_root_deletion_hunk, - replacement in libpijul/src/record.rs at line 721
self.actions.push(Hunk::FileAdd {add_name: Atom::NewVertex(NewVertex {self.actions.push(Hunk::AddRoot {name: Atom::NewVertex(NewVertex { - replacement in libpijul/src/record.rs at line 725
start: pos2,end: pos2,start: pos,end: pos, - replacement in libpijul/src/record.rs at line 730
add_inode: Atom::NewVertex(NewVertex {inode: Atom::NewVertex(NewVertex { - replacement in libpijul/src/record.rs at line 733
pos: pos2,pos, - replacement in libpijul/src/record.rs at line 736
start: pos,end: pos,start: pos2,end: pos2, - edit in libpijul/src/record.rs at line 741
contents: None,path: "/".to_string(),encoding: None, - replacement in libpijul/src/record.rs at line 742
*new_root = Some(pos);Position { change: None, pos }self.updatables.insert(self.actions.len(), InodeUpdate::Add { inode: Inode::ROOT, pos: pos2 });*new_root = Some(pos2);Position { change: None, pos: pos2 }