Formatting

[?]
Jun 1, 2021, 5:09 PM
RRCSHAYZ6RLWVPNYHF2F5FSRL2KKJNPQUQRIJYLJGB23BZQQ7JLQC

Dependencies

  • [2] LCMHN5MI Fixing an optimisation in reset where files not modified since the last output are not output again
  • [3] VSOT2QH5 Fixing channel drop (cleanup in other tables + order of reference drop)
  • [4] MOPABMFW Fixing a deadlock in working_copy::memory (used only in tests for now)
  • [5] V3HHWF4Q Commit function in libpijul
  • [6] AD6M434O find_alive performance (matters a lot for unrecord)
  • [7] LERRJNFC Fixing the text change version of "FileMove" to include the former path
  • [8] AAXP2534 Tags: completing the subcommand
  • [9] IXC43DSH Fixing a bug in unrecord
  • [10] KLBWKCUZ use ssh url syntax like git
  • [11] 352WW5FP Fixing a bug when deleting conflict resolutions
  • [12] 2RXOCWUW Making libpijul deterministic (and getting rid of `rand`)
  • [13] 3NZS5KNW Making UnrecordError public
  • [14] 5GYRDN47 Error cleanup in libpijul
  • [15] SHSJ3Y53 Fixing more tests
  • [16] VNBLGT6G Do not output unmodified files when resetting (fix)
  • [17] 3AMEP2Y5 More convenient interface for channels
  • [18] IYJZVLET Cleaning up the literate programming bits
  • [19] SZWBLWZ4 Reading ~/.ssh/config
  • [20] KQTD46KV Unrecord: restore files *after* having unapplied the *entire* change
  • [21] G6S6PWZE Do not touch the channel if this is a partial record
  • [22] 5SLOJYHG Fixing the Git feature
  • [23] NYOF5766 track file encoding in the record, including change text for file adds
  • [24] GDDYJH7A fix encoded file add
  • [25] X7OHUPL5 Fixing a bug in unrecord, and fixing the tests
  • [26] TVVW53HZ Conflict resolution
  • [27] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [28] QNJBR73K don't return Result for infallible functions
  • [29] 5BRU2RRW Cleanup (debugging a crash related to trees/inodes)
  • [30] VO5OQW4W Removing anyhow in libpijul
  • [31] TVHECUPY Fixing an unwrap on bad patches in unrecord (these patches cannot even be produced outside of bugs)
  • [32] MDBC27ZU Fixing a bug when unrecording directory deletions (the "directory marker" in the tree table was not set)
  • [33] 4NNR32V6 conflicts
  • [34] XR7MNOMU file encoding in updates
  • [35] ZSF3YFZT encoded file deletion
  • [36] BD5PC25A Deleting conflict resolution vertices when the sides are deleted
  • [37] NGCTMCDP cleaning up the deps and revdeps of unused changes after a channel drop
  • [38] GHO6DWPI Refactoring iterators
  • [39] 3S6LU2U5 abstract out FileMetadata (de)serialistion
  • [40] QL6K2ZM3 Tags
  • [41] I24UEJQL Various post-fire fixes
  • [42] P6WE7YKL Unrecord did not check whether a file already existed before adding it back
  • [43] Q3GU26WD merge with changes from sanakirja v1.1.2
  • [44] G6YXRFH2 Channel drop with tags
  • [45] TIPZ7UXN Started fixing the tests for parallel record/output
  • [46] YN63NUZO Sanakirja 1.0
  • [47] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [*] L4JXJHWX pijul/*: reorganize imports and remove extern crate

Change contents

  • replacement in pijul/src/remote/ssh.rs at line 62
    [10.163][10.163:336]()
    let p = cap.name("path0").unwrap_or_else(
    || cap.name("path1").unwrap_or_else(
    || cap.name("path2").unwrap()
    )).as_str();
    [10.163]
    [10.336]
    let p = cap
    .name("path0")
    .unwrap_or_else(|| {
    cap.name("path1")
    .unwrap_or_else(|| cap.name("path2").unwrap())
    })
    .as_str();
  • replacement in pijul/src/remote/ssh.rs at line 71
    [10.397][10.397:422]()
    }
    else {
    [10.397]
    [10.422]
    } else {
  • replacement in pijul/src/remote/ssh.rs at line 247
    [16.31447][16.31447:31595]()
    pub fn load_secret_key(key_path: &Path, k: &str) -> Option<thrussh_keys::key::KeyPair> {
    match thrussh_keys::load_secret_key(&key_path, None) {
    [16.31447]
    [16.31595]
    pub fn load_secret_key<P: AsRef<Path>>(key_path: P, k: &str) -> Option<thrussh_keys::key::KeyPair> {
    match thrussh_keys::load_secret_key(key_path.as_ref(), None) {
  • edit in pijul/src/remote/local.rs at line 5
    [49.535]
    [16.9780]
    use anyhow::bail;
  • edit in pijul/src/commands/record.rs at line 377
    [16.108241]
    [16.108241]
    debug!("write change");
  • edit in pijul/src/commands/record.rs at line 379
    [16.108308]
    [16.108308]
    debug!("write change done");
  • replacement in libpijul/src/working_copy/memory.rs at line 300
    [4.468][4.468:530]()
    if let Inode::File { ref mut contents, .. } = f {
    [4.468]
    [16.26973]
    if let Inode::File {
    ref mut contents, ..
    } = f
    {
  • replacement in libpijul/src/working_copy/memory.rs at line 307
    [16.27092][16.27092:27111]()
    })
    [16.27092]
    [4.567]
    });
  • replacement in libpijul/src/unrecord/working_copy.rs at line 68
    [16.238][16.238:259]()
    continue
    [16.238]
    [16.227911]
    continue;
  • replacement in libpijul/src/unrecord/working_copy.rs at line 111
    [16.229205][16.521:579]()
    let FileMetadata { basename, metadata, .. } = changes
    [16.229205]
    [16.48]
    let FileMetadata {
    basename, metadata, ..
    } = changes
  • replacement in libpijul/src/unrecord/mod.rs at line 197
    [16.372][12.2607:2711]()
    working_copy::undo_file_deletion(txn, changes, channel, change_id, newedges, salt)?
    [16.372]
    [16.628]
    working_copy::undo_file_deletion(
    txn, changes, channel, change_id, newedges, salt,
    )?
  • replacement in libpijul/src/unrecord/mod.rs at line 375
    [9.140][9.140:416]()
    let mut source = crate::apply::edge::find_source_vertex(txn, channel, &n.from, change_id, newedges.inode, n.flag, &mut ws.apply)?;
    let mut target = crate::apply::edge::find_target_vertex(txn, channel, &n.to, change_id, newedges.inode, n.flag, &mut ws.apply)?;
    [9.140]
    [9.416]
    let mut source = crate::apply::edge::find_source_vertex(
    txn,
    channel,
    &n.from,
    change_id,
    newedges.inode,
    n.flag,
    &mut ws.apply,
    )?;
    let mut target = crate::apply::edge::find_target_vertex(
    txn,
    channel,
    &n.to,
    change_id,
    newedges.inode,
    n.flag,
    &mut ws.apply,
    )?;
  • replacement in libpijul/src/unrecord/mod.rs at line 396
    [9.569][9.569:672]()
    if must_reintroduce(txn, channel, changes, source, target, intro_ext, intro, change_id)? {
    [9.569]
    [9.672]
    if must_reintroduce(
    txn, channel, changes, source, target, intro_ext, intro, change_id,
    )? {
  • resurrect zombie in "libpijul/src/tests/mod.rs" at line 99
    [15.886][16.452:467](),[16.452][16.452:467](),[16.452][16.452:467]()
    store: &P,
  • resurrect zombie in "libpijul/src/tests/mod.rs" at line 102
    [15.940][16.517:574](),[16.517][16.517:574](),[16.517][16.517:574]()
    prefix: &str,
    ) -> Result<Hash, anyhow::Error>
    where
  • resurrect zombie in "libpijul/src/tests/mod.rs" at line 108
    [15.1077][16.574:613](),[16.574][16.574:613](),[16.574][16.574:613]()
    R::Error: Send + Sync + 'static,
    {
  • edit in libpijul/src/record.rs at line 9
    [16.489199]
    [16.40828]
    use crate::{alive::retrieve, text_encoding::Encoding};
    use crate::{change::*, changestore::FileMetadata};
  • edit in libpijul/src/record.rs at line 14
    [16.40928][16.731:731](),[16.731][16.1496:1551](),[16.489199][16.1496:1551](),[16.1551][16.73:124](),[16.489199][16.73:124]()
    use crate::{alive::retrieve, text_encoding::Encoding};
    use crate::{change::*, changestore::FileMetadata};
  • replacement in libpijul/src/record.rs at line 58
    [7.437][7.437:518]()
    crate::output:: FileError::Txn(t) => RecordError::Txn(t),
    [7.437]
    [7.518]
    crate::output::FileError::Txn(t) => RecordError::Txn(t),
  • replacement in libpijul/src/record.rs at line 613
    [16.55791][16.788:898]()
    rec.record_deleted_file(txn, txn.graph(channel), working_copy, &full_path, *vertex, changes)?
    [16.55791]
    [16.55892]
    rec.record_deleted_file(
    txn,
    txn.graph(channel),
    working_copy,
    &full_path,
    *vertex,
    changes,
    )?
  • replacement in libpijul/src/record.rs at line 982
    [16.509929][7.710:807]()
    path: crate::fs::find_path(changes, txn, channel, true, vertex)?.unwrap().0,
    [16.509929]
    [16.509979]
    path: crate::fs::find_path(changes, txn, channel, true, vertex)?
    .unwrap()
    .0,
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1868
    [16.441][16.441:574]()
    if self.channel_has_state(&chan.states, &p.b).map_err(|e| e.0)?.is_some() {
    break 'outer
    [16.441]
    [16.574]
    if self
    .channel_has_state(&chan.states, &p.b)
    .map_err(|e| e.0)?
    .is_some()
    {
    break 'outer;
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1875
    [16.596][16.596:729]()
    if self.get_changeset(&chan.changes, &p.a).map_err(|e| e.0)?.is_some() {
    continue 'outer
    [16.596]
    [16.729]
    if self
    .get_changeset(&chan.changes, &p.a)
    .map_err(|e| e.0)?
    .is_some()
    {
    continue 'outer;
  • replacement in libpijul/src/pristine/sanakirja.rs at line 1890
    [3.259][3.259:289]()
    break
    [3.259]
    [3.289]
    break;
  • replacement in libpijul/src/pristine/mod.rs at line 375
    [8.3189][8.3189:3315]()
    ) -> Result<
    Cursor<Self, &Self, Self::TagsCursor, L64, SerializedHash>,
    TxnErr<Self::GraphError>,
    >;
    [8.3189]
    [8.3315]
    ) -> Result<Cursor<Self, &Self, Self::TagsCursor, L64, SerializedHash>, TxnErr<Self::GraphError>>;
  • replacement in libpijul/src/pristine/inode.rs at line 6
    [12.3436][12.3436:3475]()
    use byteorder::{ByteOrder, BigEndian};
    [12.3436]
    [16.643917]
    use byteorder::{BigEndian, ByteOrder};
  • replacement in libpijul/src/output/output.rs at line 360
    [16.1319][2.0:50]()
    return last.duration_since(m).is_ok()
    [16.1319]
    [16.1474]
    return last.duration_since(m).is_ok();
  • replacement in libpijul/src/output/output.rs at line 402
    [12.3718][12.3718:3856]()
    unsafe {
    *(c.as_mut_ptr() as *mut Position<ChangeId>) = output_item.pos
    }
    [12.3718]
    [12.3856]
    unsafe { *(c.as_mut_ptr() as *mut Position<ChangeId>) = output_item.pos }
  • replacement in libpijul/src/lib.rs at line 43
    [14.217][14.217:253]()
    pub struct ParseError { s: String }
    [14.217]
    [14.253]
    pub struct ParseError {
    s: String,
    }
  • edit in libpijul/src/lib.rs at line 63
    [16.27689][13.0:40]()
    pub use crate::unrecord::UnrecordError;
  • edit in libpijul/src/lib.rs at line 71
    [16.720352]
    [16.83620]
    pub use crate::unrecord::UnrecordError;
  • replacement in libpijul/src/lib.rs at line 75
    [12.4100][16.83668:83693](),[16.83668][16.83668:83693](),[16.83693][12.4101:4146](),[12.4146][16.83782:83804](),[16.83782][16.83782:83804](),[16.83804][12.4147:4189]()
    pub type HashMap<K, V> =
    std::collections::HashMap<K, V, Hasher>;
    pub type HashSet<K> =
    std::collections::HashSet<K, Hasher>;
    [12.4100]
    [16.83890]
    pub type HashMap<K, V> = std::collections::HashMap<K, V, Hasher>;
    pub type HashSet<K> = std::collections::HashSet<K, Hasher>;
  • replacement in libpijul/src/lib.rs at line 84
    [16.720537][5.0:110]()
    pub fn commit<T: pristine::MutTxnT>(txn: std::sync::Arc<std::sync::RwLock<T>>) -> Result<(), T::GraphError> {
    [16.720537]
    [5.110]
    pub fn commit<T: pristine::MutTxnT>(
    txn: std::sync::Arc<std::sync::RwLock<T>>,
    ) -> Result<(), T::GraphError> {
  • replacement in libpijul/src/lib.rs at line 301
    [16.726871][12.4574:4680]()
    fn add(&mut self, path: &str, is_dir: bool, salt: u64) -> Result<(), fs::FsError<Self::GraphError>> {
    [16.726871]
    [12.4680]
    fn add(
    &mut self,
    path: &str,
    is_dir: bool,
    salt: u64,
    ) -> Result<(), fs::FsError<Self::GraphError>> {
  • replacement in libpijul/src/lib.rs at line 310
    [16.727005][12.4735:4839]()
    fn move_file(&mut self, a: &str, b: &str, salt: u64) -> Result<(), fs::FsError<Self::GraphError>> {
    [16.727005]
    [12.4839]
    fn move_file(
    &mut self,
    a: &str,
    b: &str,
    salt: u64,
    ) -> Result<(), fs::FsError<Self::GraphError>> {
  • replacement in libpijul/src/fs.rs at line 61
    [16.30675][12.5000:5132]()
    pub(crate) fn create_new_inode<T: TreeMutTxnT>(txn: &mut T, parent_id: &PathId, salt: u64) -> Result<Inode, TxnErr<T::TreeError>> {
    [16.30675]
    [12.5132]
    pub(crate) fn create_new_inode<T: TreeMutTxnT>(
    txn: &mut T,
    parent_id: &PathId,
    salt: u64,
    ) -> Result<Inode, TxnErr<T::TreeError>> {
  • replacement in libpijul/src/find_alive.rs at line 9
    [16.114985][6.0:91]()
    let mut stack = vec![(SerializedEdge::empty(vertex0.start_pos(), ChangeId::ROOT), 0)];
    [16.114985]
    [16.85243]
    let mut stack = vec![(
    SerializedEdge::empty(vertex0.start_pos(), ChangeId::ROOT),
    0,
    )];
  • replacement in libpijul/src/find_alive.rs at line 35
    [6.235][6.235:276]()
    return Ok(alive)
    [6.235]
    [6.276]
    return Ok(alive);
  • edit in libpijul/src/diff/replace.rs at line 7
    [16.85631][16.85631:85662]()
    use crate::{HashMap, HashSet};
  • edit in libpijul/src/diff/replace.rs at line 8
    [16.186]
    [16.0]
    use crate::{HashMap, HashSet};
  • edit in libpijul/src/diff/delete.rs at line 24
    [16.806059][16.1240:1313](),[16.806059][16.1240:1313]()
    self.delete_lines(txn, channel, diff, d, lines_a, r, encoding)?;
  • resurrect zombie in "libpijul/src/diff/delete.rs" at line 24
    [16.116493][11.0:46](),[16.116493][11.0:46]()
    debug!("delete {:?}: {:?}", r, d[r]);
  • edit in libpijul/src/diff/delete.rs at line 25
    [11.46]
    [16.806121]
    self.delete_lines(txn, channel, diff, d, lines_a, r, encoding)?;
  • replacement in libpijul/src/diff/delete.rs at line 107
    [11.112][11.112:209]()
    debug!("first_vertex = {:?}, vertex = {:?}", first_vertex, diff.pos_a[first_vertex].vertex);
    [11.112]
    [16.808927]
    debug!(
    "first_vertex = {:?}, vertex = {:?}",
    first_vertex, diff.pos_a[first_vertex].vertex
    );
  • edit in libpijul/src/changestore/mod.rs at line 100
    [16.2460]
    [16.2460]
    debug!("filemetadata read: {:?}", buf);
  • replacement in libpijul/src/changestore/mod.rs at line 104
    [16.2510][16.2510:2553]()
    pub fn write(&self, w: &mut Vec<u8>) {
    [16.2510]
    [16.2553]
    pub fn write(&self, mut w: &mut Vec<u8>) {
  • replacement in libpijul/src/changestore/mod.rs at line 106
    [16.2609][16.2609:2659]()
    bincode::serialize_into(w, self).unwrap()
    [16.2609]
    [16.820132]
    let l = w.len();
    bincode::serialize_into(&mut w, self).unwrap();
    debug!("filemetadata write: {:?}", &w[l..]);
  • edit in libpijul/src/change.rs at line 4
    [16.2947][16.2947:2976]()
    use chrono::{DateTime, Utc};
  • edit in libpijul/src/change.rs at line 6
    [16.1502]
    [16.831519]
    use chrono::{DateTime, Utc};
  • edit in libpijul/src/change/text_changes.rs at line 426
    [16.51864]
    [16.2861]
    debug!("add_name {:?}", n);
  • replacement in libpijul/src/apply.rs at line 117
    [16.94973][16.94973:94986](),[16.94986][16.6197:6214](),[16.6214][16.95008:95077](),[16.95008][16.95008:95077]()
    txn,
    channel,
    internal,
    &hash,
    &change,
    workspace,
    [16.94973]
    [16.95077]
    txn, channel, internal, &hash, &change, workspace,
  • edit in libpijul/src/apply.rs at line 348
    [16.3408][12.5888:5889]()