Do not traverse unindexed directories in `pijul diff -su`
Dependencies
- [2]
BKF5KRLHFixing `pijul diff --untracked` - [3]
RAS4PCNU"Touch" the channel after `pijul diff` if the diff and the prefixes are both empty - [4]
TVUSKAR7Do not canonicalize paths when adding them from an ignore::walk - [5]
DDJO7X2PRemove dependency on `num_cpus` - [6]
EUZFFJSOUpdating Pijul with the latest changes in Libpijul - [7]
HSEYMLO2Adding an untracked change iterator - [8]
NWU66ZIPUntracked files when there are no other changes - [9]
ZDK3GNDBTag transactions (including a massive refactoring of errors) - [10]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [11]
EWZ7VHV4pijul diff: Do not ignore the --untracked option in presence of --short. - [12]
I24UEJQLVarious post-fire fixes - [13]
3J6IK4W2Explicitly adding .pijul is now forbidden - [14]
I52XSRUHMassive cleanup, and simplification - [15]
YGPEHOTElibpijul::fs::add_{file,dir} now return the created Inode - [16]
V6J6DTJCDo not compute the entire diff if all we want is --json --untracked - [17]
3SJ3DJNFAdding a --force option to `pijul add`, to include otherwise ignored files - [18]
5BB266P6Optional colours in the global config file - [19]
CCLLB7OIUpgrading to Sanakirja 0.15 + version bump - [20]
OJZWJUF2MUCH faster `pijul add -r` - [21]
2RXOCWUWMaking libpijul deterministic (and getting rid of `rand`) - [22]
VYHHOEYHVersions and formatting - [23]
VO5OQW4WRemoving anyhow in libpijul - [*]
4OCC6D42Recursive add
Change contents
- edit in pijul/src/commands/diff.rs at line 47
let txn = txn.read(); - replacement in pijul/src/commands/diff.rs at line 49
&untracked(&repo, &*txn)?.collect::<Vec<_>>(),&untracked(&repo, txn.clone())?.collect::<Result<Vec<_>, _>>()?, - edit in pijul/src/commands/diff.rs at line 105
let txn = txn.read(); - replacement in pijul/src/commands/diff.rs at line 106
for path in untracked(&repo, &*txn)? {writeln!(stdout, "U {}", path.to_str().unwrap())?;for path in untracked(&repo, txn.clone())? {writeln!(stdout, "U {}", path?.to_str().unwrap())?; - replacement in pijul/src/commands/diff.rs at line 110
for path in untracked(&repo, &*txn)? {writeln!(stdout, "{}", path.to_str().unwrap())?;for path in untracked(&repo, txn.clone())? {writeln!(stdout, "{}", path?.to_str().unwrap())?; - replacement in pijul/src/commands/diff.rs at line 116[6.175145]→[3.0:70](∅→∅),[3.70]→[6.175171:175217](∅→∅),[6.175171]→[6.175171:175217](∅→∅),[6.175217]→[3.71:126](∅→∅),[3.126]→[6.175261:175285](∅→∅),[6.17573]→[6.175261:175285](∅→∅),[6.20408]→[6.175261:175285](∅→∅),[6.175261]→[6.175261:175285](∅→∅)
let mut txn_ = txn.write();let actions: Vec<_> = rec.actions.into_iter().map(|rec| rec.globalize(&*txn_).unwrap()).collect();let actions: Vec<_> = {let txn_ = txn.read();rec.actions.into_iter().map(|rec| rec.globalize(&*txn_).unwrap()).collect()}; - replacement in pijul/src/commands/diff.rs at line 130
&*txn_,&*txn.read(), - replacement in pijul/src/commands/diff.rs at line 138[6.175496]→[6.175496:175552](∅→∅),[6.175552]→[3.200:249](∅→∅),[3.249]→[6.175598:175615](∅→∅),[6.17634]→[6.175598:175615](∅→∅),[6.20679]→[6.175598:175615](∅→∅),[6.175598]→[6.175598:175615](∅→∅),[6.175615]→[3.250:325](∅→∅)
let (dependencies, extra_known) = if self.tag {full_dependencies(&*txn_, &channel)?} else {dependencies(&*txn_, &*channel.read(), change.changes.iter())?let (dependencies, extra_known) = {let txn_ = txn.read();if self.tag {full_dependencies(&*txn_, &channel)?} else {dependencies(&*txn_, &*channel.read(), change.changes.iter())?} - replacement in pijul/src/commands/diff.rs at line 242
for path in untracked(&repo, &*txn_)? {writeln!(stdout, "U {}", path.to_str().unwrap())?;for path in untracked(&repo, txn.clone())? {writeln!(stdout, "U {}", path?.to_str().unwrap())?; - replacement in pijul/src/commands/diff.rs at line 247
for path in untracked(&repo, &*txn_)? {writeln!(stdout, "{}", path.to_str().unwrap())?;for path in untracked(&repo, txn.clone())? {writeln!(stdout, "{}", path?.to_str().unwrap())?; - replacement in pijul/src/commands/diff.rs at line 268
txn_.touch_channel(&mut *channel.write(), None);std::mem::drop(txn_);{let mut txn_ = txn.write();txn_.touch_channel(&mut *channel.write(), None);} - replacement in pijul/src/commands/diff.rs at line 375
fn untracked<'a, T: TxnTExt>(fn untracked<T: TxnTExt + Send + Sync + 'static>( - replacement in pijul/src/commands/diff.rs at line 377
txn: &'a T,) -> Result<impl Iterator<Item = PathBuf> + 'a, anyhow::Error> {txn: libpijul::ArcTxn<T>,) -> Result<impl Iterator<Item = Result<PathBuf, std::io::Error>>, anyhow::Error> { - edit in pijul/src/commands/diff.rs at line 381
let txn_ = txn.clone(); - replacement in pijul/src/commands/diff.rs at line 384[6.2456]→[6.121:204](∅→∅),[6.204]→[6.2532:2603](∅→∅),[6.2532]→[6.2532:2603](∅→∅),[6.2783]→[6.2783:2820](∅→∅),[6.2820]→[2.0:50](∅→∅),[2.50]→[6.2871:2993](∅→∅),[6.2871]→[6.2871:2993](∅→∅)
.iterate_prefix_rec(repo_path.clone(), repo_path.clone(), false, threads)?.filter_map(move |x| {let (path, _) = x.unwrap();use path_slash::PathExt;let path_str = path.to_slash_lossy();if !txn.is_tracked(&path_str).unwrap() {Some(path)} else {None.iterate_prefix_rec(repo_path.clone(),repo_path.clone(),false,threads,move |path, _| {use path_slash::PathExt;let path_str = path.to_slash_lossy();log::debug!("untracked {:?}", path_str);path_str.is_empty() || txn.read().is_tracked(&path_str).unwrap()},)?.filter_map(move |path| match path {Err(e) => Some(Err(e)),Ok((path, _)) => {use path_slash::PathExt;let path_str = path.to_slash_lossy();log::debug!("untracked {:?}", path_str);if !txn_.read().is_tracked(&path_str).unwrap() {Some(Ok(path))} else {None} - replacement in libpijul/src/working_copy/filesystem.rs at line 141
} else if let Some(j) = self.join.take() {if let Ok(Err(e)) = j.join() {return Some(Err(e));} else {if let Some(j) = self.join.take() {if let Ok(Err(e)) = j.join() {return Some(Err(e));} - replacement in libpijul/src/working_copy/filesystem.rs at line 220
for p in self.iterate_prefix_rec(repo_path.clone(), full.clone(), force, threads)? {for p inself.iterate_prefix_rec(repo_path.clone(), full.clone(), force, threads, |_, _| true)?{ - replacement in libpijul/src/working_copy/filesystem.rs at line 239
pub fn iterate_prefix_rec(pub fn iterate_prefix_rec<F: Fn(&Path, bool) -> bool + Send + Sync + 'static>( - edit in libpijul/src/working_copy/filesystem.rs at line 245
follow: F, - edit in libpijul/src/working_copy/filesystem.rs at line 266
let follow = std::sync::Arc::new(follow); - edit in libpijul/src/working_copy/filesystem.rs at line 268
let follow = follow.clone(); - replacement in libpijul/src/working_copy/filesystem.rs at line 279
walk.build_parallel().run(|| {Box::new(|entry| {walk.build_parallel().run(move || {let repo_path = repo_path.clone();let sender = sender.clone();let follow = follow.clone();Box::new(move |entry| { - edit in libpijul/src/working_copy/filesystem.rs at line 303[25.2707][4.309]
if !follow(path, is_dir) {return ignore::WalkState::Skip;}