edit in pijul/src/repository.rs at line 2
replacement in pijul/src/repository.rs at line 11
− pub working_copy: Arc<libpijul::working_copy::filesystem::FileSystem>,
+ 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(
+ working_copy: libpijul::working_copy::filesystem::FileSystem::from_root(
replacement in pijul/src/repository.rs at line 74
[9.24087]→[9.342:358](∅→∅) 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,
− )),
+ 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)
+ .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)?
+ .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())))
+ 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)?;
+ remote.set_id_revision(r);
replacement in pijul/src/remote/mod.rs at line 525
− let mut channel = channel.write().unwrap();
+ let mut channel = channel.write();
replacement in pijul/src/remote/mod.rs at line 598
− let mut channel_ = channel.write().unwrap();
+ 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)? {
+ 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()?;
+ 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");
+ 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()?;
+ 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};
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| {
+ 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())))
+ 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,
+ &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)? {
+ 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))?;
+ 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);
+ upload_changes(&store, &mut *txn.write(), &channel, changes)?;
replacement in pijul/src/remote/local.rs at line 140
[9.1260]→[9.1260:1276](∅→∅) replacement in pijul/src/remote/local.rs at line 142
[9.1296]→[9.1296:1350](∅→∅) − txn.clone(),
− channel.clone(),
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();
+ 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);
+ 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
replacement in pijul/src/commands/unrecord.rs at line 49
− let channel = if let Some(channel) = txn.load_channel(&channel_name)? {
+ let channel = if let Some(channel) = txn.read().load_channel(&channel_name)? {
replacement in pijul/src/commands/unrecord.rs at line 72
− let txn = txn.read().unwrap();
replacement in pijul/src/commands/unrecord.rs at line 74
[9.3361]→[9.3361:3416](∅→∅) − .reverse_log(&*channel.read()?, None)?
+ .reverse_log(&*channel.read(), None)?
replacement in pijul/src/commands/unrecord.rs at line 83
− let txn = txn.read().unwrap();
replacement in pijul/src/commands/unrecord.rs at line 89
[9.3958]→[9.3958:3998](∅→∅) − let channel_ = channel.read()?;
+ let channel_ = channel.read();
replacement in pijul/src/commands/unrecord.rs at line 92
− let txn = txn.read().unwrap();
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();
+ let channel_ = channel.read();
+ let txn_ = txn.read();
replacement in pijul/src/commands/unrecord.rs at line 139
− txn.write()
− .unwrap()
− .unrecord(&repo.changes, &channel, &hash, 0)?;
+ 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(),
replacement in pijul/src/commands/unrecord.rs at line 146
[9.5714]→[9.5714:5776](∅→∅) − txn.clone(),
− channel.clone(),
replacement in pijul/src/commands/unrecord.rs at line 156
[9.5939]→[9.114:224](∅→∅) − txn.write()
− .unwrap()
− .unrecord(&repo.changes, &channel, &h, 0)?;
+ 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
edit in pijul/src/commands/tag.rs at line 3
− use std::sync::{Arc, RwLock};
replacement in pijul/src/commands/tag.rs at line 9
− use libpijul::{Base32, ChannelMutTxnT, ChannelTxnT, MutTxnT, TxnT, TxnTExt};
+ use libpijul::{ArcTxn, Base32, ChannelMutTxnT, ChannelTxnT, MutTxnT, TxnT, TxnTExt};
replacement in pijul/src/commands/tag.rs at line 61
− let txn = repo.pristine.mut_txn_begin()?;
+ let txn = repo.pristine.arc_txn_begin()?;
replacement in pijul/src/commands/tag.rs at line 65
+ txn.read()
+ .current_channel()
edit in pijul/src/commands/tag.rs at line 71
− 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() {
+ 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() {
+ 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)?;
+ 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)?;
+ txn.write()
+ .put_tags(&mut *channel.write(), last_t.into(), &h)?;
replacement in pijul/src/commands/tag.rs at line 148
− for t in txn.rev_iter_tags(txn.tags(&*channel.read()?), None)? {
+ for t in txn.rev_iter_tags(txn.tags(&*channel.read()), None)? {
replacement in pijul/src/commands/tag.rs at line 212
replacement in pijul/src/commands/tag.rs at line 215
− let channel = if let Some(channel) = txn.read().unwrap().load_channel(channel)? {
+ 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(),
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()?;
+ let txn = repo.pristine.arc_txn_begin()?;
edit in pijul/src/commands/reset.rs at line 43
+ let cur = txn
+ .read()
+ .current_channel()
+ .unwrap_or(crate::DEFAULT_CHANNEL)
+ .to_string();
replacement in pijul/src/commands/reset.rs at line 51
− txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL)
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)? {
+ 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)?
+ 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)?
+ 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(),
+ &*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](∅→∅) replacement in pijul/src/commands/reset.rs at line 105
[9.7359]→[9.7359:7406](∅→∅) − let txn = txn.read().unwrap();
replacement in pijul/src/commands/reset.rs at line 114
[9.7733]→[9.7733:7780](∅→∅) − repo.working_copy.clone(),
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()?);
+ 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(),
replacement in pijul/src/commands/reset.rs at line 134
[9.8546]→[9.8546:8616](∅→∅) − txn.clone(),
− channel.clone(),
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);
+ 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();
+ 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()?,
− )?;
+ 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)?;
+ 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)?
+ 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(),
replacement in pijul/src/commands/reset.rs at line 190
[9.10805]→[9.10805:10875](∅→∅) − txn.clone(),
− channel.clone(),
replacement in pijul/src/commands/reset.rs at line 201
[9.11123]→[9.11123:11162](∅→∅) replacement in pijul/src/commands/reset.rs at line 203
[9.11197]→[9.11197:11259](∅→∅) replacement in pijul/src/commands/reset.rs at line 227
[9.11929]→[9.11929:11976](∅→∅) − repo.working_copy.clone(),
replacement in pijul/src/commands/reset.rs at line 229
[9.12011]→[9.12011:12081](∅→∅) − txn.clone(),
− channel.clone(),
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};
replacement in pijul/src/commands/record.rs at line 12
[9.12531]→[9.12531:12620](∅→∅) − Base32, ChannelMutTxnT, ChannelRef, ChannelTxnT, MutTxnT, MutTxnTExt, TxnT, TxnTExt,
+ 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()?;
+ 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)
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)? {
+ let mut channel = if let Some(channel) = txn.read().load_channel(&channel)? {
replacement in pijul/src/commands/record.rs at line 89
− let (h, c) = txn.hash_from_prefix(h)?;
+ 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)?
+ .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
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() {
+ 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
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),
− )),
+ 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()),
+ 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)?;
+ 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));
+ txn_.touch_channel(&mut *channel.write(), Some(oldest));
edit in pijul/src/commands/record.rs at line 186
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);
+ txn.write().touch_channel(&mut *channel.write(), None);
replacement in pijul/src/commands/record.rs at line 270
[9.106516]→[9.13756:13785](∅→∅) replacement in pijul/src/commands/record.rs at line 272
[9.13817]→[9.13817:13880](∅→∅) − working_copy: Arc<libpijul::working_copy::FileSystem>,
+ working_copy: &libpijul::working_copy::FileSystem,
replacement in pijul/src/commands/record.rs at line 280
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](∅→∅) replacement in pijul/src/commands/record.rs at line 305
[9.14035]→[9.14035:14085](∅→∅) replacement in pijul/src/commands/record.rs at line 317
[9.14233]→[9.14233:14275](∅→∅) replacement in pijul/src/commands/record.rs at line 342
[9.14659]→[9.14659:14700](∅→∅) − let txn_ = txn.write().unwrap();
+ let txn_ = txn.write();
replacement in pijul/src/commands/record.rs at line 349
[9.14827]→[9.14827:14863](∅→∅) − c.into_inner().unwrap()
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())?;
+ 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()?;
+ 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();
replacement in pijul/src/commands/pushpull.rs at line 155
[9.115226]→[9.1972:2010](∅→∅) replacement in pijul/src/commands/pushpull.rs at line 160
[9.115325]→[9.2011:2045](∅→∅) 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)?;
+ 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)?;
+ 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)?
+ 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;
− }
− }
+ {
+ 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() {
+ if !txn.remote_has_change(&remote_changes, &h)? {
edit in pijul/src/commands/pushpull.rs at line 214
+ } 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
edit in pijul/src/commands/pushpull.rs at line 273
replacement in pijul/src/commands/pushpull.rs at line 276
− let comp = complete_deps(&txn, &remote_changes, &repo.changes, &to_upload, &d)?;
+ 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)
+ .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);
+ 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](∅→∅) 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)?;
+ 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?;
+ 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)? {
+ 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)?
+ .channel_has_state(txn.states(&*channel.read()), &p.b)?
edit in pijul/src/commands/pushpull.rs at line 369
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)?
+ 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()?;
+ 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)?
+ .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)?
+ .get_changeset(txn.changes(&*channel.read()), h_int)?
edit in pijul/src/commands/pushpull.rs at line 419
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](∅→∅) replacement in pijul/src/commands/pushpull.rs at line 454
− let comp = complete_deps(&txn, &None, &repo.changes, &to_download, &d)?;
+ let comp = complete_deps(&*txn.read(), &None, &repo.changes, &to_download, &d)?;
replacement in pijul/src/commands/pushpull.rs at line 469
− let mut channel = channel.write().unwrap();
+ 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)
+ .complete_changes(&repo, &*txn.read(), &mut channel, &to_download, self.full)
edit in pijul/src/commands/pushpull.rs at line 485
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)? {
+ 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(),
+ 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));
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;
+ {
+ 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(),
replacement in pijul/src/commands/pushpull.rs at line 540
[9.16731]→[9.16731:16809](∅→∅) − txn.clone(),
− channel.clone(),
replacement in pijul/src/commands/pushpull.rs at line 555
[9.17119]→[9.17119:17170](∅→∅) − repo.working_copy.clone(),
replacement in pijul/src/commands/pushpull.rs at line 557
[9.17209]→[9.17209:17287](∅→∅) − txn.clone(),
− channel.clone(),
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)?;
+ 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()?;
+ 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();
+ 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])?;
+ 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)? {
+ 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() {
+ } 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])?;
+ let channel = load_channel(&*txn.read(), &cap[1])?;
edit in pijul/src/commands/protocol.rs at line 107
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)?
+ 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)? {
+ 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])?;
+ let channel = load_channel(&*txn.read(), &cap[1])?;
replacement in pijul/src/commands/protocol.rs at line 193
− let mut channel_ = channel.write().unwrap();
− txn.apply_change_ws(&repo.changes, &mut channel_, &h, &mut ws)?;
+ 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])?;
+ 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)?
+ 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
+ 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)?
+ 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(),
replacement in pijul/src/commands/protocol.rs at line 329
[9.133421]→[9.18280:18342](∅→∅) − txn.clone(),
− channel.clone(),
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>>,
+ txn: libpijul::ArcTxn<T>,
replacement in pijul/src/commands/mod.rs at line 81
[9.18896]→[9.18896:18931](∅→∅) − repo.working_copy.clone(),
replacement in pijul/src/commands/mod.rs at line 90
[9.2179]→[9.18996:19036](∅→∅) − let mut txn = txn.write().unwrap();
+ let mut txn = txn.write();
replacement in pijul/src/commands/mod.rs at line 97
[9.19170]→[9.19170:19202](∅→∅) − c.into_inner().unwrap()
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())?;
+ 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)? {
+ 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)? {
+ 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](∅→∅) replacement in pijul/src/commands/git.rs at line 174
[9.142007]→[9.874:930](∅→∅) − let mut txn = txn.write().unwrap();
+ let mut txn = txn.write();
replacement in pijul/src/commands/git.rs at line 252
− let txn = repo.repo.pristine.mut_txn_begin()?;
+ let txn = repo.repo.pristine.arc_txn_begin()?;
replacement in pijul/src/commands/git.rs at line 256
− let channel = if let Some(c) = txn.load_channel(&oid_)? {
+ 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)?
+ 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));
+ 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();
+ 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();
+ 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)?;
+ 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())?;
+ 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>,
+ 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();
replacement in pijul/src/commands/git.rs at line 386
[9.131]→[9.1813:1869](∅→∅) − for x in txn.log(&*p_channel.read()?, 0)? {
+ 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>,
+ 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)?;
+ 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();
+ 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();
+ 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!())?;
+ 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(),
+ &repo.repo.working_copy,
replacement in pijul/src/commands/git.rs at line 449
[9.151406]→[9.2680:2734](∅→∅) − txn.clone(),
− channel.clone(),
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!())?;
+ 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()));
+ 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>,
+ 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();
+ 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>,
+ 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)?;
+ 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();
+ 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())
− );
+ 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(),
+ &txn,
+ &channel,
+ &repo.repo.working_copy,
replacement in pijul/src/commands/git.rs at line 691
− let mut txn = txn.write().unwrap();
− let name = txn.name(&channel.read().unwrap()).to_string();
+ 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();
replacement in pijul/src/commands/git.rs at line 700
[9.404]→[9.3856:3925](∅→∅) − return Ok(txn.current_state(&channel.read().unwrap())?);
+ 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!())?;
+ 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()));
+ 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>,
+ 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();
+ 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)?,
− ));
+ 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())?;
+ 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()),
+ 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();
+ let mut channel = channel.write();
edit in pijul/src/commands/fork.rs at line 35
+ 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();
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()?;
+ 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();
+ 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
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()?;
+ let txn = repo.pristine.arc_txn_begin()?;
edit in pijul/src/commands/diff.rs at line 39
+ 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)?;
+ 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(),
replacement in pijul/src/commands/diff.rs at line 79
[9.175145]→[9.20313:20353](∅→∅) − let txn = txn.write().unwrap();
replacement in pijul/src/commands/diff.rs at line 86
[9.20493]→[9.20493:20532](∅→∅) − cont.into_inner().unwrap()
replacement in pijul/src/commands/diff.rs at line 102
[9.175615]→[9.20680:20755](∅→∅) − dependencies(&*txn, &*channel.read()?, change.changes.iter())?
+ 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,
replacement in pijul/src/commands/debug.rs at line 52
[9.21794]→[9.21794:21841](∅→∅) − let channel = channel.read()?;
+ 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)?;
+ 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()?;
+ let channel = channel.read();
replacement in pijul/src/commands/credit.rs at line 53
[9.237]→[9.22165:22212](∅→∅) − let channel = channel.read().unwrap();
+ 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)?;
+ 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])
+ .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)
+ .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)
+ .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(),
replacement in pijul/src/commands/clone.rs at line 102
[9.185706]→[9.22700:22746](∅→∅) 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)?;
+ 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()?;
+ let channel = channel.read();
replacement in pijul/src/commands/change.rs at line 35
[9.243]→[9.23294:23337](∅→∅) − let channel = channel.read()?;
+ 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};
+ 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);
+ 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](∅→∅) 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)? {
+ let channel = if let Some(channel) = txn.read().load_channel(&channel_name)? {
replacement in pijul/src/commands/apply.rs at line 50
− hashes.push(if let Ok(h) = txn.hash_from_prefix(ch) {
+ 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())?;
+ 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();
+ let mut channel = channel.write();
+ let mut txn = txn.write();
edit in pijul/src/commands/apply.rs at line 89
replacement in pijul/src/commands/apply.rs at line 91
[9.694]→[9.14343:14405](∅→∅) − if let Some(int) = txn.get_internal(&d.into())? {
+ 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)? {
+ for inode in txn_.iter_rev_touched(int)? {
edit in pijul/src/commands/apply.rs at line 105
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();
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)?
+ 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(),
replacement in pijul/src/commands/apply.rs at line 132
[9.3559]→[9.24023:24093](∅→∅) − txn.clone(),
− channel.clone(),
replacement in pijul/src/commands/apply.rs at line 143
[9.24196]→[9.24196:24243](∅→∅) − repo.working_copy.clone(),
replacement in pijul/src/commands/apply.rs at line 145
[9.3878]→[9.24244:24314](∅→∅) − txn.clone(),
− channel.clone(),
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!()
− };