Fixing the Git feature
[?]
Apr 24, 2021, 6:22 AM
5SLOJYHGPMZVCOE3IS7ICNMJJYX3RBT6CDG5MAV6T4CJIOW7YZ6QCDependencies
- [2]
L2LPPKD4Fixing the Git feature - [3]
XSRTXUASPull: show progress bar when applying - [4]
3AZB5NUOFixing the Git feature - [5]
I24UEJQLVarious post-fire fixes - [6]
Y6EVFMTADon't output files if they aren't in the current channel - [7]
2D7P2VKJChange completions (where the whole progress bar story started) - [8]
ZZXBHCN3fixing the protocol - [9]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [10]
Q45QHPO4Feedback on network stuff - [11]
YN63NUZOSanakirja 1.0 - [12]
NHO3QO3WReturn a clean error instead of a panic when the channel for a commit is not found in `pijul git` - [13]
OJZWJUF2MUCH faster `pijul add -r` - [14]
ZHABNS3SCanonicalize all paths - [15]
BXD3IQYNFixing --features git - [16]
VO5OQW4WRemoving anyhow in libpijul - [17]
43AJ37IXGetting rid of edge validation, which does not work for zombie conflicts - [18]
LGEJSLTYFixing output (including its uses in reset and pull) - [19]
IIV3EL2XCleanup, formatting, and fixing the Git feature - [20]
GNMZNKB4Cursors cleanup - [21]
I52XSRUHMassive cleanup, and simplification - [22]
7PM25EXLRecursive apply was written a little too fast… - [23]
A3DMBJJAUpgrading the `git` subcommand to the latest Sanakirja and Libpijul - [24]
RHHNPMZIFixing `pijul git` - [25]
CVAT6LN3Fixing git import, and adding more useful feedback (with `RUST_LOG="pijul=info"`) - [26]
AXVPNZ2Ncommands/git: fix imports - [27]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [28]
6RVT5X4LCurrent state: return zero instead of an Option if there is no change on the channel - [29]
JL4WKA5PImplement the Sanakirja concurrency model in a cross-process way - [30]
BNPSVXICFriendlier progress bars - [31]
I7VL7VPZMinor cleanup - [32]
ZBNKSYA6Fixing a bus error when starting a transaction on a full disk - [33]
B3QWIGDEFixing the Git features with the latest Pijul (+ conflicts in Cargo.toml) - [34]
R3H7D42UDebugging `pijul git`: proper error reporting - [35]
76PCXGMLPushing to, and pulling from the local repository - [36]
GBLM3JLRFix options of git subcommand - [37]
L4JXJHWXpijul/*: reorganize imports and remove extern crate - [38]
BJOZ25EUDeterministic Git import - [*]
44BN7FWSDo not output files introduced by patches that were not applied during a push
Change contents
- replacement in pijul/src/remote/mod.rs at line 451
txn.apply_change_ws(&repo.changes, channel, h, &mut ws)?;let mut channel = channel.write().unwrap();txn.apply_change_ws(&repo.changes, &mut channel, h, &mut ws)?; - replacement in pijul/src/remote/mod.rs at line 521
for hash in hashes.iter() {txn.apply_change_ws(&repo.changes, channel, hash, &mut ws)?;{let mut channel_ = channel.write().unwrap();for hash in hashes.iter() {txn.apply_change_ws(&repo.changes, &mut channel_, hash, &mut ws)?;} - replacement in pijul/src/remote/local.rs at line 176
channel: &mut libpijul::pristine::ChannelRef<T>,channel: &libpijul::pristine::ChannelRef<T>, - edit in pijul/src/remote/local.rs at line 180
let mut channel = channel.write().unwrap(); - replacement in pijul/src/remote/local.rs at line 182
txn.apply_change_ws(store, channel, c, &mut ws)?;txn.apply_change_ws(store, &mut *channel, c, &mut ws)?; - edit in pijul/src/commands/pushpull.rs at line 423[3.267][40.155]
let mut channel = channel.write().unwrap(); - replacement in pijul/src/commands/protocol.rs at line 184
let mut channel = load_channel(&txn, &cap[1])?;txn.apply_change_ws(&repo.changes, &mut channel, &h, &mut ws)?;let channel = load_channel(&txn, &cap[1])?;{let mut channel_ = channel.write().unwrap();txn.apply_change_ws(&repo.changes, &mut channel_, &h, &mut ws)?;} - replacement in pijul/src/commands/git.rs at line 6
use std::sync::{Arc, RwLock}; - replacement in pijul/src/commands/git.rs at line 165
txn: &mut T,txn: Arc<RwLock<T>>, - edit in pijul/src/commands/git.rs at line 175
let mut txn = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 263
.changeid_reverse_log(&channel.borrow(), None)?.changeid_reverse_log(&*channel.read()?, None)? - edit in pijul/src/commands/git.rs at line 292
let mut txn = repo.repo.pristine.mut_txn_begin()?; - edit in pijul/src/commands/git.rs at line 293
let txn = repo.repo.pristine.mut_txn_begin()?;let txn = Arc::new(RwLock::new(txn)); - replacement in pijul/src/commands/git.rs at line 296
let mut channel = if let Some(parents) = dag.parents.get(&oid) {let channel = if let Some(parents) = dag.parents.get(&oid) { - edit in pijul/src/commands/git.rs at line 304
let mut txn = txn.write().unwrap(); - edit in pijul/src/commands/git.rs at line 314
let mut txn = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 323
&mut txn,&mut channel,txn.clone(),channel.clone(), - replacement in pijul/src/commands/git.rs at line 329
let state = import_commit(git, repo, &mut txn, &mut channel, &oid, &mut stats)?;let state = import_commit(git, repo, txn.clone(), channel.clone(), &oid, &mut stats)?; - replacement in pijul/src/commands/git.rs at line 331
dag.collect_dead_parents(&oid, &mut todo, &mut txn)?;dag.collect_dead_parents(&oid, &mut todo, txn.clone())?; - edit in pijul/src/commands/git.rs at line 344
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 377
txn: &T,channel: &ChannelRef<T>,txn: Arc<RwLock<T>>,channel: ChannelRef<T>, - edit in pijul/src/commands/git.rs at line 386
let txn = txn.read().unwrap(); - replacement in pijul/src/commands/git.rs at line 400
for x in txn.log(&p_channel.borrow(), 0)? {for x in txn.log(&*p_channel.read()?, 0)? { - replacement in pijul/src/commands/git.rs at line 423
fn import_commit_parents<T: TxnTExt + MutTxnTExt + GraphIter>(fn import_commit_parents<T: TxnTExt + MutTxnTExt + GraphIter + Send + Sync + 'static>( - replacement in pijul/src/commands/git.rs at line 426
txn: &mut T,channel: &mut ChannelRef<T>,txn: Arc<RwLock<T>>,channel: ChannelRef<T>, - replacement in pijul/src/commands/git.rs at line 433
let (needs_output, to_apply) = make_apply_plan(repo, txn, channel, dag, oid)?;let (needs_output, to_apply) = make_apply_plan(repo, txn.clone(), channel.clone(), dag, oid)?; - edit in pijul/src/commands/git.rs at line 438
let mut txn_ = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 440
info!("applying {:?} to {:?}", h, txn.name(&channel.borrow()));let mut channel_ = channel.write().unwrap();info!("applying {:?} to {:?}", h, txn_.name(&channel_)); - replacement in pijul/src/commands/git.rs at line 443
txn.apply_change_ws(&repo.repo.changes, channel, h, ws)?;txn_.apply_change_ws(&repo.repo.changes, &mut channel_, h, ws)?; - replacement in pijul/src/commands/git.rs at line 445
check_alive_debug(&repo.repo.changes, txn, &channel.borrow(), line!())?;check_alive_debug(&repo.repo.changes, &*txn_, &channel_, line!())?; - replacement in pijul/src/commands/git.rs at line 449
check_alive_debug(&repo.repo.changes, txn, &channel.borrow(), line!())?;check_alive_debug(&repo.repo.changes, &*txn_, &*channel.read()?, line!())?; - replacement in pijul/src/commands/git.rs at line 459
txn.name(&channel.borrow()),txn_.name(&*channel.read()?), - edit in pijul/src/commands/git.rs at line 461
std::mem::drop(txn_); - replacement in pijul/src/commands/git.rs at line 465
txn.output_repository_no_pending(&mut repo.repo.working_copy,libpijul::output::output_repository_no_pending(repo.repo.working_copy.clone(), - replacement in pijul/src/commands/git.rs at line 468
channel,txn.clone(),channel.clone(), - edit in pijul/src/commands/git.rs at line 473
num_cpus::get(), - replacement in pijul/src/commands/git.rs at line 477
check_alive_debug(&repo.repo.changes, txn, &channel.borrow(), line!())?;let txn = txn.read().unwrap();check_alive_debug(&repo.repo.changes, &*txn, &channel.read().unwrap(), line!())?; - replacement in pijul/src/commands/git.rs at line 485
check_tree_inodes(txn, txn.graph(&channel.borrow()));let txn = txn.read().unwrap();check_tree_inodes(&*txn, txn.graph(&*channel.read().unwrap())); - replacement in pijul/src/commands/git.rs at line 497
txn: &mut T,channel: &mut ChannelRef<T>,txn: Arc<RwLock<T>>,channel: ChannelRef<T>, - edit in pijul/src/commands/git.rs at line 550
let mut txn = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 567
if let Some(old_path) = libpijul::fs::inode_filename(txn, *inode)? {if let Some(old_path) = libpijul::fs::inode_filename(&*txn, *inode)? { - replacement in pijul/src/commands/git.rs at line 632
fn import_commit<T: TxnTExt + MutTxnTExt + GraphIter>(fn import_commit<T: TxnTExt + MutTxnTExt + GraphIter + Send + Sync + 'static>( - replacement in pijul/src/commands/git.rs at line 635
txn: &mut T,channel: &mut ChannelRef<T>,txn: Arc<RwLock<T>>,channel: ChannelRef<T>, - replacement in pijul/src/commands/git.rs at line 640
let (object, prefixes) = git_reset(git, repo, txn, channel, child, stats)?;let (object, prefixes) = git_reset(git, repo, txn.clone(), channel.clone(), child, stats)?;let mut txn_ = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 645
txn.add_dir(p.to_str().unwrap()).unwrap_or(());txn_.add_dir(p.to_str().unwrap()).unwrap_or(()); - replacement in pijul/src/commands/git.rs at line 647
txn.add_file(p.to_str().unwrap()).unwrap_or(());txn_.add_file(p.to_str().unwrap()).unwrap_or(()); - replacement in pijul/src/commands/git.rs at line 654
debug!("recording on channel {:?}", txn.name(&channel.borrow()));debug!("recording on channel {:?}", txn_.name(&channel.read().unwrap())); - edit in pijul/src/commands/git.rs at line 663
std::mem::drop(txn_); - replacement in pijul/src/commands/git.rs at line 665
txn,channel,&mut repo.repo.working_copy,txn.clone(),channel.clone(),repo.repo.working_copy.clone(), - edit in pijul/src/commands/git.rs at line 685
let txn = txn.read().unwrap(); - replacement in pijul/src/commands/git.rs at line 690
return Ok(txn.current_state(&channel.borrow())?);return Ok(txn.current_state(&channel.read().unwrap())?); - replacement in pijul/src/commands/git.rs at line 697
check_alive_debug(&repo.repo.changes, txn, &channel.borrow(), line!())?;check_alive_debug(&repo.repo.changes, &*txn, &channel.read().unwrap(), line!())?; - replacement in pijul/src/commands/git.rs at line 705
cur.push_str(txn.name(&channel.borrow()));cur.push_str(txn.name(&channel.read().unwrap())); - replacement in pijul/src/commands/git.rs at line 707
repo.repo.config.current_channel = Some(txn.name(&channel.borrow()).to_string())repo.repo.config.current_channel = Some(txn.name(&channel.read().unwrap()).to_string()) - replacement in pijul/src/commands/git.rs at line 712
check_tree_inodes(txn, txn.graph(&channel.borrow()));check_tree_inodes(&*txn, txn.graph(&channel.read().unwrap())); - replacement in pijul/src/commands/git.rs at line 718
fn record_apply<T: TxnT + TxnTExt + MutTxnTExt, C: libpijul::changestore::ChangeStore>(txn: &mut T,channel: &mut ChannelRef<T>,working_copy: &mut libpijul::working_copy::FileSystem,fn record_apply<T: TxnT + TxnTExt + MutTxnTExt + Send + Sync + 'static, C: libpijul::changestore::ChangeStore + Clone + Send + 'static>(txn: Arc<RwLock<T>>,channel: ChannelRef<T>,working_copy: Arc<libpijul::working_copy::FileSystem>, - replacement in pijul/src/commands/git.rs at line 732[6.70]→[6.188:219](∅→∅),[6.160881]→[6.188:219](∅→∅),[6.219]→[6.397:608](∅→∅),[6.191]→[6.647:969](∅→∅),[6.608]→[6.647:969](∅→∅),[6.317]→[6.647:969](∅→∅),[6.969]→[6.535:549](∅→∅),[6.535]→[6.535:549](∅→∅)
for p in prefixes.iter() {let result = working_copy.record_prefix(txn,channel,changes,&mut state,repo_path.clone(),p,num_cpus,);use libpijul::working_copy::filesystem::*;match result {Ok(_) => {}Err(Error::Add(AddError::Fs(FsError::NotFound(_)))) => {}Err(Error::Add(AddError::Fs(FsError::AlreadyInRepo(_)))) => {}Err(e) => {error!("While adding {:?}: {}", p, e);}let result = working_copy.record_prefixes(txn.clone(),channel.clone(),changes,&mut state,repo_path.clone(),prefixes,num_cpus,);use libpijul::working_copy::filesystem::*;match result {Ok(_) => {}Err(Error::Add(AddError::Fs(FsError::NotFound(_)))) => {}Err(Error::Add(AddError::Fs(FsError::AlreadyInRepo(_)))) => {}Err(e) => {error!("While adding {:?}: {}", prefixes, e); - edit in pijul/src/commands/git.rs at line 751
let mut txn = txn.write().unwrap(); - replacement in pijul/src/commands/git.rs at line 756
txn.current_state(&channel.borrow()).map_err(TxnErr)?,txn.current_state(&channel.read().unwrap()).map_err(TxnErr)?, - replacement in pijul/src/commands/git.rs at line 762
.map(|rec| rec.globalize(txn).unwrap()).map(|rec| rec.globalize(&*txn).unwrap()) - replacement in pijul/src/commands/git.rs at line 766
libpijul::change::dependencies(txn, &channel.borrow(), actions.iter())?;libpijul::change::dependencies(&*txn, &channel.read().unwrap(), actions.iter())?; - replacement in pijul/src/commands/git.rs at line 768
txn,channel,&*txn,&channel, - replacement in pijul/src/commands/git.rs at line 771
rec.contents,std::mem::replace(&mut *rec.contents.lock().unwrap(), Vec::new()), - replacement in pijul/src/commands/git.rs at line 780
let (_, m) = txn.apply_local_change(channel, &change, &hash, &rec.updatables)?;let (_, m) = txn.apply_local_change(&channel, &change, &hash, &rec.updatables)?; - replacement in pijul/src/commands/fork.rs at line 31
let mut channel = txn.open_or_create_channel(&self.to)?;let channel = txn.open_or_create_channel(&self.to)?;let mut channel = channel.write().unwrap(); - replacement in pijul/src/commands/apply.rs at line 35
let mut channel = if let Some(channel) = txn.load_channel(&channel_name)? {let channel = if let Some(channel) = txn.load_channel(&channel_name)? { - edit in pijul/src/commands/apply.rs at line 58
let mut channel = channel.write().unwrap(); - edit in pijul/src/commands/apply.rs at line 61
let mut channel = channel.write().unwrap(); - replacement in libpijul/src/lib.rs at line 122
channel: &mut pristine::ChannelRef<Self>,channel: &mut Self::Channel, - replacement in libpijul/src/lib.rs at line 132
channel: &mut pristine::ChannelRef<Self>,channel: &mut Self::Channel, - replacement in libpijul/src/lib.rs at line 142
channel: &mut pristine::ChannelRef<Self>,channel: &mut Self::Channel, - replacement in libpijul/src/lib.rs at line 151
channel: &mut pristine::ChannelRef<Self>,channel: &mut Self::Channel, - replacement in libpijul/src/lib.rs at line 160
channel: &mut pristine::ChannelRef<Self>,channel: &mut Self::Channel, - replacement in libpijul/src/lib.rs at line 390
for app in extra.iter() {self.apply_change_rec(changes, channel, app)?{let mut channel_ = channel.write().unwrap();for app in extra.iter() {self.apply_change_rec(changes, &mut channel_, app)?} - replacement in libpijul/src/apply.rs at line 88
channel: &mut ChannelRef<T>,channel: &mut T::Channel, - edit in libpijul/src/apply.rs at line 94
let mut channel = channel.write().unwrap(); - replacement in libpijul/src/apply.rs at line 118
&mut channel,channel, - replacement in libpijul/src/apply.rs at line 129
channel: &mut ChannelRef<T>,channel: &mut T::Channel, - edit in libpijul/src/apply.rs at line 136
let mut channel = channel.write().unwrap(); - replacement in libpijul/src/apply.rs at line 177
apply_change_to_channel(txn, &mut channel, internal, &hash, &change, workspace)?;apply_change_to_channel(txn, channel, internal, &hash, &change, workspace)?; - replacement in libpijul/src/apply.rs at line 188
channel: &mut ChannelRef<T>,channel: &mut T::Channel, - replacement in libpijul/src/apply.rs at line 198
channel: &mut ChannelRef<T>,channel: &mut T::Channel,