Updating Pijul with the latest changes in Libpijul

pmeunier
Jul 10, 2021, 9:41 PM
EUZFFJSOWV4PXDFFPDAFBHFUUMOFEU6ST7JH57YYRRR2SEOXLN6QC

Dependencies

  • [2] NHO3QO3W Return a clean error instead of a panic when the channel for a commit is not found in `pijul git`
  • [3] WQQJLPTX Fix the comparison between channels states when one is empty
  • [4] NEJOYVJB Fixing the Git feature
  • [5] L2VH4BYK Downloading changelists from channels without an id (Nest discussions)
  • [6] DX2FO4HZ Tag CLI cleanup
  • [7] HQ2C4VT5 Pull: confusion between from and to channels
  • [8] RG4YZPKL file_operations: remove the counter-intuitive --repository options
  • [9] Y6EVFMTA Don't output files if they aren't in the current channel
  • [10] I24UEJQL Various post-fire fixes
  • [11] VU4KVXHW Git import was importing parents and hidden files (including .git), in some cases
  • [12] KWAGWB73 Adding extra dependencies from the config file
  • [13] GJNJ75U5 Canonicalise paths (reset and credit) before stripping off the prefix
  • [14] I7VL7VPZ Minor cleanup
  • [15] LGEJSLTY Fixing output (including its uses in reset and pull)
  • [16] QL6K2ZM3 Tags
  • [17] OWCCRVO5 Fixing a broken pipe in credit
  • [18] 2RXOCWUW Making libpijul deterministic (and getting rid of `rand`)
  • [19] 44BN7FWS Do not output files introduced by patches that were not applied during a push
  • [20] PH7B6I3U Fixing log --hash-only
  • [21] 4VWXL6KQ Correct handling of ignore files
  • [22] 3MHUNYER Changing --amend flag to respect -m flag
  • [23] 3AMEP2Y5 More convenient interface for channels
  • [24] YDTN6BGI Touch the channel if no file was changed
  • [25] 3FTEGCMR add timestamp_validator to tag --timestamp option
  • [26] R3H7D42U Debugging `pijul git`: proper error reporting
  • [27] WZVCLZKY address clippy lints
  • [28] XSRTXUAS Pull: show progress bar when applying
  • [29] A6R6SGCP Fixing a panic in `pijul change`
  • [30] MHQBEHJD unrecord --reset without a pending change
  • [31] L2LPPKD4 Fixing the Git feature
  • [32] PGERZ3KJ Channel renaming (also do not create a new channel when recording on a channel that doesn't exist)
  • [33] VIHXB7SG commands: set up pager for diff, change, and credit
  • [34] ZZXBHCN3 fixing the protocol
  • [35] YAJAXIV5 Unrecording changes atomically
  • [36] OU243LAB Support for staging
  • [37] GUL4M5FI Cleanup and formatting
  • [38] A3RM526Y Integrating identity malleability
  • [39] BBKV6VMN Fixing push/pull messages, and do not reverse the changes to download/upload
  • [40] VMPAOJS2 Don't output after pushing to a local channel
  • [41] F6V27C3M Fixing the "old file optimisation" in record, after the move to parallelisable records
  • [42] 5OGOE4VW Store the current channel in the pristine
  • [43] OJZWJUF2 MUCH faster `pijul add -r`
  • [44] 5SLOJYHG Fixing the Git feature
  • [45] G7VOM2IM Returning an error when recording non-existent paths
  • [46] BNPSVXIC Friendlier progress bars
  • [47] LYTVEPH3 Avoid cloning into an existing path
  • [48] AAXP2534 Tags: completing the subcommand
  • [49] CCLLB7OI Upgrading to Sanakirja 0.15 + version bump
  • [50] BXD3IQYN Fixing --features git
  • [51] 5HF7C67M push/pull: fixed "changes" arguments
  • [52] 23LVKATN Use pager crate for log output
  • [53] MDADYULS Fix a panic when switching between channels that have different files
  • [54] UDHP4ZVB Fixing SSH asynchronicity issues
  • [55] MF3WAHBI commands/record: amend current change if unspecified
  • [56] 3KRGVQFU Do not update the mtime of unmodified files
  • [57] EGSVRZJV Avoid converting between base32 and hash in pijul::commands::unrecord
  • [58] 2K7JLB4Z No pager on Windows
  • [59] SQVWP4LU When clone fails, only remove directories we have created (not other directories)
  • [60] IIV3EL2X Cleanup, formatting, and fixing the Git feature
  • [61] QWD7UE76 push/pull: rename `channel` option
  • [62] YN63NUZO Sanakirja 1.0
  • [63] TKEVOH7H Fixing a bug when downloading changes, and making change download more efficient (more async)
  • [64] ZHABNS3S Canonicalize all paths
  • [65] Y7YAFMFF Fix path prefix striping on Windows.
  • [66] UCQD3JDH Fix build errors caused by sanakirja 0.14
  • [67] PCEJFKFX Progress bar for upload and apply
  • [68] BJOZ25EU Deterministic Git import
  • [69] GNMZNKB4 Cursors cleanup
  • [70] MFTN7GBW Pre-tags cleanup + fast Sanakirja
  • [71] EEOOHGQQ More atomic "file moves+transaction"
  • [72] EEBKW7VT Keys and identities
  • [73] M5FK3ABT Complete dependencies when pushing and pulling
  • [74] SMMBFECL Converting to the new patch format "online"
  • [75] WW2EOFBB Umask in archives
  • [76] HWH4WWN3 Proper separation of Git commit messages into a message and description fields in changes
  • [77] WTRH4B2X Formatting
  • [78] V435QOJR Using path-slash to fix path issues on Windows
  • [79] HMMMKONL Fixing alive vertices
  • [80] K6GWUOD5 Styling progress bars
  • [81] 7MNTFTDF Exit with an error when a change could not be signed
  • [82] 4OCC6D42 Recursive add
  • [83] 6RVT5X4L Current state: return zero instead of an Option if there is no change on the channel
  • [84] 6DOXSHWG Cleanup, and version bump
  • [85] HSVGP2G4 Version bump + formatting
  • [86] ZBNKSYA6 Fixing a bus error when starting a transaction on a full disk
  • [87] K7JPP64S Faster error in unrecord when the change is not on the channel
  • [88] 76PCXGML Pushing to, and pulling from the local repository
  • [89] NLGQAH4H Credit and reset relative to current directory instead of the root
  • [90] B3QWIGDE Fixing the Git features with the latest Pijul (+ conflicts in Cargo.toml)
  • [91] XA23FMQM Reset only files that have been modified
  • [92] RHHNPMZI Fixing `pijul git`
  • [93] BE7GUCI2 Completing dependencies only with changes the remote does not have
  • [94] VL7ZYKHB Running hooks through shell on Windows and Unix
  • [95] CVAT6LN3 Fixing git import, and adding more useful feedback (with `RUST_LOG="pijul=info"`)
  • [96] SLJ3OHD4 unrecord: show list of changes if none were given as arguments
  • [97] GHO6DWPI Refactoring iterators
  • [98] SXEYMYF7 Fixing the bad changes in history (unfortunately, by rebooting).
  • [99] L4JXJHWX pijul/*: reorganize imports and remove extern crate
  • [100] I52XSRUH Massive cleanup, and simplification
  • [101] A3DMBJJA Upgrading the `git` subcommand to the latest Sanakirja and Libpijul
  • [102] VO5OQW4W Removing anyhow in libpijul
  • [103] QE64ATLZ Fixing asynchronicity problems in SSH
  • [104] MU5GSJAW Partial push and pull (WARNING: breaks the existing protocol)
  • [105] QMTANHVN Reset: only output changed files
  • [106] JL4WKA5P Implement the Sanakirja concurrency model in a cross-process way
  • [107] 2D7P2VKJ Change completions (where the whole progress bar story started)
  • [108] 3AZB5NUO Fixing the Git feature
  • [109] 5DVRL6MF Hard-unrecord

Change contents

  • edit in pijul/src/repository.rs at line 2
    [9.21540][9.0:20]()
    use std::sync::Arc;
  • replacement in pijul/src/repository.rs at line 11
    [9.21688][9.21:96]()
    pub working_copy: Arc<libpijul::working_copy::filesystem::FileSystem>,
    [9.21688]
    [9.21758]
    pub working_copy: libpijul::working_copy::filesystem::FileSystem,
  • replacement in pijul/src/repository.rs at line 72
    [9.5906][9.247:341]()
    working_copy: Arc::new(libpijul::working_copy::filesystem::FileSystem::from_root(
    [9.5906]
    [9.24052]
    working_copy: libpijul::working_copy::filesystem::FileSystem::from_root(
  • replacement in pijul/src/repository.rs at line 74
    [9.24087][9.342:358]()
    )),
    [9.24087]
    [9.24102]
    ),
  • replacement in pijul/src/repository.rs at line 98
    [9.6006][9.359:503]()
    working_copy: Arc::new(libpijul::working_copy::filesystem::FileSystem::from_root(
    &cur,
    )),
    [9.6006]
    [9.25068]
    working_copy: libpijul::working_copy::filesystem::FileSystem::from_root(&cur),
  • replacement in pijul/src/remote/mod.rs at line 176
    [9.57008][9.504:567]()
    .dichotomy_changelist(txn, &remote.lock()?.remote)
    [9.57008]
    [9.57072]
    .dichotomy_changelist(txn, &remote.lock().remote)
  • replacement in pijul/src/remote/mod.rs at line 180
    [9.57166][9.568:621]()
    .iter_remote(&remote.lock()?.remote, n)?
    [9.57166]
    [9.8398]
    .iter_remote(&remote.lock().remote, n)?
  • replacement in pijul/src/remote/mod.rs at line 276
    [9.7116][9.7116:7181]()
    Ok(Some(*txn.id(&*channel.read().unwrap())))
    [9.7116]
    [9.2110]
    Ok(Some(*txn.id(&*channel.read())))
  • replacement in pijul/src/remote/mod.rs at line 424
    [9.7708][5.1665:1701]()
    remote.set_id_revision(r)?;
    [9.7708]
    [5.1701]
    remote.set_id_revision(r);
  • replacement in pijul/src/remote/mod.rs at line 525
    [9.3600][9.0:60]()
    let mut channel = channel.write().unwrap();
    [9.3600]
    [9.60]
    let mut channel = channel.write();
  • replacement in pijul/src/remote/mod.rs at line 598
    [9.150][9.150:207]()
    let mut channel_ = channel.write().unwrap();
    [9.150]
    [9.207]
    let mut channel_ = channel.write();
  • replacement in pijul/src/remote/mod.rs at line 622
    [9.74338][9.622:685]()
    for x in txn.iter_remote(&remote.lock()?.remote, 0)? {
    [9.74338]
    [9.7808]
    for x in txn.iter_remote(&remote.lock().remote, 0)? {
  • replacement in pijul/src/remote/mod.rs at line 701
    [9.76875][9.686:735]()
    let channel = local_channel.read()?;
    [9.76875]
    [9.2348]
    let channel = local_channel.read();
  • replacement in pijul/src/remote/mod.rs at line 730
    [9.78229][9.2758:2802](),[9.2802][9.2883:2988](),[9.2883][9.2883:2988]()
    let (inodes, remote_changes) = self
    .update_changelist(txn, path)
    .await?
    .expect("Remote is not self");
    [9.77979]
    [9.78300]
    let (inodes, remote_changes) = if let Some(x) = self.update_changelist(txn, path).await? {
    x
    } else {
    bail!("Channel not found")
    };
  • replacement in pijul/src/remote/mod.rs at line 737
    [9.8218][9.8218:8264]()
    let rem = remote_changes.lock()?;
    [9.8218]
    [9.8264]
    let rem = remote_changes.lock();
  • replacement in pijul/src/remote/local.rs at line 3
    [9.11587][9.808:838]()
    use std::sync::{Arc, RwLock};
    [9.11587]
    [9.534]
    use std::sync::Arc;
  • replacement in pijul/src/remote/local.rs at line 27
    [9.3239][9.839:909]()
    Ok(txn.reverse_log(&*channel.read()?, None)?.next().map(|n| {
    [9.3239]
    [9.10054]
    Ok(txn.reverse_log(&*channel.read(), None)?.next().map(|n| {
  • replacement in pijul/src/remote/local.rs at line 44
    [9.8812][9.8812:8869]()
    Ok(Some(*txn.id(&*channel.read().unwrap())))
    [9.8812]
    [9.8869]
    Ok(Some(*txn.id(&*channel.read())))
  • replacement in pijul/src/remote/local.rs at line 84
    [9.10533][9.910:965]()
    &remote_channel.read()?.graph,
    [9.10533]
    [9.10589]
    &remote_channel.read().graph,
  • replacement in pijul/src/remote/local.rs at line 93
    [9.8962][9.966:1033](),[9.4961][9.966:1033]()
    for x in remote_txn.log(&*remote_channel.read()?, from)? {
    [9.8962]
    [9.10768]
    for x in remote_txn.log(&*remote_channel.read(), from)? {
  • replacement in pijul/src/remote/local.rs at line 119
    [9.82358][9.64:118](),[9.118][9.82411:82503](),[9.82411][9.82411:82503]()
    let mut txn = self.pristine.mut_txn_begin()?;
    let mut channel = txn.open_or_create_channel(to_channel.unwrap_or(&self.channel))?;
    [9.82358]
    [9.82557]
    let txn = self.pristine.arc_txn_begin()?;
    let channel = txn
    .write()
    .open_or_create_channel(to_channel.unwrap_or(&self.channel))?;
  • replacement in pijul/src/remote/local.rs at line 138
    [9.1124][9.0:66](),[9.83322][9.0:66](),[9.66][9.1125:1204]()
    upload_changes(&store, &mut txn, &mut channel, changes)?;
    let txn = Arc::new(RwLock::new(txn));
    let wc = Arc::new(repo);
    [9.1124]
    [9.1204]
    upload_changes(&store, &mut *txn.write(), &channel, changes)?;
  • replacement in pijul/src/remote/local.rs at line 140
    [9.1260][9.1260:1276]()
    wc,
    [9.1260]
    [9.1276]
    &repo,
  • replacement in pijul/src/remote/local.rs at line 142
    [9.1296][9.1296:1350]()
    txn.clone(),
    channel.clone(),
    [9.1296]
    [9.1350]
    &txn,
    &channel,
  • edit in pijul/src/remote/local.rs at line 150
    [9.1443][9.1443:1594]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/remote/local.rs at line 224
    [9.4093][9.395:443]()
    let mut channel = channel.write().unwrap();
    [9.4093]
    [9.4093]
    let mut channel = channel.write();
  • edit in pijul/src/commands/unrecord.rs at line 2
    [9.95785][9.1929:1959]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/unrecord.rs at line 37
    [9.362][9.1960:2010](),[9.2010][9.0:75]()
    let txn = repo.pristine.mut_txn_begin()?;
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    [9.96273]
    [9.75]
    let txn = repo.pristine.arc_txn_begin()?;
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/unrecord.rs at line 46
    [9.169][9.169:185]()
    cur
    [9.169]
    [9.185]
    cur.as_str()
  • replacement in pijul/src/commands/unrecord.rs at line 49
    [9.250][9.250:330]()
    let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
    [9.250]
    [9.2089]
    let channel = if let Some(channel) = txn.read().load_channel(&channel_name)? {
  • replacement in pijul/src/commands/unrecord.rs at line 72
    [9.2791][9.0:43]()
    let txn = txn.read().unwrap();
    [9.2791]
    [9.3331]
    let txn = txn.read();
  • replacement in pijul/src/commands/unrecord.rs at line 74
    [9.3361][9.3361:3416]()
    .reverse_log(&*channel.read()?, None)?
    [9.3361]
    [9.3416]
    .reverse_log(&*channel.read(), None)?
  • replacement in pijul/src/commands/unrecord.rs at line 83
    [9.3800][9.44:87]()
    let txn = txn.read().unwrap();
    [9.3800]
    [9.3800]
    let txn = txn.read();
  • replacement in pijul/src/commands/unrecord.rs at line 89
    [9.3958][9.3958:3998]()
    let channel_ = channel.read()?;
    [9.3958]
    [9.3998]
    let channel_ = channel.read();
  • replacement in pijul/src/commands/unrecord.rs at line 92
    [9.98][9.98:141]()
    let txn = txn.read().unwrap();
    [9.98]
    [9.141]
    let txn = txn.read();
  • replacement in pijul/src/commands/unrecord.rs at line 112
    [9.4436][9.4436:4480](),[9.4480][9.711:755]()
    let channel_ = channel.read()?;
    let txn_ = txn.read().unwrap();
    [9.4436]
    [9.755]
    let channel_ = channel.read();
    let txn_ = txn.read();
  • replacement in pijul/src/commands/unrecord.rs at line 139
    [9.998][9.0:113]()
    txn.write()
    .unwrap()
    .unrecord(&repo.changes, &channel, &hash, 0)?;
    [9.998]
    [9.5477]
    txn.write().unrecord(&repo.changes, &channel, &hash, 0)?;
  • replacement in pijul/src/commands/unrecord.rs at line 144
    [9.5640][9.5640:5683]()
    repo.working_copy.clone(),
    [9.5640]
    [9.5683]
    &repo.working_copy,
  • replacement in pijul/src/commands/unrecord.rs at line 146
    [9.5714][9.5714:5776]()
    txn.clone(),
    channel.clone(),
    [9.5714]
    [9.5776]
    &txn,
    &channel,
  • replacement in pijul/src/commands/unrecord.rs at line 156
    [9.5939][9.114:224]()
    txn.write()
    .unwrap()
    .unrecord(&repo.changes, &channel, &h, 0)?;
    [9.5939]
    [9.6012]
    txn.write().unrecord(&repo.changes, &channel, &h, 0)?;
  • edit in pijul/src/commands/unrecord.rs at line 161
    [9.97592][9.6107:6258]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • edit in pijul/src/commands/unrecord.rs at line 165
    [9.2195][9.2195:2241]()
    let txn = Arc::new(RwLock::new(txn));
  • resolve order conflict in pijul/src/commands/unrecord.rs at line 165
    [9.97638]
  • edit in pijul/src/commands/tag.rs at line 3
    [9.119][9.119:149]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/tag.rs at line 9
    [9.255][9.255:332]()
    use libpijul::{Base32, ChannelMutTxnT, ChannelTxnT, MutTxnT, TxnT, TxnTExt};
    [9.255]
    [6.0]
    use libpijul::{ArcTxn, Base32, ChannelMutTxnT, ChannelTxnT, MutTxnT, TxnT, TxnTExt};
  • replacement in pijul/src/commands/tag.rs at line 61
    [9.92][6.13:71]()
    let txn = repo.pristine.mut_txn_begin()?;
    [9.92]
    [6.71]
    let txn = repo.pristine.arc_txn_begin()?;
  • replacement in pijul/src/commands/tag.rs at line 65
    [9.506][6.134:176]()
    txn.current_channel()
    [9.506]
    [6.176]
    txn.read()
    .current_channel()
  • edit in pijul/src/commands/tag.rs at line 71
    [6.334][6.334:388]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/tag.rs at line 72
    [6.456][6.456:651](),[6.651][9.2135:2305](),[9.2135][9.2135:2305]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
    let channel = txn.load_channel(&channel_name)?.unwrap();
    let last_t = if let Some(n) = txn.reverse_log(&*channel.read()?, None)?.next() {
    [6.456]
    [9.2305]
    let channel = txn.read().load_channel(&channel_name)?.unwrap();
    let last_t = if let Some(n) = txn.read().reverse_log(&*channel.read(), None)?.next()
    {
  • replacement in pijul/src/commands/tag.rs at line 80
    [9.2499][9.2499:2576]()
    if txn.get_tags(&channel.read()?.tags, &last_t)?.is_some() {
    [9.2499]
    [9.2576]
    if txn
    .read()
    .get_tags(&channel.read().tags, &last_t)?
    .is_some()
    {
  • replacement in pijul/src/commands/tag.rs at line 96
    [9.3053][9.3053:3145]()
    let h = libpijul::tag::from_channel(&txn, &channel_name, &header, &mut w)?;
    [9.3053]
    [9.3145]
    let h = libpijul::tag::from_channel(&*txn.read(), &channel_name, &header, &mut w)?;
  • replacement in pijul/src/commands/tag.rs at line 101
    [9.3358][9.3358:3432]()
    txn.put_tags(&mut *channel.write()?, last_t.into(), &h)?;
    [9.3358]
    [9.3432]
    txn.write()
    .put_tags(&mut *channel.write(), last_t.into(), &h)?;
  • replacement in pijul/src/commands/tag.rs at line 148
    [9.849][9.849:930]()
    for t in txn.rev_iter_tags(txn.tags(&*channel.read()?), None)? {
    [9.849]
    [9.930]
    for t in txn.rev_iter_tags(txn.tags(&*channel.read()), None)? {
  • replacement in pijul/src/commands/tag.rs at line 212
    [6.744][6.744:769]()
    txn: Arc<RwLock<T>>,
    [6.744]
    [6.769]
    txn: ArcTxn<T>,
  • replacement in pijul/src/commands/tag.rs at line 215
    [6.821][6.821:907]()
    let channel = if let Some(channel) = txn.read().unwrap().load_channel(channel)? {
    [6.821]
    [6.907]
    let channel = if let Some(channel) = txn.read().load_channel(channel)? {
  • replacement in pijul/src/commands/tag.rs at line 225
    [6.1071][6.1071:1106]()
    repo.working_copy.clone(),
    [6.1071]
    [6.1106]
    &repo.working_copy,
  • edit in pijul/src/commands/reset.rs at line 3
    [9.1313][9.6259:6289]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/reset.rs at line 41
    [9.13910][9.6431:6481](),[9.6431][9.6431:6481]()
    let txn = repo.pristine.mut_txn_begin()?;
    [9.13910]
    [9.6481]
    let txn = repo.pristine.arc_txn_begin()?;
  • edit in pijul/src/commands/reset.rs at line 43
    [9.6482]
    [9.770]
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/reset.rs at line 51
    [9.864][9.864:932]()
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    [9.864]
    [9.932]
    cur.as_str()
  • replacement in pijul/src/commands/reset.rs at line 54
    [9.108][9.6652:6732]()
    let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
    [9.108]
    [9.98538]
    let channel = if let Some(channel) = txn.read().load_channel(&channel_name)? {
  • replacement in pijul/src/commands/reset.rs at line 69
    [9.150][9.99169:99241](),[9.186][9.99169:99241](),[9.99169][9.99169:99241]()
    txn.follow_oldest_path(&repo.changes, &channel, &path)?
    [9.150]
    [9.99241]
    txn.read()
    .follow_oldest_path(&repo.changes, &channel, &path)?
  • replacement in pijul/src/commands/reset.rs at line 78
    [9.174][9.99322:99394](),[9.264][9.99322:99394](),[9.301][9.99322:99394](),[9.99322][9.99322:99394]()
    txn.follow_oldest_path(&repo.changes, &channel, &path)?
    [9.301]
    [9.99394]
    txn.read()
    .follow_oldest_path(&repo.changes, &channel, &path)?
  • replacement in pijul/src/commands/reset.rs at line 83
    [9.99469][9.6779:6843]()
    &txn,
    &channel.read().unwrap(),
    [9.99469]
    [9.99495]
    &*txn.read(),
    &channel.read(),
  • edit in pijul/src/commands/reset.rs at line 91
    [9.6882][9.6882:6928](),[9.6928][9.6928:6929]()
    let txn = Arc::new(RwLock::new(txn));
  • edit in pijul/src/commands/reset.rs at line 93
    [9.998][9.998:1020]()
    .unwrap()
  • replacement in pijul/src/commands/reset.rs at line 105
    [9.7359][9.7359:7406]()
    let txn = txn.read().unwrap();
    [9.7359]
    [9.1188]
    let txn = txn.read();
  • replacement in pijul/src/commands/reset.rs at line 114
    [9.7733][9.7733:7780]()
    repo.working_copy.clone(),
    [9.7733]
    [9.7780]
    &repo.working_copy,
  • replacement in pijul/src/commands/reset.rs at line 130
    [9.1334][9.8307:8400](),[9.8307][9.8307:8400]()
    let last_modified = last_modified(&*txn.read().unwrap(), &*channel.read()?);
    [9.1334]
    [9.8400]
    let last_modified = last_modified(&*txn.read(), &*channel.read());
  • replacement in pijul/src/commands/reset.rs at line 132
    [9.8464][9.8464:8511]()
    repo.working_copy.clone(),
    [9.8464]
    [9.8511]
    &repo.working_copy,
  • replacement in pijul/src/commands/reset.rs at line 134
    [9.8546][9.8546:8616]()
    txn.clone(),
    channel.clone(),
    [9.8546]
    [9.8616]
    &txn,
    &channel,
  • replacement in pijul/src/commands/reset.rs at line 142
    [9.8764][9.8764:9024]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
    txn.touch_channel(&mut *channel.write()?, None);
    [9.8764]
    [9.9024]
    txn.write().touch_channel(&mut *channel.write(), None);
  • replacement in pijul/src/commands/reset.rs at line 147
    [9.9145][9.1335:1384]()
    let mut txn_ = txn.write().unwrap();
    [9.9145]
    [9.1384]
    let mut txn_ = txn.write();
  • replacement in pijul/src/commands/reset.rs at line 150
    [9.9311][9.9311:9504]()
    let (a, b, s) = libpijul::pristine::last_common_state(
    &*txn_,
    &*cur.read()?,
    &*channel.read()?,
    )?;
    [9.9311]
    [3.0]
    let (a, b, s) =
    libpijul::pristine::last_common_state(&*txn_, &*cur.read(), &*channel.read())?;
  • replacement in pijul/src/commands/reset.rs at line 159
    [3.233][9.9557:9737](),[9.9557][9.9557:9737]()
    changes_after(&*txn_, &*cur.read()?, a, &mut changediff, &mut inodes)?;
    changes_after(&*txn_, &*channel.read()?, b, &mut changediff, &mut inodes)?;
    [3.233]
    [9.9737]
    changes_after(&*txn_, &*cur.read(), a, &mut changediff, &mut inodes)?;
    changes_after(&*txn_, &*channel.read(), b, &mut changediff, &mut inodes)?;
  • replacement in pijul/src/commands/reset.rs at line 169
    [9.10047][9.10047:10147]()
    libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read()?, false, *pos)?
    [9.10047]
    [9.10147]
    libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read(), false, *pos)?
  • replacement in pijul/src/commands/reset.rs at line 188
    [9.10723][9.10723:10770]()
    repo.working_copy.clone(),
    [9.10723]
    [9.10770]
    &repo.working_copy,
  • replacement in pijul/src/commands/reset.rs at line 190
    [9.10805][9.10805:10875]()
    txn.clone(),
    channel.clone(),
    [9.10805]
    [9.10875]
    &txn,
    &channel,
  • replacement in pijul/src/commands/reset.rs at line 201
    [9.11123][9.11123:11162]()
    repo.working_copy,
    [9.11123]
    [9.11162]
    &repo.working_copy,
  • replacement in pijul/src/commands/reset.rs at line 203
    [9.11197][9.11197:11259]()
    txn.clone(),
    channel,
    [9.11197]
    [9.11259]
    &txn,
    &channel,
  • replacement in pijul/src/commands/reset.rs at line 227
    [9.11929][9.11929:11976]()
    repo.working_copy.clone(),
    [9.11929]
    [9.11976]
    &repo.working_copy,
  • replacement in pijul/src/commands/reset.rs at line 229
    [9.12011][9.12011:12081]()
    txn.clone(),
    channel.clone(),
    [9.12011]
    [9.12081]
    &txn,
    &channel,
  • edit in pijul/src/commands/reset.rs at line 240
    [9.101723][9.12248:12399]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/commands/record.rs at line 3
    [9.24][9.12484:12514]()
    use std::sync::{Arc, RwLock};
    [9.24]
    [9.1485]
    use std::sync::Arc;
  • replacement in pijul/src/commands/record.rs at line 12
    [9.12531][9.12531:12620]()
    Base32, ChannelMutTxnT, ChannelRef, ChannelTxnT, MutTxnT, MutTxnTExt, TxnT, TxnTExt,
    [9.12531]
    [9.12620]
    ArcTxn, Base32, ChannelMutTxnT, ChannelRef, ChannelTxnT, MutTxnTExt, TxnT, TxnTExt,
  • replacement in pijul/src/commands/record.rs at line 70
    [9.103545][9.229:283]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    [9.103545]
    [9.1549]
    let txn = repo.pristine.arc_txn_begin()?;
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/record.rs at line 79
    [9.1638][9.1638:1706]()
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    [9.1638]
    [9.1706]
    cur.as_str()
  • replacement in pijul/src/commands/record.rs at line 81
    [9.1717][9.82:160](),[9.82][9.82:160]()
    let mut channel = if let Some(channel) = txn.load_channel(channel)? {
    [9.1717]
    [9.160]
    let mut channel = if let Some(channel) = txn.read().load_channel(&channel)? {
  • replacement in pijul/src/commands/record.rs at line 89
    [9.287][9.287:338]()
    let (h, c) = txn.hash_from_prefix(h)?;
    [9.287]
    [9.338]
    let (h, c) = txn.read().hash_from_prefix(h)?;
  • replacement in pijul/src/commands/record.rs at line 91
    [9.357][9.12732:12800]()
    .get_changeset(txn.changes(&*channel.read()?), &c)?
    [9.357]
    [9.424]
    .read()
    .get_changeset(txn.read().changes(&*channel.read()), &c)?
  • replacement in pijul/src/commands/record.rs at line 98
    [9.590][9.12801:12850]()
    channel.read().unwrap().name
    [9.590]
    [9.632]
    channel.read().name
  • replacement in pijul/src/commands/record.rs at line 106
    [9.128][9.128:174](),[9.174][9.12851:12938]()
    txn.hash_from_prefix(hash)?.0
    } else if let Some(h) = txn.reverse_log(&*channel.read()?, None)?.next() {
    [9.128]
    [9.10134]
    txn.read().hash_from_prefix(hash)?.0
    } else if let Some(h) = txn.read().reverse_log(&*channel.read(), None)?.next() {
  • replacement in pijul/src/commands/record.rs at line 121
    [9.282][9.342:368]()
    txn.unrecord(
    [9.282]
    [9.368]
    txn.write().unrecord(
  • replacement in pijul/src/commands/record.rs at line 136
    [9.506][9.13021:13154]()
    Some(Arc::new(
    libpijul::working_copy::filesystem::FileSystem::from_root(w),
    )),
    [9.506]
    [9.590]
    Some(libpijul::working_copy::filesystem::FileSystem::from_root(w)),
  • edit in pijul/src/commands/record.rs at line 141
    [9.696][9.13155:13201]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/record.rs at line 147
    [9.13231][9.13231:13302]()
    working_copy.clone().unwrap_or(repo.working_copy.clone()),
    [9.13231]
    [9.104172]
    working_copy.as_ref().unwrap_or(&repo.working_copy),
  • replacement in pijul/src/commands/record.rs at line 159
    [9.2058][9.1145:1421](),[9.105101][9.1145:1421]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
    txn.apply_local_change(&mut channel, &change, &hash, &updates)?;
    [9.2058]
    [9.14018]
    let mut txn_ = txn.write();
    txn_.apply_local_change(&mut channel, &change, &hash, &updates)?;
  • replacement in pijul/src/commands/record.rs at line 184
    [9.2172][9.2172:2249]()
    txn.touch_channel(&mut *channel.write()?, Some(oldest));
    [9.2172]
    [9.681]
    txn_.touch_channel(&mut *channel.write(), Some(oldest));
  • edit in pijul/src/commands/record.rs at line 186
    [9.699]
    [9.2250]
    std::mem::drop(txn_);
  • replacement in pijul/src/commands/record.rs at line 191
    [9.2360][9.2360:2644]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
    txn.touch_channel(&mut *channel.write()?, None);
    [9.2360]
    [9.2644]
    txn.write().touch_channel(&mut *channel.write(), None);
  • replacement in pijul/src/commands/record.rs at line 270
    [9.106516][9.13756:13785]()
    txn: Arc<RwLock<T>>,
    [9.106516]
    [9.13785]
    txn: ArcTxn<T>,
  • replacement in pijul/src/commands/record.rs at line 272
    [9.13817][9.13817:13880]()
    working_copy: Arc<libpijul::working_copy::FileSystem>,
    [9.13817]
    [9.106637]
    working_copy: &libpijul::working_copy::FileSystem,
  • replacement in pijul/src/commands/record.rs at line 280
    [9.572][9.572:604]()
    Arc<RwLock<T>>,
    [9.572]
    [9.604]
    ArcTxn<T>,
  • replacement in pijul/src/commands/record.rs at line 286
    [9.777][9.13881:13909](),[9.2771][9.13881:13909](),[9.106748][9.13881:13909]()
    Arc<RwLock<T>>,
    [9.777]
    [9.778]
    ArcTxn<T>,
  • replacement in pijul/src/commands/record.rs at line 305
    [9.14035][9.14035:14085]()
    working_copy.clone(),
    [9.14035]
    [9.1408]
    working_copy,
  • replacement in pijul/src/commands/record.rs at line 317
    [9.14233][9.14233:14275]()
    working_copy.clone(),
    [9.14233]
    [9.1757]
    working_copy,
  • replacement in pijul/src/commands/record.rs at line 342
    [9.14659][9.14659:14700]()
    let txn_ = txn.write().unwrap();
    [9.14659]
    [9.107617]
    let txn_ = txn.write();
  • replacement in pijul/src/commands/record.rs at line 349
    [9.14827][9.14827:14863]()
    c.into_inner().unwrap()
    [9.14827]
    [9.14863]
    c.into_inner()
  • edit in pijul/src/commands/pushpull.rs at line 4
    [9.1695][9.15142:15172]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/pushpull.rs at line 43
    [9.12956][9.14737:14829]()
    writeln!(stdout, " {}: {}", r.id(), r.lock().unwrap().path.as_str())?;
    [9.12956]
    [9.112628]
    writeln!(stdout, " {}: {}", r.id(), r.lock().path.as_str())?;
  • replacement in pijul/src/commands/pushpull.rs at line 131
    [9.114607][9.1718:1772]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    [9.114607]
    [9.1772]
    let txn = repo.pristine.arc_txn_begin()?;
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/pushpull.rs at line 140
    [9.1871][9.1871:1971]()
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
    [9.1871]
    [9.114690]
    cur.as_str()
    };
  • replacement in pijul/src/commands/pushpull.rs at line 155
    [9.115226][9.1972:2010]()
    channel_name.as_str()
    [9.115226]
    [9.115255]
    channel_name
  • replacement in pijul/src/commands/pushpull.rs at line 160
    [9.115325][9.2011:2045]()
    channel_name.as_str()
    [9.115325]
    [9.115350]
    channel_name
  • replacement in pijul/src/commands/pushpull.rs at line 172
    [9.401][9.6954:7038](),[9.115611][9.6954:7038](),[9.7038][9.2046:2112]()
    let remote_changes = remote.update_changelist(&mut txn, &self.path).await?;
    let channel = txn.open_or_create_channel(&channel_name)?;
    [9.115558]
    [9.115888]
    let remote_changes = remote
    .update_changelist(&mut *txn.write(), &self.path)
    .await?;
    let channel = txn.write().open_or_create_channel(&channel_name)?;
  • replacement in pijul/src/commands/pushpull.rs at line 179
    [9.7118][9.7118:7207]()
    let (p, ambiguous) = txn.follow_oldest_path(&repo.changes, &channel, path)?;
    [9.7118]
    [9.116032]
    let (p, ambiguous) = txn
    .read()
    .follow_oldest_path(&repo.changes, &channel, path)?;
  • replacement in pijul/src/commands/pushpull.rs at line 187
    [9.12983][9.15173:15260]()
    libpijul::fs::iter_graph_descendants(&txn, &channel.read()?.graph, p)?
    [9.12983]
    [9.13071]
    libpijul::fs::iter_graph_descendants(&*txn.read(), &channel.read().graph, p)?
  • replacement in pijul/src/commands/pushpull.rs at line 193
    [9.10513][9.15261:15322](),[9.15322][9.13190:13224](),[9.13190][9.13190:13224](),[9.13224][9.7456:7524](),[9.116338][9.7456:7524](),[9.7524][9.10514:10577](),[9.10577][9.4622:4667](),[9.13287][9.4622:4667](),[9.4622][9.4622:4667](),[9.4667][9.13288:13347](),[9.13347][9.10578:10644](),[9.10644][9.7525:7567](),[9.13412][9.7525:7567](),[9.4789][9.7525:7567](),[9.7567][9.10645:10694](),[9.10694][9.7609:7686](),[9.7609][9.7609:7686](),[9.7686][9.10695:10835](),[9.10835][9.7819:7888](),[9.7819][9.7819:7888](),[9.7888][9.4961:4987](),[9.4961][9.4961:4987]()
    for x in txn.reverse_log(&*channel.read()?, None)? {
    let (_, (h, m)) = x?;
    if let Some((_, ref remote_changes)) = remote_changes {
    if txn.remote_has_state(remote_changes, &m)? {
    break;
    }
    let h_int = txn.get_internal(h)?.unwrap();
    if !txn.remote_has_change(&remote_changes, &h)? {
    if paths.is_empty() {
    to_upload.push(h.into())
    } else {
    for p in paths.iter() {
    if txn.get_touched_files(p, Some(h_int))?.is_some() {
    to_upload.push(h.into());
    break;
    }
    }
    [9.10513]
    [9.116707]
    {
    let txn = txn.read();
    for x in txn.reverse_log(&*channel.read(), None)? {
    let (_, (h, m)) = x?;
    if let Some((_, ref remote_changes)) = remote_changes {
    if txn.remote_has_state(remote_changes, &m)? {
    break;
  • edit in pijul/src/commands/pushpull.rs at line 201
    [9.116729][9.5017:5132](),[9.5132][9.13497:13572](),[9.13572][9.15323:15374]()
    }
    } else if let crate::remote::RemoteRepo::LocalChannel(ref remote_channel) = remote {
    if let Some(channel) = txn.load_channel(remote_channel)? {
    let channel = channel.read()?;
  • replacement in pijul/src/commands/pushpull.rs at line 202
    [9.13636][9.344:428]()
    if txn.get_changeset(txn.changes(&channel), h_int)?.is_none() {
    [9.13636]
    [9.7889]
    if !txn.remote_has_change(&remote_changes, &h)? {
  • edit in pijul/src/commands/pushpull.rs at line 214
    [9.5745]
    [9.116792]
    } else if let crate::remote::RemoteRepo::LocalChannel(ref remote_channel) = remote {
    if let Some(channel) = txn.load_channel(remote_channel)? {
    let channel = channel.read();
    let h_int = txn.get_internal(h)?.unwrap();
    if txn.get_changeset(txn.changes(&channel), h_int)?.is_none() {
    if paths.is_empty() {
    to_upload.push(h.into())
    } else {
    for p in paths.iter() {
    if txn.get_touched_files(p, Some(h_int))?.is_some() {
    to_upload.push(h.into());
    break;
    }
    }
    }
    }
    }
  • edit in pijul/src/commands/pushpull.rs at line 246
    [9.506]
    [9.506]
    let txn = txn.read();
  • edit in pijul/src/commands/pushpull.rs at line 273
    [9.8408]
    [9.69]
    let txn = txn.read();
  • replacement in pijul/src/commands/pushpull.rs at line 276
    [9.158][9.0:97]()
    let comp = complete_deps(&txn, &remote_changes, &repo.changes, &to_upload, &d)?;
    [9.158]
    [9.232]
    let comp = complete_deps(&*txn, &remote_changes, &repo.changes, &to_upload, &d)?;
  • replacement in pijul/src/commands/pushpull.rs at line 292
    [9.117334][9.2417:2507]()
    .upload_changes(&mut txn, repo.changes_dir.clone(), push_channel, &to_upload)
    [9.117334]
    [9.117414]
    .upload_changes(
    &mut *txn.write(),
    repo.changes_dir.clone(),
    push_channel,
    &to_upload,
    )
  • replacement in pijul/src/commands/pushpull.rs at line 309
    [9.15372][9.402:456](),[9.6765][9.402:456](),[9.456][9.2113:2188]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    [9.15372]
    [7.0]
    let txn = repo.pristine.arc_txn_begin()?;
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/pushpull.rs at line 318
    [9.2287][9.2287:2335]()
    cur
    }
    .to_string();
    [9.2287]
    [9.2335]
    cur.as_str()
    };
  • replacement in pijul/src/commands/pushpull.rs at line 321
    [9.2389][9.2389:2459]()
    let mut channel = txn.open_or_create_channel(&channel_name)?;
    [9.2389]
    [9.117853]
    let mut channel = txn.write().open_or_create_channel(&channel_name)?;
  • replacement in pijul/src/commands/pushpull.rs at line 347
    [9.8542][9.15396:15480]()
    let remote_changes = remote.update_changelist(&mut txn, &self.path).await?;
    [9.8542]
    [9.8542]
    let remote_changes = remote
    .update_changelist(&mut *txn.write(), &self.path)
    .await?;
  • replacement in pijul/src/commands/pushpull.rs at line 355
    [9.8812][9.15375:15454]()
    for x in txn.iter_remote(&remote_changes.lock()?.remote, 0)? {
    [9.8812]
    [9.11155]
    let txn = txn.read();
    for x in txn.iter_remote(&remote_changes.lock().remote, 0)? {
  • replacement in pijul/src/commands/pushpull.rs at line 359
    [9.27][9.15455:15536]()
    .channel_has_state(txn.states(&*channel.read()?), &p.b)?
    [9.27]
    [9.105]
    .channel_has_state(txn.states(&*channel.read()), &p.b)?
  • edit in pijul/src/commands/pushpull.rs at line 369
    [9.8863]
    [9.8863]
    let txn = txn.read();
  • replacement in pijul/src/commands/pushpull.rs at line 377
    [9.14103][9.15537:15632]()
    libpijul::fs::iter_graph_descendants(&txn, &channel.read()?.graph, p)?
    [9.14103]
    [9.14199]
    libpijul::fs::iter_graph_descendants(&*txn, &channel.read().graph, p)?
  • replacement in pijul/src/commands/pushpull.rs at line 386
    [9.14430][9.15633:15698]()
    let remote_channel = remote_channel.read()?;
    [9.14430]
    [9.14431]
    let remote_channel = remote_channel.read();
  • replacement in pijul/src/commands/pushpull.rs at line 390
    [9.194][9.15699:15782]()
    .channel_has_state(txn.states(&*channel.read()?), &m)?
    [9.194]
    [9.276]
    .channel_has_state(txn.states(&*channel.read()), &m)?
  • replacement in pijul/src/commands/pushpull.rs at line 397
    [9.7561][9.15783:15866]()
    .get_changeset(txn.changes(&*channel.read()?), h_int)?
    [9.7561]
    [9.7644]
    .get_changeset(txn.changes(&*channel.read()), h_int)?
  • edit in pijul/src/commands/pushpull.rs at line 419
    [9.119192]
    [9.2508]
    let txn = txn.read();
  • edit in pijul/src/commands/pushpull.rs at line 428
    [9.9828][9.15867:15913]()
    let txn = Arc::new(RwLock::new(txn));
  • edit in pijul/src/commands/pushpull.rs at line 429
    [9.15987][9.15987:16142]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/commands/pushpull.rs at line 432
    [9.9978][9.9978:10004]()
    &mut txn,
    [9.9978]
    [9.10004]
    &mut *txn.write(),
  • replacement in pijul/src/commands/pushpull.rs at line 454
    [9.566][9.98:187]()
    let comp = complete_deps(&txn, &None, &repo.changes, &to_download, &d)?;
    [9.566]
    [9.642]
    let comp = complete_deps(&*txn.read(), &None, &repo.changes, &to_download, &d)?;
  • replacement in pijul/src/commands/pushpull.rs at line 469
    [9.267][9.509:565]()
    let mut channel = channel.write().unwrap();
    [9.267]
    [9.155]
    let mut channel = channel.write();
    let mut txn = txn.write();
  • replacement in pijul/src/commands/pushpull.rs at line 478
    [9.120642][9.120642:120724]()
    .complete_changes(&repo, &txn, &mut channel, &to_download, self.full)
    [9.120642]
    [9.120724]
    .complete_changes(&repo, &*txn.read(), &mut channel, &to_download, self.full)
  • edit in pijul/src/commands/pushpull.rs at line 485
    [9.801]
    [9.801]
    let txn_ = txn.read();
  • replacement in pijul/src/commands/pushpull.rs at line 487
    [9.839][9.11873:11935](),[9.11935][9.894:952](),[9.894][9.894:952]()
    if let Some(int) = txn.get_internal(&d.into())? {
    for inode in txn.iter_rev_touched(int)? {
    [9.839]
    [9.952]
    if let Some(int) = txn_.get_internal(&d.into())? {
    for inode in txn_.iter_rev_touched(int)? {
  • replacement in pijul/src/commands/pushpull.rs at line 496
    [9.1227][9.11936:12018]()
    change: txn.get_external(&inode.change)?.unwrap().into(),
    [9.1227]
    [9.1301]
    change: txn_.get_external(&inode.change)?.unwrap().into(),
  • replacement in pijul/src/commands/pushpull.rs at line 505
    [9.1543][9.16192:16238]()
    let txn = Arc::new(RwLock::new(txn));
    [9.1543]
    [9.847]
    std::mem::drop(txn_);
  • replacement in pijul/src/commands/pushpull.rs at line 508
    [9.935][9.935:974](),[9.974][9.16239:16493](),[9.16493][9.1129:1269](),[9.1129][9.1129:1269]()
    for &i in touched.iter() {
    if let Some((path, _)) = libpijul::fs::find_path(
    &repo.changes,
    &*txn.read().unwrap(),
    &*channel.read()?,
    false,
    i,
    )? {
    touched_paths.push(path)
    } else {
    touched_paths.clear();
    break;
    [9.935]
    [9.1269]
    {
    let txn_ = txn.read();
    for &i in touched.iter() {
    if let Some((path, _)) =
    libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read(), false, i)?
    {
    touched_paths.push(path)
    } else {
    touched_paths.clear();
    break;
    }
  • replacement in pijul/src/commands/pushpull.rs at line 538
    [9.16641][9.16641:16692]()
    repo.working_copy.clone(),
    [9.16641]
    [9.16692]
    &repo.working_copy,
  • replacement in pijul/src/commands/pushpull.rs at line 540
    [9.16731][9.16731:16809]()
    txn.clone(),
    channel.clone(),
    [9.16731]
    [9.16809]
    &txn,
    &channel,
  • replacement in pijul/src/commands/pushpull.rs at line 555
    [9.17119][9.17119:17170]()
    repo.working_copy.clone(),
    [9.17119]
    [9.17170]
    &repo.working_copy,
  • replacement in pijul/src/commands/pushpull.rs at line 557
    [9.17209][9.17209:17287]()
    txn.clone(),
    channel.clone(),
    [9.17209]
    [9.17287]
    &txn,
    &channel,
  • edit in pijul/src/commands/pushpull.rs at line 570
    [9.11136][9.17493:17648]()
    let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/commands/pushpull.rs at line 571
    [9.120988][9.731:794]()
    txn.unrecord(&repo.changes, &mut channel, &h, 0)?;
    [9.120988]
    [9.121048]
    txn.write().unrecord(&repo.changes, &mut channel, &h, 0)?;
  • edit in pijul/src/commands/protocol.rs at line 5
    [9.1913][9.17649:17679]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/protocol.rs at line 53
    [9.15837][9.457:511](),[9.6929][9.457:511]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    [9.15837]
    [9.124930]
    let txn = repo.pristine.arc_txn_begin()?;
  • replacement in pijul/src/commands/protocol.rs at line 67
    [9.15889][9.15889:15998]()
    let channel = load_channel(&txn, &cap[1])?;
    let c = channel.read().unwrap();
    [9.15889]
    [9.15998]
    let channel = load_channel(&*txn.read(), &cap[1])?;
    let c = channel.read();
  • replacement in pijul/src/commands/protocol.rs at line 72
    [9.16129][9.125465:125525](),[9.125465][9.125465:125525]()
    let channel = load_channel(&txn, &cap[1])?;
    [9.16129]
    [9.125525]
    let channel = load_channel(&*txn.read(), &cap[1])?;
  • replacement in pijul/src/commands/protocol.rs at line 79
    [9.125737][9.17680:17744]()
    for x in txn.log(&*channel.read()?, pos)? {
    [9.125737]
    [9.15402]
    for x in txn.read().log(&*channel.read(), pos)? {
  • replacement in pijul/src/commands/protocol.rs at line 94
    [9.126196][9.17745:17836]()
    } else if let Some(x) = txn.reverse_log(&*channel.read()?, None)?.next() {
    [9.126196]
    [9.15540]
    } else if let Some(x) = txn.read().reverse_log(&*channel.read(), None)?.next() {
  • replacement in pijul/src/commands/protocol.rs at line 103
    [9.126588][9.126588:126648]()
    let channel = load_channel(&txn, &cap[1])?;
    [9.126588]
    [9.126648]
    let channel = load_channel(&*txn.read(), &cap[1])?;
  • edit in pijul/src/commands/protocol.rs at line 107
    [9.11419]
    [9.126749]
    let txn = txn.read();
  • replacement in pijul/src/commands/protocol.rs at line 119
    [9.15745][9.17837:17936]()
    libpijul::fs::iter_graph_descendants(&txn, &channel.read()?.graph, p)?
    [9.15745]
    [9.15845]
    libpijul::fs::iter_graph_descendants(&*txn, &channel.read().graph, p)?
  • replacement in pijul/src/commands/protocol.rs at line 128
    [9.11929][9.17937:17998]()
    for x in txn.log(&*channel.read()?, from)? {
    [9.11929]
    [9.16097]
    for x in txn.log(&*channel.read(), from)? {
  • replacement in pijul/src/commands/protocol.rs at line 191
    [9.130373][9.566:626]()
    let channel = load_channel(&txn, &cap[1])?;
    [9.130373]
    [9.626]
    let channel = load_channel(&*txn.read(), &cap[1])?;
  • replacement in pijul/src/commands/protocol.rs at line 193
    [9.644][9.644:794]()
    let mut channel_ = channel.write().unwrap();
    txn.apply_change_ws(&repo.changes, &mut channel_, &h, &mut ws)?;
    [9.644]
    [9.794]
    let mut channel_ = channel.write();
    txn.write()
    .apply_change_ws(&repo.changes, &mut channel_, &h, &mut ws)?;
  • replacement in pijul/src/commands/protocol.rs at line 205
    [9.131201][9.131201:131261]()
    let channel = load_channel(&txn, &cap[1])?;
    [9.131201]
    [9.131261]
    let channel = load_channel(&*txn.read(), &cap[1])?;
  • replacement in pijul/src/commands/protocol.rs at line 212
    [9.131779][9.17999:18091](),[9.91][9.131876:131952](),[9.16769][9.131876:131952](),[9.18091][9.131876:131952](),[9.131876][9.131876:131952]()
    if txn.current_state(&*channel.read()?)? == state && extra.is_empty() {
    txn.archive(&repo.changes, &channel, &mut tarball)?
    [9.131779]
    [9.131952]
    if txn.read().current_state(&*channel.read())? == state && extra.is_empty() {
    txn.read().archive(&repo.changes, &channel, &mut tarball)?
  • edit in pijul/src/commands/protocol.rs at line 221
    [9.132242]
    [9.132242]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/protocol.rs at line 235
    [9.132737][9.132737:132809]()
    txn.archive(&repo.changes, &channel, &mut tarball)?
    [9.132737]
    [9.132809]
    txn.write().archive(&repo.changes, &channel, &mut tarball)?
  • edit in pijul/src/commands/protocol.rs at line 325
    [9.133262][9.18092:18138]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/protocol.rs at line 327
    [9.18236][9.18236:18279]()
    repo.working_copy.clone(),
    [9.18236]
    [9.133390]
    &repo.working_copy,
  • replacement in pijul/src/commands/protocol.rs at line 329
    [9.133421][9.18280:18342]()
    txn.clone(),
    channel.clone(),
    [9.133421]
    [9.133451]
    &txn,
    &channel,
  • edit in pijul/src/commands/protocol.rs at line 339
    [9.133549][9.18377:18548]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/commands/mod.rs at line 70
    [9.18685][9.18685:18732]()
    txn: std::sync::Arc<std::sync::RwLock<T>>,
    [9.18685]
    [9.18732]
    txn: libpijul::ArcTxn<T>,
  • replacement in pijul/src/commands/mod.rs at line 81
    [9.18896][9.18896:18931]()
    repo.working_copy.clone(),
    [9.18896]
    [9.2068]
    &repo.working_copy,
  • replacement in pijul/src/commands/mod.rs at line 90
    [9.2179][9.18996:19036]()
    let mut txn = txn.write().unwrap();
    [9.2179]
    [9.2179]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/mod.rs at line 97
    [9.19170][9.19170:19202]()
    c.into_inner().unwrap()
    [9.19170]
    [9.19202]
    c.into_inner()
  • replacement in pijul/src/commands/mod.rs at line 110
    [9.2561][9.19281:19379]()
    libpijul::change::dependencies(&*txn, &*channel.read()?, pending_change.changes.iter())?;
    [9.2561]
    [9.2646]
    libpijul::change::dependencies(&*txn, &*channel.read(), pending_change.changes.iter())?;
  • replacement in pijul/src/commands/log.rs at line 50
    [9.135542][9.19380:19445]()
    for h in txn.reverse_log(&*channel.read()?, None)? {
    [9.135542]
    [9.12912]
    for h in txn.reverse_log(&*channel.read(), None)? {
  • replacement in pijul/src/commands/log.rs at line 60
    [9.986][9.19446:19511](),[9.135743][9.19446:19511]()
    for h in txn.reverse_log(&*channel.read()?, None)? {
    [9.986]
    [9.17247]
    for h in txn.reverse_log(&*channel.read(), None)? {
  • edit in pijul/src/commands/git.rs at line 12
    [9.137436][9.813:843]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/git.rs at line 164
    [9.141594][9.844:873]()
    txn: Arc<RwLock<T>>,
    [9.141594]
    [9.141615]
    txn: &ArcTxn<T>,
  • replacement in pijul/src/commands/git.rs at line 174
    [9.142007][9.874:930]()
    let mut txn = txn.write().unwrap();
    [9.142007]
    [9.142007]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/git.rs at line 252
    [9.144061][9.0:51]()
    let txn = repo.repo.pristine.mut_txn_begin()?;
    [9.144061]
    [9.144111]
    let txn = repo.repo.pristine.arc_txn_begin()?;
  • replacement in pijul/src/commands/git.rs at line 256
    [9.144237][2.0:70]()
    let channel = if let Some(c) = txn.load_channel(&oid_)? {
    [9.144237]
    [2.70]
    let channel = if let Some(c) = txn.read().load_channel(&oid_)? {
  • replacement in pijul/src/commands/git.rs at line 261
    [2.179][9.976:1005](),[9.162][9.976:1005](),[9.1005][9.931:995]()
    let (_, p) = txn
    .changeid_reverse_log(&*channel.read()?, None)?
    [2.179]
    [9.144396]
    let (_, &p) = txn
    .read()
    .changeid_reverse_log(&*channel.read(), None)?
  • replacement in pijul/src/commands/git.rs at line 293
    [9.145484][9.996:1105]()
    let txn = repo.repo.pristine.mut_txn_begin()?;
    let txn = Arc::new(RwLock::new(txn));
    [9.145484]
    [9.145484]
    let txn = repo.repo.pristine.arc_txn_begin()?;
  • replacement in pijul/src/commands/git.rs at line 303
    [9.145980][9.1184:1240]()
    let mut txn = txn.write().unwrap();
    [9.145980]
    [9.389]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/git.rs at line 313
    [9.146349][9.1241:1297]()
    let mut txn = txn.write().unwrap();
    [9.146349]
    [9.146349]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/git.rs at line 319
    [9.146516][9.146516:146606](),[9.146606][9.1298:1368](),[9.1368][9.146670:146777](),[9.146670][9.146670:146777](),[9.146777][9.971:1094]()
    import_commit_parents(
    repo,
    dag,
    txn.clone(),
    channel.clone(),
    &oid,
    &mut ws,
    &mut stats,
    )?;
    let state =
    import_commit(git, repo, txn.clone(), channel.clone(), &oid, &mut stats)?;
    [9.146516]
    [9.146874]
    import_commit_parents(repo, dag, &txn, &channel, &oid, &mut ws, &mut stats)?;
    let state = import_commit(git, repo, &txn, &channel, &oid, &mut stats)?;
  • replacement in pijul/src/commands/git.rs at line 322
    [9.146925][9.1473:1546]()
    dag.collect_dead_parents(&oid, &mut todo, txn.clone())?;
    [9.146925]
    [9.146995]
    dag.collect_dead_parents(&oid, &mut todo, &txn)?;
  • edit in pijul/src/commands/git.rs at line 335
    [9.147512][9.1547:1718]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };
  • replacement in pijul/src/commands/git.rs at line 363
    [9.148197][9.1719:1772]()
    txn: Arc<RwLock<T>>,
    channel: ChannelRef<T>,
    [9.148197]
    [9.148239]
    txn: &ArcTxn<T>,
    channel: &ChannelRef<T>,
  • replacement in pijul/src/commands/git.rs at line 372
    [9.148491][9.1773:1812]()
    let txn = txn.read().unwrap();
    [9.148491]
    [9.148491]
    let txn = txn.read();
  • replacement in pijul/src/commands/git.rs at line 386
    [9.131][9.1813:1869]()
    for x in txn.log(&*p_channel.read()?, 0)? {
    [9.131]
    [9.594]
    for x in txn.log(&*p_channel.read(), 0)? {
  • replacement in pijul/src/commands/git.rs at line 412
    [9.149856][9.1958:2011]()
    txn: Arc<RwLock<T>>,
    channel: ChannelRef<T>,
    [9.149856]
    [9.149906]
    txn: &ArcTxn<T>,
    channel: &ChannelRef<T>,
  • replacement in pijul/src/commands/git.rs at line 419
    [9.150070][9.2012:2111]()
    let (needs_output, to_apply) = make_apply_plan(repo, txn.clone(), channel.clone(), dag, oid)?;
    [9.150070]
    [9.150152]
    let (needs_output, to_apply) = make_apply_plan(repo, &txn, &channel, dag, oid)?;
  • replacement in pijul/src/commands/git.rs at line 424
    [9.150285][9.2112:2153]()
    let mut txn_ = txn.write().unwrap();
    [9.150285]
    [9.150285]
    let mut txn_ = txn.write();
  • replacement in pijul/src/commands/git.rs at line 426
    [9.150321][9.2154:2207]()
    let mut channel_ = channel.write().unwrap();
    [9.150321]
    [9.2207]
    let mut channel_ = channel.write();
  • replacement in pijul/src/commands/git.rs at line 435
    [9.150649][9.2428:2512]()
    check_alive_debug(&repo.repo.changes, &*txn_, &*channel.read()?, line!())?;
    [9.150649]
    [9.150714]
    check_alive_debug(&repo.repo.changes, &*txn_, &*channel.read(), line!())?;
  • replacement in pijul/src/commands/git.rs at line 447
    [9.2635][9.2635:2679]()
    repo.repo.working_copy.clone(),
    [9.2635]
    [9.151374]
    &repo.repo.working_copy,
  • replacement in pijul/src/commands/git.rs at line 449
    [9.151406][9.2680:2734]()
    txn.clone(),
    channel.clone(),
    [9.151406]
    [9.151427]
    &txn,
    &channel,
  • replacement in pijul/src/commands/git.rs at line 459
    [9.151569][9.2765:2902]()
    let txn = txn.read().unwrap();
    check_alive_debug(&repo.repo.changes, &*txn, &channel.read().unwrap(), line!())?;
    [9.151569]
    [9.151638]
    let txn = txn.read();
    check_alive_debug(&repo.repo.changes, &*txn, &channel.read(), line!())?;
  • replacement in pijul/src/commands/git.rs at line 467
    [9.151772][9.2903:3014]()
    let txn = txn.read().unwrap();
    check_tree_inodes(&*txn, txn.graph(&*channel.read().unwrap()));
    [9.151772]
    [9.151823]
    let txn = txn.read();
    check_tree_inodes(&*txn, txn.graph(&*channel.read()));
  • replacement in pijul/src/commands/git.rs at line 479
    [9.152048][9.3015:3068]()
    txn: Arc<RwLock<T>>,
    channel: ChannelRef<T>,
    [9.152048]
    [9.152098]
    txn: &ArcTxn<T>,
    channel: &ChannelRef<T>,
  • replacement in pijul/src/commands/git.rs at line 534
    [9.153980][9.3069:3117]()
    let mut txn = txn.write().unwrap();
    [9.153980]
    [9.153980]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/git.rs at line 621
    [9.157665][9.3302:3355]()
    txn: Arc<RwLock<T>>,
    channel: ChannelRef<T>,
    [9.157665]
    [9.157715]
    txn: &ArcTxn<T>,
    channel: &ChannelRef<T>,
  • replacement in pijul/src/commands/git.rs at line 626
    [9.3958][9.3356:3452]()
    let (object, prefixes) = git_reset(git, repo, txn.clone(), channel.clone(), child, stats)?;
    [9.3958]
    [9.319]
    let (object, prefixes) = git_reset(git, repo, &txn, &channel, child, stats)?;
  • replacement in pijul/src/commands/git.rs at line 628
    [9.360][9.3452:3493](),[9.3452][9.3452:3493]()
    let mut txn_ = txn.write().unwrap();
    [9.360]
    [9.157898]
    let mut txn_ = txn.write();
  • replacement in pijul/src/commands/git.rs at line 643
    [9.158287][9.1231:1331]()
    debug!(
    "recording on channel {:?}",
    txn_.name(&channel.read().unwrap())
    );
    [9.158287]
    [9.158352]
    debug!("recording on channel {:?}", txn_.name(&channel.read()));
  • replacement in pijul/src/commands/git.rs at line 670
    [9.158491][9.3733:3819]()
    txn.clone(),
    channel.clone(),
    repo.repo.working_copy.clone(),
    [9.158491]
    [9.158558]
    &txn,
    &channel,
    &repo.repo.working_copy,
  • replacement in pijul/src/commands/git.rs at line 691
    [4.354][4.354:465]()
    let mut txn = txn.write().unwrap();
    let name = txn.name(&channel.read().unwrap()).to_string();
    [4.354]
    [4.465]
    let mut txn = txn.write();
    let name = txn.name(&channel.read()).to_string();
  • replacement in pijul/src/commands/git.rs at line 695
    [4.513][9.3820:3855](),[9.159191][9.3820:3855]()
    let txn = txn.read().unwrap();
    [4.512]
    [9.159191]
    let txn = txn.read();
  • replacement in pijul/src/commands/git.rs at line 700
    [9.404][9.3856:3925]()
    return Ok(txn.current_state(&channel.read().unwrap())?);
    [9.404]
    [9.474]
    return Ok(txn.current_state(&channel.read())?);
  • replacement in pijul/src/commands/git.rs at line 707
    [9.159718][9.3926:4016]()
    check_alive_debug(&repo.repo.changes, &*txn, &channel.read().unwrap(), line!())?;
    [9.159718]
    [9.159783]
    check_alive_debug(&repo.repo.changes, &*txn, &channel.read(), line!())?;
  • replacement in pijul/src/commands/git.rs at line 714
    [9.160168][9.4173:4244]()
    check_tree_inodes(&*txn, txn.graph(&channel.read().unwrap()));
    [9.160168]
    [9.160219]
    check_tree_inodes(&*txn, txn.graph(&channel.read()));
  • replacement in pijul/src/commands/git.rs at line 724
    [9.1625][9.4382:4494](),[9.4382][9.4382:4494]()
    txn: Arc<RwLock<T>>,
    channel: ChannelRef<T>,
    working_copy: Arc<libpijul::working_copy::FileSystem>,
    [9.1625]
    [9.160570]
    txn: &ArcTxn<T>,
    channel: &ChannelRef<T>,
    working_copy: &libpijul::working_copy::FileSystem,
  • replacement in pijul/src/commands/git.rs at line 757
    [9.161002][9.4997:5037]()
    let mut txn = txn.write().unwrap();
    [9.161002]
    [9.161002]
    let mut txn = txn.write();
  • replacement in pijul/src/commands/git.rs at line 759
    [9.161034][9.1394:1447](),[9.1447][9.1626:1717](),[9.1717][9.1514:1526](),[9.5112][9.1514:1526](),[9.1514][9.1514:1526]()
    return Ok((
    0,
    None,
    txn.current_state(&channel.read().unwrap())
    .map_err(TxnErr)?,
    ));
    [9.161034]
    [9.161102]
    return Ok((0, None, txn.current_state(&channel.read()).map_err(TxnErr)?));
  • replacement in pijul/src/commands/git.rs at line 768
    [9.1614][9.5164:5254]()
    libpijul::change::dependencies(&*txn, &channel.read().unwrap(), actions.iter())?;
    [9.1614]
    [9.161362]
    libpijul::change::dependencies(&*txn, &channel.read(), actions.iter())?;
  • replacement in pijul/src/commands/git.rs at line 773
    [9.161474][9.5289:5364]()
    std::mem::replace(&mut *rec.contents.lock().unwrap(), Vec::new()),
    [9.161474]
    [9.161496]
    std::mem::replace(&mut *rec.contents.lock(), Vec::new()),
  • replacement in pijul/src/commands/fork.rs at line 32
    [9.5516][9.5516:5572]()
    let mut channel = channel.write().unwrap();
    [9.5516]
    [9.13204]
    let mut channel = channel.write();
  • edit in pijul/src/commands/fork.rs at line 35
    [9.168764]
    [9.2740]
    let cur = txn
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/fork.rs at line 42
    [9.2846][9.2846:2958]()
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
    [9.2846]
    [9.2958]
    cur.as_str()
    };
  • edit in pijul/src/commands/file_operations.rs at line 3
    [9.32][9.19512:19542]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/file_operations.rs at line 121
    [8.405][9.19543:19593](),[9.23934][9.19543:19593](),[9.13499][9.19543:19593]()
    let txn = repo.pristine.mut_txn_begin()?;
    [8.405]
    [9.192]
    let txn = repo.pristine.arc_txn_begin()?;
  • edit in pijul/src/commands/file_operations.rs at line 125
    [9.44][9.19594:19640]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/file_operations.rs at line 151
    [9.172105][9.19679:19731]()
    let mut txn = txn.write().unwrap();
    [9.172105]
    [9.562]
    let mut txn = txn.write();
  • edit in pijul/src/commands/file_operations.rs at line 165
    [9.172406][9.172406:172416](),[9.172416][9.19732:19873]()
    }
    if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap().commit()?;
    } else {
    unreachable!()
  • edit in pijul/src/commands/file_operations.rs at line 166
    [9.19883]
    [9.172439]
    txn.commit()?;
  • edit in pijul/src/commands/diff.rs at line 4
    [9.173738][9.19884:19914]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/diff.rs at line 37
    [9.20012][9.787:841](),[9.24070][9.787:841](),[9.15538][9.787:841]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    [9.24070]
    [9.174231]
    let txn = repo.pristine.arc_txn_begin()?;
  • edit in pijul/src/commands/diff.rs at line 39
    [9.174275]
    [9.3061]
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/diff.rs at line 47
    [9.3150][9.3150:3311]()
    txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
    }
    .to_string();
    let channel = txn.open_or_create_channel(&channel)?;
    [9.3150]
    [9.174398]
    cur.as_str()
    };
    let channel = txn.write().open_or_create_channel(&channel)?;
  • edit in pijul/src/commands/diff.rs at line 52
    [9.174455][9.20036:20082]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/diff.rs at line 57
    [9.20172][9.20172:20215]()
    repo.working_copy.clone(),
    [9.20172]
    [9.174663]
    &repo.working_copy,
  • replacement in pijul/src/commands/diff.rs at line 79
    [9.175145][9.20313:20353]()
    let txn = txn.write().unwrap();
    [9.175145]
    [9.175145]
    let txn = txn.write();
  • replacement in pijul/src/commands/diff.rs at line 86
    [9.20493][9.20493:20532]()
    cont.into_inner().unwrap()
    [9.20493]
    [9.20532]
    cont.into_inner()
  • replacement in pijul/src/commands/diff.rs at line 102
    [9.175615][9.20680:20755]()
    dependencies(&*txn, &*channel.read()?, change.changes.iter())?
    [9.175615]
    [9.175679]
    dependencies(&*txn, &*channel.read(), change.changes.iter())?
  • replacement in pijul/src/commands/debug.rs at line 46
    [9.21604][9.21604:21648]()
    &channel.read()?.graph,
    [9.21604]
    [9.21648]
    &channel.read().graph,
  • replacement in pijul/src/commands/debug.rs at line 52
    [9.21794][9.21794:21841]()
    let channel = channel.read()?;
    [9.21794]
    [9.21841]
    let channel = channel.read();
  • replacement in pijul/src/commands/debug.rs at line 55
    [9.21940][9.21940:22035]()
    libpijul::pristine::check_alive_debug(&repo.changes, &txn, &*channel.read()?, 0)?;
    [9.21940]
    [9.177]
    libpijul::pristine::check_alive_debug(&repo.changes, &txn, &*channel.read(), 0)?;
  • replacement in pijul/src/commands/debug.rs at line 59
    [9.50][9.22036:22075]()
    let channel = channel.read()?;
    [9.50]
    [9.22075]
    let channel = channel.read();
  • replacement in pijul/src/commands/credit.rs at line 53
    [9.237][9.22165:22212]()
    let channel = channel.read().unwrap();
    [9.237]
    [9.0]
    let channel = channel.read();
  • edit in pijul/src/commands/clone.rs at line 8
    [9.2958][9.22363:22393]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/clone.rs at line 76
    [9.15873][9.842:896](),[9.896][9.184837:184907](),[9.184837][9.184837:184907]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    let mut channel = txn.open_or_create_channel(&self.channel)?;
    [9.15873]
    [9.184907]
    let txn = repo.pristine.arc_txn_begin()?;
    let mut channel = txn.write().open_or_create_channel(&self.channel)?;
  • replacement in pijul/src/commands/clone.rs at line 81
    [9.185011][9.185011:185079]()
    .clone_tag(&mut repo, &mut txn, &mut channel, &[h])
    [9.185011]
    [9.185079]
    .clone_tag(&mut repo, &mut *txn.write(), &mut channel, &[h])
  • replacement in pijul/src/commands/clone.rs at line 86
    [9.185211][9.13751:13818]()
    .clone_state(&mut repo, &mut txn, &mut channel, h)
    [9.185211]
    [9.185289]
    .clone_state(&mut repo, &mut *txn.write(), &mut channel, h)
  • replacement in pijul/src/commands/clone.rs at line 90
    [9.185349][9.13819:13906]()
    .clone_channel(&mut repo, &mut txn, &mut channel, &self.partial_paths)
    [9.185349]
    [9.185566]
    .clone_channel(
    &mut repo,
    &mut *txn.write(),
    &mut channel,
    &self.partial_paths,
    )
  • edit in pijul/src/commands/clone.rs at line 99
    [9.22558][9.22558:22604]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/clone.rs at line 100
    [9.22660][9.22660:22699]()
    repo.working_copy.clone(),
    [9.22660]
    [9.185679]
    &repo.working_copy,
  • replacement in pijul/src/commands/clone.rs at line 102
    [9.185706][9.22700:22746]()
    txn.clone(),
    channel,
    [9.185706]
    [9.185732]
    &txn,
    &channel,
  • replacement in pijul/src/commands/clone.rs at line 111
    [9.534][9.3747:3807](),[9.3807][9.22833:22924](),[9.22833][9.22833:22924](),[9.22924][9.3808:3857]()
    let mut txn = if let Ok(t) = Arc::try_unwrap(txn) {
    t.into_inner().unwrap()
    } else {
    unreachable!()
    };
    txn.set_current_channel(&self.channel)?;
    [9.534]
    [9.185778]
    txn.write().set_current_channel(&self.channel)?;
  • replacement in pijul/src/commands/channel.rs at line 47
    [9.23190][9.23190:23241]()
    let channel = channel.read()?;
    [9.23190]
    [9.23241]
    let channel = channel.read();
  • replacement in pijul/src/commands/change.rs at line 35
    [9.243][9.23294:23337]()
    let channel = channel.read()?;
    [9.243]
    [9.23337]
    let channel = channel.read();
  • edit in pijul/src/commands/apply.rs at line 2
    [9.3361][9.23410:23440]()
    use std::sync::{Arc, RwLock};
  • replacement in pijul/src/commands/apply.rs at line 6
    [9.194383][9.553:617]()
    use libpijul::{DepsTxnT, GraphTxnT, MutTxnT, MutTxnTExt, TxnT};
    [9.194383]
    [9.23441]
    use libpijul::{DepsTxnT, GraphTxnT, MutTxnTExt, TxnT};
  • replacement in pijul/src/commands/apply.rs at line 31
    [9.23541][9.1086:1140](),[9.25009][9.1086:1140](),[9.16700][9.1086:1140](),[9.1140][9.4820:4895]()
    let mut txn = repo.pristine.mut_txn_begin()?;
    let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
    [9.25009]
    [9.4895]
    let txn = repo.pristine.arc_txn_begin()?;
    let cur = txn
    .read()
    .current_channel()
    .unwrap_or(crate::DEFAULT_CHANNEL)
    .to_string();
  • replacement in pijul/src/commands/apply.rs at line 40
    [9.4989][9.4989:5005]()
    cur
    [9.4989]
    [9.5005]
    cur.as_str()
  • replacement in pijul/src/commands/apply.rs at line 43
    [9.5070][9.5573:5653](),[9.2922][9.5573:5653]()
    let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
    [9.5070]
    [9.195133]
    let channel = if let Some(channel) = txn.read().load_channel(&channel_name)? {
  • replacement in pijul/src/commands/apply.rs at line 50
    [9.855][9.855:921]()
    hashes.push(if let Ok(h) = txn.hash_from_prefix(ch) {
    [9.855]
    [9.195519]
    hashes.push(if let Ok(h) = txn.read().hash_from_prefix(ch) {
  • replacement in pijul/src/commands/apply.rs at line 77
    [9.1173][9.5654:5710](),[9.5710][9.14215:14301](),[9.1173][9.14215:14301]()
    let mut channel = channel.write().unwrap();
    txn.apply_deps_rec(&repo.changes, &mut channel, hashes.last().unwrap())?;
    [9.1173]
    [9.196040]
    let mut channel = channel.write();
    txn.write()
    .apply_deps_rec(&repo.changes, &mut channel, hashes.last().unwrap())?;
  • replacement in pijul/src/commands/apply.rs at line 81
    [9.196057][9.5711:5767]()
    let mut channel = channel.write().unwrap();
    [9.196057]
    [9.14302]
    let mut channel = channel.write();
    let mut txn = txn.write();
  • edit in pijul/src/commands/apply.rs at line 89
    [9.23685]
    [9.661]
    let txn_ = txn.read();
  • replacement in pijul/src/commands/apply.rs at line 91
    [9.694][9.14343:14405]()
    if let Some(int) = txn.get_internal(&d.into())? {
    [9.694]
    [9.14405]
    if let Some(int) = txn_.get_internal(&d.into())? {
  • replacement in pijul/src/commands/apply.rs at line 93
    [9.14448][9.749:807](),[9.749][9.749:807]()
    for inode in txn.iter_rev_touched(int)? {
    [9.14448]
    [9.14449]
    for inode in txn_.iter_rev_touched(int)? {
  • edit in pijul/src/commands/apply.rs at line 105
    [9.1106]
    [9.1106]
    std::mem::drop(txn_);
  • edit in pijul/src/commands/apply.rs at line 107
    [9.1107][9.23686:23732]()
    let txn = Arc::new(RwLock::new(txn));
  • replacement in pijul/src/commands/apply.rs at line 109
    [9.3026][9.23733:23777]()
    let txn_ = txn.read().unwrap();
    [9.3026]
    [9.3026]
    let txn_ = txn.read();
  • replacement in pijul/src/commands/apply.rs at line 112
    [9.3098][9.23778:23875]()
    libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read()?, false, i)?
    [9.3098]
    [9.3193]
    libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read(), false, i)?
  • replacement in pijul/src/commands/apply.rs at line 130
    [9.23975][9.23975:24022]()
    repo.working_copy.clone(),
    [9.23975]
    [9.3524]
    &repo.working_copy,
  • replacement in pijul/src/commands/apply.rs at line 132
    [9.3559][9.24023:24093]()
    txn.clone(),
    channel.clone(),
    [9.3559]
    [9.3593]
    &txn,
    &channel,
  • replacement in pijul/src/commands/apply.rs at line 143
    [9.24196][9.24196:24243]()
    repo.working_copy.clone(),
    [9.24196]
    [9.3843]
    &repo.working_copy,
  • replacement in pijul/src/commands/apply.rs at line 145
    [9.3878][9.24244:24314]()
    txn.clone(),
    channel.clone(),
    [9.3878]
    [9.3912]
    &txn,
    &channel,
  • edit in pijul/src/commands/apply.rs at line 156
    [9.1652][9.24353:24504]()
    let txn = if let Ok(txn) = Arc::try_unwrap(txn) {
    txn.into_inner().unwrap()
    } else {
    unreachable!()
    };