Fixing output (including its uses in reset and pull)

[?]
Jan 20, 2021, 10:42 PM
LGEJSLTYI7Y2CYC3AN6ECMT3D3MTWCAKZPVQEG5MPM2OBW5FQ46AC

Dependencies

  • [2] NMX52UOG Fixing the "invalid change" errors
  • [3] RHHNPMZI Fixing `pijul git`
  • [4] LLT3GY6U When recording, do not consider deleted filenames as current
  • [5] 3KRGVQFU Do not update the mtime of unmodified files
  • [6] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [7] Y7YAFMFF Fix path prefix striping on Windows.
  • [8] QMTANHVN Reset: only output changed files
  • [9] BJOZ25EU Deterministic Git import
  • [10] XA23FMQM Reset only files that have been modified
  • [11] I7VL7VPZ Minor cleanup
  • [12] Q45QHPO4 Feedback on network stuff
  • [13] 3AMEP2Y5 More convenient interface for channels
  • [14] JL4WKA5P Implement the Sanakirja concurrency model in a cross-process way
  • [15] I52XSRUH Massive cleanup, and simplification
  • [16] VMPAOJS2 Don't output after pushing to a local channel
  • [17] 5DVRL6MF Hard-unrecord
  • [18] L4JXJHWX pijul/*: reorganize imports and remove extern crate
  • [19] 76PCXGML Pushing to, and pulling from the local repository
  • [20] VYHHOEYH Versions and formatting
  • [21] B3QWIGDE Fixing the Git features with the latest Pijul (+ conflicts in Cargo.toml)
  • [22] MHQBEHJD unrecord --reset without a pending change
  • [23] MU5GSJAW Partial push and pull (WARNING: breaks the existing protocol)
  • [24] VO5OQW4W Removing anyhow in libpijul
  • [25] LYTVEPH3 Avoid cloning into an existing path
  • [26] VNBLGT6G Do not output unmodified files when resetting (fix)
  • [27] L2LPPKD4 Fixing the Git feature
  • [28] GHO6DWPI Refactoring iterators
  • [29] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [30] UDHP4ZVB Fixing SSH asynchronicity issues

Change contents

  • replacement in pijul/src/remote/ssh.rs at line 1
    [5.25380][5.0:42]()
    use std::collections::{HashMap, HashSet};
    [5.25380]
    [5.25647]
    use std::collections::HashSet;
  • edit in pijul/src/remote/ssh.rs at line 912
    [5.169][5.169:202]()
    &mut HashMap::new(),
  • replacement in pijul/src/remote/local.rs at line 1
    [5.79745][5.249:291]()
    use std::collections::{HashMap, HashSet};
    [5.79745]
    [5.11563]
    use std::collections::HashSet;
  • replacement in pijul/src/remote/local.rs at line 128
    [5.66][5.292:470](),[5.470][5.19:37](),[5.37][5.470:482](),[5.470][5.470:482]()
    txn.output_repository_no_pending(
    &mut repo,
    &store,
    &mut channel,
    &mut HashMap::new(),
    "",
    true,
    None,
    )?;
    [5.66]
    [5.83408]
    txn.output_repository_no_pending(&mut repo, &store, &mut channel, "", true, None)?;
  • replacement in pijul/src/remote/local.rs at line 155
    [5.12700][5.12700:12742]()
    send.send(*c).await.unwrap();
    [5.12700]
    [5.3741]
    send.send(*c).await?;
  • edit in pijul/src/commands/unrecord.rs at line 1
    [5.95630][5.483:514]()
    use std::collections::HashMap;
  • edit in pijul/src/commands/unrecord.rs at line 122
    [5.1308][5.515:556]()
    &mut HashMap::new(),
  • replacement in pijul/src/commands/reset.rs at line 1
    [5.97650][5.0:42]()
    use std::collections::{HashMap, HashSet};
    [5.97650]
    [5.1289]
    use std::collections::HashSet;
  • edit in pijul/src/commands/reset.rs at line 102
    [5.494][5.494:539]()
    &mut HashMap::new(),
  • edit in pijul/src/commands/reset.rs at line 142
    [5.1927][5.1927:1972]()
    &mut HashMap::new(),
  • edit in pijul/src/commands/reset.rs at line 148
    [5.101200][5.631:678]()
    let mut done = HashMap::new();
  • edit in pijul/src/commands/reset.rs at line 155
    [5.101570][5.679:714]()
    &mut done,
  • replacement in pijul/src/commands/pushpull.rs at line 1
    [5.111631][5.715:757]()
    use std::collections::{HashMap, HashSet};
    [5.111631]
    [5.1651]
    use std::collections::HashSet;
  • replacement in pijul/src/commands/pushpull.rs at line 458
    [5.1544][5.1544:1730]()
    let mut done = HashMap::new();
    for i in touched {
    let (path, _) =
    libpijul::fs::find_path(&repo.changes, &txn, &channel.borrow(), false, i)?;
    [5.1544]
    [5.1730]
    let mut touched_paths: Vec<_> = Vec::new();
    for &i in touched.iter() {
    touched_paths
    .push(libpijul::fs::find_path(&repo.changes, &txn, &channel.borrow(), false, i)?.0)
    }
    touched_paths.sort();
    let mut last = "";
    for path in touched_paths.iter() {
    if !last.is_empty() && path.starts_with(last) {
    continue;
    }
  • replacement in pijul/src/commands/pushpull.rs at line 474
    [5.10377][5.1772:1822]()
    &mut done,
    &path,
    [5.10377]
    [5.10397]
    path,
  • edit in pijul/src/commands/pushpull.rs at line 478
    [5.10435]
    [5.11126]
    last = path
  • edit in pijul/src/commands/protocol.rs at line 242
    [5.133451][5.1823:1860]()
    &mut HashMap::new(),
  • replacement in pijul/src/commands/git.rs at line 2
    [5.137305][3.0:53]()
    use std::collections::{BTreeMap, BTreeSet, HashMap};
    [5.137305]
    [5.137367]
    use std::collections::{BTreeMap, BTreeSet};
  • edit in pijul/src/commands/git.rs at line 426
    [5.151427][3.54:87]()
    &mut HashMap::new(),
  • edit in pijul/src/commands/clone.rs at line 1
    [5.182891][5.1861:1892]()
    use std::collections::HashMap;
  • edit in pijul/src/commands/clone.rs at line 100
    [5.185732][5.1893:1926]()
    &mut HashMap::new(),
  • edit in pijul/src/commands/apply.rs at line 76
    [5.1107][5.1107:1146]()
    let mut done = HashMap::new();
  • edit in pijul/src/commands/apply.rs at line 83
    [5.1440][5.1440:1467]()
    &mut done,
  • replacement in libpijul/src/record.rs at line 398
    [5.500855][4.0:86]()
    debug!("former basename of {:?}: {:?} {:?}", vertex, basename, metadata);
    [5.500855]
    [5.395]
    debug!(
    "former basename of {:?}: {:?} {:?}",
    vertex, basename, metadata
    );
  • edit in libpijul/src/output/output.rs at line 35
    [5.673174][5.1961:2023]()
    done: &mut HashMap<Position<ChangeId>, Vertex<ChangeId>>,
  • edit in libpijul/src/output/output.rs at line 45
    [5.673397][5.2024:2038]()
    done,
  • edit in libpijul/src/output/output.rs at line 63
    [5.673775][5.2039:2101]()
    done: &mut HashMap<Position<ChangeId>, Vertex<ChangeId>>,
  • edit in libpijul/src/output/output.rs at line 71
    [5.674094]
    [5.674094]
    let mut is_first_none = true;
    if next_prefix_basename.is_none() {
    let dead = collect_dead_files(txn, txn.graph(channel), pending_change_id, Inode::ROOT)?;
    debug!("dead (line {}) = {:?}", line!(), dead);
    kill_dead_files::<T, R, P>(txn, repo, &dead)?;
    is_first_none = false;
    }
  • edit in libpijul/src/output/output.rs at line 88
    [5.674278][5.674278:674352](),[5.674352][5.4365:4462](),[5.4462][5.674437:674493](),[5.57866][5.674437:674493](),[5.82270][5.674437:674493](),[5.674437][5.674437:674493](),[5.674493][5.20227:20282](),[5.20282][5.674537:674574](),[5.674537][5.674537:674574]()
    let mut is_first_none = true;
    if next_prefix_basename.is_none() {
    let dead = collect_dead_files(txn, txn.graph(channel), pending_change_id, Inode::ROOT)?;
    debug!("dead (line {}) = {:?}", line!(), dead);
    kill_dead_files::<T, R, P>(txn, repo, &dead)?;
    is_first_none = false;
    }
  • edit in libpijul/src/output/output.rs at line 90
    [5.674695]
    [5.674695]
    let mut done_vertices = HashMap::new();
  • replacement in libpijul/src/output/output.rs at line 111
    [5.675559][5.675559:675611]()
    match done.entry(output_item.pos) {
    [5.675559]
    [5.675611]
    match done_vertices.entry(output_item.pos) {
  • edit in libpijul/src/lib.rs at line 275
    [5.725674][5.2102:2178]()
    done: &mut HashMap<pristine::Position<ChangeId>, Vertex<ChangeId>>,
  • edit in libpijul/src/lib.rs at line 285
    [5.725913][5.2179:2197]()
    done,
  • edit in libpijul/src/apply.rs at line 643
    [5.964790]
    [2.476]
    debug_assert!(ws.children.is_empty());
    debug_assert!(ws.parents.is_empty());