Deterministic ordering of pulled patches

pmeunier
Dec 4, 2023, 2:16 PM
3E2KY6Y4SQ2UO6PLA4K3MQKHIRHSQCBAJIPJT7NQ6BIETMAQX5QAC

Dependencies

  • [2] 5XCNW4EV Fixing a bug when outputting after a pull, when a path to be output is a string-prefix of another one without being a path-prefix of that other one
  • [3] IBPVOKM5 Fixing a bug in patch download
  • [4] M5FK3ABT Complete dependencies when pushing and pulling
  • [5] 5QTMRUXN Fixing a race condition between progress bars
  • [6] 6ZPDI7QG pull uses None as the base case path when outputing repo
  • [7] DO2Y5TY5 Tag synchronisation
  • [8] A3RM526Y Integrating identity malleability
  • [9] X6YFD4WV Do not download changes if we already have them
  • [10] C3L2TLQW When downloading changes, check whether we have their dependencies and download them too
  • [11] 2D7P2VKJ Change completions (where the whole progress bar story started)
  • [12] HXEIH4UQ Pulling more than 100 changes at once
  • [13] 3OW3YNZX Dependencies completion in push and pull, updated after stabilisation of remote caches
  • [14] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [15] Q45QHPO4 Feedback on network stuff
  • [16] I52XSRUH Massive cleanup, and simplification
  • [17] MU5GSJAW Partial push and pull (WARNING: breaks the existing protocol)
  • [18] BNPSVXIC Friendlier progress bars

Change contents

  • replacement in pijul/src/remote/mod.rs at line 1201
    [4.735][4.1408:1454]()
    let mut to_apply_inodes = Vec::new();
    [4.69809]
    [3.286]
    let mut to_apply_inodes = HashSet::new();
  • replacement in pijul/src/remote/mod.rs at line 1231
    [4.2425][4.438:479]()
    to_apply_inodes.push(h);
    [4.2425]
    [4.2467]
    to_apply_inodes.insert(h);
  • edit in pijul/src/remote/mod.rs at line 1247
    [4.70662]
    [4.1167]
    }
    }
    let mut result = Vec::with_capacity(to_apply_inodes.len());
    for h in to_apply {
    if to_apply_inodes.contains(&h) {
    result.push(*h)
  • replacement in pijul/src/remote/mod.rs at line 1263
    [4.1405][4.2530:2558](),[4.3691][4.2530:2558](),[4.847][4.2530:2558]()
    Ok(to_apply_inodes)
    [4.1405]
    [4.70874]
    Ok(result)
  • replacement in pijul/src/commands/pushpull.rs at line 576
    [2.411][2.411:452]()
    continue
    [2.411]
    [2.452]
    continue;
  • replacement in pijul/src/commands/pushpull.rs at line 579
    [2.508][2.508:531]()
    },
    [2.508]
    [4.294]
    }
  • replacement in pijul/src/commands/pushpull.rs at line 619
    [4.295][4.295:354]()
    let mut now_ = HashSet::with_capacity(original.len());
    [4.295]
    [4.354]
    let now_: HashSet<_> = now.iter().cloned().collect();
  • edit in pijul/src/commands/pushpull.rs at line 621
    [4.411]
    [4.411]
    let mut result_h = HashSet::with_capacity(original.len());
  • replacement in pijul/src/commands/pushpull.rs at line 635
    [4.30796][4.30796:30890]()
    if original.get(&CS::Change(d)).is_some() && now_.get(&CS::Change(d)).is_none() {
    [4.30796]
    [4.638]
    let is_missing =
    now_.get(&CS::Change(d)).is_none() && result_h.get(&CS::Change(d)).is_none();
    if original.get(&CS::Change(d)).is_some() && is_missing {
  • replacement in pijul/src/commands/pushpull.rs at line 647
    [4.809][4.809:841]()
    if now_.insert(h) {
    [4.809]
    [4.841]
    debug!("all deps, push");
    if result_h.insert(h) {