Fixing a interlocking when cloning from a particular patch

pmeunier
Feb 27, 2023, 8:13 PM
4XLHUME7YLJV6XUZBOW7PX62TCJXIWW2CPITXO5GZOULWGXRVDZAC

Dependencies

  • [2] ZWVYH7WP Pulling local tags
  • [3] 5SLOJYHG Fixing the Git feature
  • [4] BNPSVXIC Friendlier progress bars
  • [5] IQ4FCHPZ HTTP connections: pooling + retry on error
  • [6] LGEJSLTY Fixing output (including its uses in reset and pull)
  • [7] TKEVOH7H Fixing a bug when downloading changes, and making change download more efficient (more async)
  • [8] WTZXEWY7 Flushing the futures pipeline when downloading over HTTP(S)
  • [9] 76PCXGML Pushing to, and pulling from the local repository
  • [10] GNMZNKB4 Cursors cleanup
  • [11] VBMXB443 Retrying if the HTTP connection drops while reading the body
  • [12] WLUID7NA Do not block when downloading more than 100 changes over SSH
  • [13] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [14] 2D7P2VKJ Change completions (where the whole progress bar story started)
  • [15] EUZFFJSO Updating Pijul with the latest changes in Libpijul
  • [16] DO2Y5TY5 Tag synchronisation
  • [17] X6YFD4WV Do not download changes if we already have them
  • [18] UDHP4ZVB Fixing SSH asynchronicity issues
  • [*] A3RM526Y Integrating identity malleability
  • [*] FBXYP7QM Forgot to add remote::http

Change contents

  • replacement in pijul/src/remote/ssh.rs at line 942
    [3.3747][3.3747:3799]()
    sender: &mut tokio::sync::mpsc::Sender<CS>,
    [3.3747]
    [3.8820]
    sender: &mut tokio::sync::mpsc::Sender<(CS, bool)>,
  • replacement in pijul/src/remote/ssh.rs at line 954
    [3.3858][3.3858:3918]()
    sender: Option<&mut tokio::sync::mpsc::Sender<CS>>,
    [3.3858]
    [3.334]
    sender: Option<&mut tokio::sync::mpsc::Sender<(CS, bool)>>,
  • replacement in pijul/src/remote/ssh.rs at line 979
    [3.889][3.889:948]()
    sender.send(hash).await.unwrap_or(());
    [3.889]
    [3.600]
    sender.send((hash, true)).await.unwrap_or(());
  • replacement in pijul/src/remote/mod.rs at line 1081
    [3.16031][3.16031:16081]()
    send: &mut tokio::sync::mpsc::Sender<CS>,
    [3.16031]
    [3.66747]
    send: &mut tokio::sync::mpsc::Sender<(CS, bool)>,
  • replacement in pijul/src/remote/mod.rs at line 1186
    [3.3307][3.3307:3360]()
    if let Some(h) = recv.recv().await {
    [3.3307]
    [3.3360]
    if let Some((h, _)) = recv.recv().await {
  • edit in pijul/src/remote/mod.rs at line 1282
    [3.71943]
    [3.71943]
    let mut waiting = 0;
  • edit in pijul/src/remote/mod.rs at line 1284
    [3.71974]
    [3.17662]
    waiting += 1;
  • replacement in pijul/src/remote/mod.rs at line 1290
    [3.72116][3.72116:72174]()
    while let Some(hash) = recv_signal.recv().await {
    [3.72116]
    [3.17707]
    while let Some((hash, follow)) = recv_signal.recv().await {
  • replacement in pijul/src/remote/mod.rs at line 1292
    [3.17752][3.17752:18201]()
    libpijul::changestore::filesystem::push_filename(&mut change_path, &hash);
    std::fs::create_dir_all(change_path.parent().unwrap())?;
    use libpijul::changestore::ChangeStore;
    hashes.push(CS::Change(hash));
    for dep in repo.changes.get_dependencies(&hash)? {
    let dep: libpijul::pristine::Hash = dep;
    send_hash.send(CS::Change(dep))?;
    [3.17752]
    [3.18201]
    waiting -= 1;
    if follow {
    libpijul::changestore::filesystem::push_filename(&mut change_path, &hash);
    std::fs::create_dir_all(change_path.parent().unwrap())?;
    use libpijul::changestore::ChangeStore;
    hashes.push(CS::Change(hash));
    for dep in repo.changes.get_dependencies(&hash)? {
    let dep: libpijul::pristine::Hash = dep;
    PROGRESS.borrow_mut().unwrap()[pro_n].incr_len();
    send_hash.send(CS::Change(dep))?;
    waiting += 1
    }
    libpijul::changestore::filesystem::pop_filename(&mut change_path);
  • replacement in pijul/src/remote/mod.rs at line 1306
    [3.18219][3.18219:18302]()
    libpijul::changestore::filesystem::pop_filename(&mut change_path);
    [3.18219]
    [3.72577]
    }
    if waiting == 0 {
    break
  • replacement in pijul/src/remote/mod.rs at line 1316
    [3.578][3.207:247](),[3.207][3.207:247]()
    for hash in hashes.iter() {
    [3.578]
    [3.18303]
    for hash in hashes.iter().rev() {
  • replacement in pijul/src/remote/mod.rs at line 1318
    [3.18352][3.18352:18439]()
    txn.apply_change_ws(&repo.changes, &mut channel_, hash, &mut ws)?;
    [3.18352]
    [3.18439]
    txn.apply_change_rec_ws(&repo.changes, &mut channel_, hash, &mut ws)?;
  • replacement in pijul/src/remote/local.rs at line 197
    [3.22329][3.22329:22379]()
    send: &mut tokio::sync::mpsc::Sender<CS>,
    [3.22329]
    [3.11839]
    send: &mut tokio::sync::mpsc::Sender<(CS, bool)>,
  • edit in pijul/src/remote/local.rs at line 215
    [3.12233]
    [2.1246]
    send.send((c, false)).await?;
  • edit in pijul/src/remote/local.rs at line 222
    [3.12478][2.1479:1517]()
    debug!("hard link done");
  • replacement in pijul/src/remote/local.rs at line 224
    [2.1673][3.12672:12700](),[3.12672][3.12672:12700](),[3.12700][3.3059:3092]()
    debug!("sent");
    send.send(c).await?;
    [2.1673]
    [3.3741]
    send.send((c, true)).await?;
  • edit in pijul/src/remote/local.rs at line 258
    [20.10387]
    [20.10387]
    debug!("hard link done");
  • replacement in pijul/src/remote/http.rs at line 143
    [3.24786][3.24786:24836]()
    send: &mut tokio::sync::mpsc::Sender<CS>,
    [3.24786]
    [3.1436]
    send: &mut tokio::sync::mpsc::Sender<(CS, bool)>,
  • replacement in pijul/src/remote/http.rs at line 166
    [3.323][3.902:951](),[3.3019][3.902:951](),[3.5138][3.902:951](),[3.902][3.902:951]()
    if send.send(c).await.is_err() {
    [3.3019]
    [3.1944]
    if send.send((c, true)).await.is_err() {
  • replacement in pijul/src/remote/http.rs at line 179
    [3.376][3.239:288](),[3.3089][3.239:288](),[3.5275][3.239:288](),[3.239][3.239:288]()
    if send.send(c).await.is_err() {
    [3.3089]
    [3.288]
    if send.send((c, true)).await.is_err() {