Faster error in unrecord when the change is not on the channel
[?]
Apr 29, 2021, 2:30 PM
K7JPP64SNKZNMB6XJAYYHDC2464I3BQDLVA3IX4YCQZ4P5TXZXRACDependencies
- [2]
I24UEJQLVarious post-fire fixes - [3]
YAJAXIV5Unrecording changes atomically - [4]
Y6EVFMTADon't output files if they aren't in the current channel - [5]
SLJ3OHD4unrecord: show list of changes if none were given as arguments - [6]
5DVRL6MFHard-unrecord - [7]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [8]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [9]
MHQBEHJDunrecord --reset without a pending change - [10]
EGSVRZJVAvoid converting between base32 and hash in pijul::commands::unrecord
Change contents
- edit in pijul/src/commands/unrecord.rs at line 47
let pending_hash = if self.reset {super::pending(txn.clone(), &channel, &mut repo)?} else {None};let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {txn.into_inner().unwrap()} else {unreachable!()}; - edit in pijul/src/commands/unrecord.rs at line 65
let txn = txn.read().unwrap(); - edit in pijul/src/commands/unrecord.rs at line 76
let txn = txn.read().unwrap(); - replacement in pijul/src/commands/unrecord.rs at line 84
for (hash, change_id) in hashes {let n = txn.get_changeset(txn.changes(&channel_), &change_id).unwrap();changes.push((hash, change_id, n.map(|&x| x.into())));{let txn = txn.read().unwrap();for (hash, change_id) in hashes {let n = txn.get_changeset(txn.changes(&channel_), &change_id).unwrap();if n.is_none() {bail!("Change not in channel: {:?}", hash)}changes.push((hash, change_id, n.map(|&x| x.into())));} - edit in pijul/src/commands/unrecord.rs at line 96
debug!("changes: {:?}", changes); - edit in pijul/src/commands/unrecord.rs at line 98
let pending_hash = if self.reset {super::pending(txn.clone(), &channel, &mut repo)?} else {None}; - replacement in pijul/src/commands/unrecord.rs at line 106
for p in txn.iter_revdep(&change_id)? {let txn_ = txn.read().unwrap();for p in txn_.iter_revdep(&change_id)? { - replacement in pijul/src/commands/unrecord.rs at line 114
if txn.get_changeset(txn.changes(&channel_), d)?.is_some() {let dep: Hash = txn.get_external(d)?.unwrap().into();if txn_.get_changeset(txn_.changes(&channel_), d)?.is_some() {let dep: Hash = txn_.get_external(d)?.unwrap().into(); - replacement in pijul/src/commands/unrecord.rs at line 131
txn.unrecord(&repo.changes, &channel, &hash)?;std::mem::drop(txn_);txn.write().unwrap().unrecord(&repo.changes, &channel, &hash)?; - edit in pijul/src/commands/unrecord.rs at line 135
let txn = Arc::new(RwLock::new(txn));