KPGRBRHS3HGVO3FTJQ33GATP75TO4CE6DL567YZTXTWGLELRZYKQC
R3XMFPCYGXT5CNHYRNVZDGD2TDTCK6XGQ55SPJW56UEQQNV4R64AC
T3IX7GG7BIFN3AX3QQWRPS5CKFZVRU5TRQAMJSYN4FEJXQL75PJQC
ATRA7XTTN62JZQOI7A4JI3Z7L3XVTAEEW2U4AX6UQKEQ6USOXQDQC
D467LQZ62MTKWYPTMRBYTTR63CZDCE5WGBIGLQMSWAQYPHC3XITAC
FIIUZR4LJOB5DPB4CBMPJHMO7C5Q4ZINUVM52UK6SIM5WM7R7ZLAC
TQBJZLD7Q223IFEBR7SU4FJWPWQWVBCSRPYYYEHXNSDM6DC7UWRAC
libpijul::output::output_repository_no_pending(
&fs,
&self.change_store,
&self.txn,
&self.channel,
"",
false,
None,
1,
0,
)?;
let mut touched_paths = BTreeSet::new();
let txn = self.txn.read();
if let Some(int) = txn.get_internal(&change.into())? {
for inode in txn.iter_rev_touched(int)? {
let (int_, inode) = inode?;
if int_ < int {
continue;
} else if int_ > int {
break;
}
if let Some((path, _)) = libpijul::fs::find_path(
&self.change_store,
&*txn,
&*self.channel.read(),
false,
*inode,
)? {
touched_paths.insert(path);
} else {
touched_paths.clear();
break;
}
}
}
if touched_paths.is_empty() {
touched_paths.insert(String::from(""));
}
std::mem::drop(txn);
let mut last: Option<&str> = None;
for path in touched_paths.iter() {
match last {
Some(last_path) => {
// If `last_path` is a prefix (in the path sense) of `path`, skip.
if last_path.len() < path.len() {
let (pre_last, post_last) = path.split_at(last_path.len());
if pre_last == last_path && post_last.starts_with("/") {
continue;
}
}
}
_ => (),
}
libpijul::output::output_repository_no_pending(
&fs,
&self.change_store,
&self.txn,
&self.channel,
path,
true,
None,
1,
0,
)?;
last = Some(path);
}