Solving conflicts

pmeunier
Feb 7, 2024, 4:26 PM
HKHMES6TWN5F7VTIC6GRV7ZBUCZ7KQUCSCKIA7PV2T5HKK4FD2FAC

Dependencies

  • [2] 3E2KY6Y4 Deterministic ordering of pulled patches
  • [3] AGHLXLIT record: ensure identity argument is used
  • [4] ATUZBEPE Add hunk paths to log ouput
  • [5] QWIYNMI5 Formatting + big-endian Sanakirja
  • [6] EVDH2ECT Migrate from `pijul::identity` to `pijul_identity`
  • [7] IQ4FCHPZ HTTP connections: pooling + retry on error
  • [8] 32G3GOK7 Migrate from `dialoguer` to `pijul-interaction`
  • [9] DDJO7X2P Remove dependency on `num_cpus`
  • [10] GYGLQPVX Migrate from `pijul::current_dir` to `std::env::current_dir`
  • [11] DO2Y5TY5 Tag synchronisation
  • [12] FMKKWCFV Better clap attributes
  • [13] MQ6ERQ43 Bug fixes when unrecording a patch that introduced zombie files
  • [14] WTPFQPO5 Add global `no_prompt` flag
  • [15] BV4PLHOV Remove dependency on `once_cell`
  • [16] OYN2YVPA Create `pijul_remote` crate
  • [17] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [18] L4JXJHWX pijul/*: reorganize imports and remove extern crate
  • [19] 2TWWWCU4 Fixing a warning related to an updated in `chrono`
  • [20] PIQCNEEB Upgrading to Clap 3.0.0-alpha.5
  • [21] MDY344ZZ Options to use Patience diff instead of Myers
  • [22] I24UEJQL Various post-fire fixes
  • [23] 4OJWMSOW Fully replace crate::Identity
  • [24] 6ARU5AQ7 Improving the `pijul client` command: printing the URL + styling the page
  • [25] 7GQGVFEA making `pijul client` more robust to errors
  • [26] 6ZHY3XTG Updating deprecated methods in clap
  • [27] OU6JOR3C Add path filtering for log, add json output for log
  • [28] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [29] XRXPK45N Making `pijul dependents` deterministic
  • [30] LJFJEX43 Fixing newline issues in the protocol over OpenSSH
  • [31] YV63XF6Z Fixing a conflict
  • [32] 6U42MTEZ Fixing log -- filters, along with performance improvements
  • [33] JUYSZJSH Migrate from `pijul::progress` to `pijul_interaction::progress`
  • [34] STOFOQI4 Fixing a bug in `pijul dependents` where non-dependents could be listed (and making the command deterministic)
  • [35] QSTVUSKX Updating the protocol to output a blank line if there are no identities
  • [36] Y6EVFMTA Don't output files if they aren't in the current channel
  • [37] WFBYDQB4 fixing log --description
  • [38] LZOGKBJX new command `pijul client` for authenticating to a HTTP server
  • [39] IKZBGTGQ Handle absence of keyring as warning rather than error
  • [40] DFRNZLQ6 Fixing #798: overwrite check too strict in `pijul apply` when applying a patch adding new files
  • [41] 4KJ45IJL Implement new identity management
  • [42] 4RV7T4SR Migrate from `pijul::config` to `pijul-config`
  • [43] QL6K2ZM3 Tags
  • [44] UMF6N7CZ Keyring 2.0
  • [45] XQHABMC2 Do not block when there is no patch to pull
  • [46] IBPVOKM5 Fixing a bug in patch download
  • [47] 4HTHYIA3 Fixing HTTP download
  • [48] C3L2TLQW When downloading changes, check whether we have their dependencies and download them too
  • [49] A3RM526Y Integrating identity malleability
  • [50] EEBKW7VT Keys and identities
  • [51] Y6TBQN7M Automatically format `pijul` crate
  • [52] 5Z2Y7VGV Migrate `pijul::identity::Complete::prove` to `pijul::remote::prove`
  • [53] DOEG3V7U Only re-write identity data when changed
  • [54] O2U2JAFV Solve ordering conflicts
  • [55] M2C6QW2A Avoid serialising twice in order to save the changes' signatures
  • [56] GUL4M5FI Cleanup and formatting
  • [57] Q3UD2OLQ Fixing warning from chrono
  • [58] DWSAYGVE Update codebase to use new identity management
  • [59] VWJ2JL63 Adding a `pijul dependents` command to list the transitive closure of the reverse dependency relation
  • [60] YVA72CP2 Default feedback for the `pijul git` command
  • [61] U6TQX5Z2 pager function respects cli option and user config files, PAGER env var
  • [62] 6ZPDI7QG pull uses None as the base case path when outputing repo
  • [63] F2S6XETO Fixing log --hash-only
  • [64] EUZFFJSO Updating Pijul with the latest changes in Libpijul
  • [65] UAXGGNAZ Improve command feedback
  • [66] OU243LAB Support for staging
  • [67] KWD6K4F7 Handle absence of keyring for password creation
  • [68] 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
  • [69] 7P7G4J5Z Parse argument of `pijul log --output-format` strictly
  • [70] 44RUBHRE Only re-prove identity when credentials change
  • [71] SNZ3OAMC use native external subcommand support instead of hand-rolled one
  • [*] FBXYP7QM Forgot to add remote::http
  • [*] ABQDWHNG Migrate from `pijul::repository` to `pijul-repository`

Change contents

  • edit in pijul-remote/src/lib.rs at line 1357
    [7.30][5.187:218]()
    return Ok(());
  • edit in pijul-remote/src/lib.rs at line 1448
    [7.593][5.219:445]()
    .download_changes_rec(
    repo,
    send_hash,
    recv_signal,
    send_ready,
    pro_n,
    waiting,
    asked,
    )
  • edit in pijul-remote/src/http.rs at line 45
    [7.24470][7.3726:3815]()
    tokio::fs::create_dir_all(&path.parent().unwrap())
    .await
    .unwrap();
  • resolve order conflict in pijul-remote/src/http.rs at line 45
    [5.535]
    [7.314]
  • edit in pijul-remote/src/http.rs at line 168
    [7.1410][5.536:562]()
    continue;
  • edit in pijul-remote/src/http.rs at line 175
    [7.1626][7.3917:3944]()
    break;
  • resolve order conflict in pijul-remote/src/http.rs at line 175
    [5.590]
    [7.1652]
  • edit in pijul-remote/src/http.rs at line 542
    [7.1930][5.591:682]()
    pub async fn prove(&mut self, key: libpijul::key::SKey) -> Result<(), anyhow::Error> {
  • edit in pijul-identity/src/lib.rs at line 134
    [7.4106][7.26:140]()
    if let Ok(password) = keyring::Entry::new("pijul", name).and_then(|x| x.get_password())
    {
  • resolve order conflict in pijul-identity/src/lib.rs at line 134
    [5.797]
    [7.4192]
  • edit in pijul-identity/src/lib.rs at line 151
    [7.4743][7.141:282]()
    if let Err(e) =
    keyring::Entry::new("pijul", name).and_then(|x| x.set_password(&password_attempt))
    {
  • resolve order conflict in pijul-identity/src/lib.rs at line 151
    [5.939]
    [7.317]
  • edit in pijul-identity/src/lib.rs at line 271
    [7.7658][5.940:1085]()
    if let Err(e) = keyring::Entry::new("pijul", &self.name)
    .and_then(|x| x.set_password(&user_password))
    {
  • edit in pijul-identity/src/create.rs at line 7
    [7.28402][5.1086:1105]()
    use crate::config;
  • edit in pijul-identity/src/create.rs at line 9
    [7.31][5.1106:1140](),[7.31][5.1106:1140]()
    use thrussh_keys::key::PublicKey;
  • resurrect zombie in pijul-identity/src/create.rs at line 9
    [7.28494][7.1343:1367](),[7.28494][7.1343:1367](),[7.1367][7.1126:1175](),[7.101][7.1126:1175](),[7.101][7.1126:1175](),[7.352][7.449:483](),[7.352][7.449:483]()
    use log::{debug, warn};
    use pijul_interaction::{Confirm, Input, Select};
    use thrussh_keys::key::PublicKey;
  • edit in pijul/src/main.rs at line 3
    [7.577][7.0:24](),[7.24][7.84279:84299](),[7.577][7.84279:84299](),[7.84279][7.84279:84299](),[7.602][7.602:603]()
    use std::ffi::OsString;
    use std::io::Write;
  • edit in pijul/src/main.rs at line 4
    [7.603][7.27:60]()
    use clap::{ColorChoice, Parser};
  • resolve order conflict in pijul/src/main.rs at line 4
    [7.33]
    [7.0]
  • edit in pijul/src/main.rs at line 7
    [7.43]
    [7.716]
    use std::ffi::OsString;
    use std::io::Write;
  • edit in pijul/src/commands/tag.rs at line 294
    [7.5248][7.484:641]()
    chrono::DateTime::from_utc(
    chrono::NaiveDateTime::from_timestamp_opt(t, 0).unwrap(),
    chrono::Utc,
    )
  • resolve order conflict in pijul/src/commands/tag.rs at line 294
    [5.1315]
    [7.5345]
  • replacement in pijul/src/commands/record.rs at line 151
    [7.696][3.0:284]()
    let identity_name = if self.identity.is_some() {
    self.identity.clone().unwrap()
    } else {
    crate::identity::choose_identity_name(false).await?
    };
    let (key, _password) = crate::identity::Complete::load(&identity_name)?.decrypt()?;
    [7.696]
    [7.1910]
    let complete =
    pijul_identity::Complete::load(&pijul_identity::choose_identity_name().await?)?;
    let (secret, _) = complete.decrypt()?;
  • replacement in pijul/src/commands/record.rs at line 173
    [7.208][7.208:286]()
    "signature": key.sign_raw(&hash.to_bytes()).unwrap(),
    [7.208]
    [7.286]
    "signature": secret.sign_raw(&hash.to_bytes()).unwrap(),
  • replacement in pijul/src/commands/record.rs at line 224
    [7.814][3.285:571]()
    let identity_name = if self.identity.is_some() {
    self.identity.clone().unwrap()
    } else {
    crate::identity::choose_identity_name(false).await?
    };
    let public_key = crate::identity::public_key(&identity_name);
    [7.814]
    [7.1053]
    let identity_name = self
    .identity
    .clone()
    .unwrap_or(pijul_identity::choose_identity_name().await?);
    let public_key = pijul_identity::public_key(&identity_name);
  • edit in pijul/src/commands/record.rs at line 361
    [7.14343][3.572:752]()
    if self.patience {
    libpijul::Algorithm::Patience
    } else {
    libpijul::Algorithm::default()
    },
  • edit in pijul/src/commands/record.rs at line 469
    [7.111616][7.2521:2521](),[7.814][6.344:401](),[7.814][6.344:401](),[7.953][6.402:481](),[7.953][6.402:481](),[7.15216][6.251:343](),[7.15216][6.251:343]()
    let public_key = pijul_identity::public_key(
    .unwrap_or(pijul_identity::choose_identity_name().await?),
    pijul_identity::Complete::load(&pijul_identity::choose_identity_name().await?)?
  • resolve order conflict in pijul/src/commands/record.rs at line 469
    [7.111616]
  • edit in pijul/src/commands/pushpull.rs at line 553
    [7.411][2.315:357]()
    continue;
  • edit in pijul/src/commands/pushpull.rs at line 556
    [7.508][2.358:380]()
    }
  • edit in pijul/src/commands/protocol.rs at line 413
    [7.2669][5.1316:1349]()
    return Ok(true);
  • edit in pijul/src/commands/log.rs at line 341
    [7.410][7.857:993]()
    let mut reverse_log = self
    .txn
    .reverse_log(&*self.channel_ref.read(), None)?
    .peekable();
  • resolve order conflict in pijul/src/commands/log.rs at line 341
    [4.759]
  • edit in pijul/src/commands/log.rs at line 341
    [0.538]
    [7.507]
  • edit in pijul/src/commands/log.rs at line 480
    [7.13977][7.994:1138]()
    description: if self.cmd.descriptions {
    header.description
    } else {
    None
    },
  • resolve order conflict in pijul/src/commands/log.rs at line 480
    [4.1281]
    [7.14022]
  • edit in pijul/src/commands/log.rs at line 510
    [7.322][7.1139:1531]()
    OutputFormat::Json => serde_json::to_writer_pretty(&mut stdout, &log_iter)?,
    OutputFormat::Plaintext => {
    log_iter.for_each(|entry| match write!(&mut stdout, "{}", entry) {
    Ok(_) => Ok(()),
    Err(e) if e.kind() == std::io::ErrorKind::BrokenPipe => Ok(()),
    Err(e) => Err(e),
    })?
  • resolve order conflict in pijul/src/commands/log.rs at line 510
    [4.1674]
    [7.14521]
  • edit in pijul/src/commands/identity.rs at line 454
    [7.19585][5.1350:1502]()
    if let Err(e) =
    Entry::new("pijul", &identity.name).and_then(|x| x.delete_password())
    {
  • edit in pijul/src/commands/dependents.rs at line 3
    [7.323][5.1503:1547]()
    use std::io::Write;
    use std::path::PathBuf;
  • edit in pijul/src/commands/dependents.rs at line 38
    [7.450][7.1730:1761]()
    return Ok(());
  • resolve order conflict in pijul/src/commands/dependents.rs at line 38
    [5.1579]
    [7.1076]
  • edit in pijul/src/commands/dependents.rs at line 65
    [7.856][5.1580:1611]()
    break;
  • resolve order conflict in pijul/src/commands/debug.rs at line 7
    [7.12]
    [74.1932]
  • edit in pijul/src/commands/debug.rs at line 58
    [7.21392][7.1794:1882]()
    let (pos, _) = txn.follow_oldest_path(&repo.changes, &channel, &root)?;
  • resolve order conflict in pijul/src/commands/debug.rs at line 58
    [7.670]
  • edit in pijul/src/commands/debug.rs at line 58
    [0.545]
    [7.21530]
  • edit in pijul/src/commands/client.rs at line 3
    [7.4588][5.1831:1869]()
    use crate::config::global_config_dir;
  • edit in pijul/src/commands/client.rs at line 5
    [7.1921][7.1921:2018]()
    use hyper::service::{make_service_fn, service_fn};
    use hyper::{Body, Request, Response, Server};
  • resolve order conflict in pijul/src/commands/client.rs at line 5
    [5.1966]
    [7.1592]
  • edit in pijul/src/commands/client.rs at line 9
    [7.4792][5.1967:1999]()
    use tokio::sync::mpsc::channel;
  • edit in pijul/src/commands/client.rs at line 29
    [7.5461][5.2000:2035]()
    return Ok(());
  • edit in pijul/src/commands/client.rs at line 65
    [7.6965][5.2036:2083]()
    .unwrap(),
  • edit in pijul/src/commands/client.rs at line 80
    [7.60][5.2084:2232]()
    eprintln!(
    "If the URL doesn't open automatically, please visit {}",
    url
    );
  • edit in pijul/src/commands/client.rs at line 85
    [7.7598][5.2233:2259]()
    select! {
  • edit in pijul/src/commands/client.rs at line 111
    [7.8334][5.2260:2283]()
    break;
  • edit in pijul/src/commands/apply.rs at line 139
    [7.188][5.2284:2318]()
    continue;