XA23FMQM2AI7RMR36AYN7UNP2D5JWVJMJPHURWZO7URM7H46PU6AC
QMTANHVNRPQ5IX66FYQBFRBDCTN6YKMNCO6OHTQ6QCUASPWWXJKAC
3KRGVQFUWFHPOGZOXVTJYNCM4XBRVYITAEOVPKBSAZ5GZIUO5KVQC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
5DVRL6MFXQOCPOZMYSKBERMRRVUTYRL2SRGRTU2MH4IEOFCDKM3QC
MU5GSJAW65PEG3BRYUKZ7O37BPHW3MOX3S5E2RFOXKGUOJEEDQ5AC
L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC
I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC
CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC
VO5OQW4W2656DIYYRNZ3PO7TQ4JOKQ3GVWE5ALUTYVMX3WMXJOYQC
txn.output_repository_no_pending(
&mut repo.working_copy,
&repo.changes,
&mut channel,
&mut HashMap::new(),
"",
true,
)?;
let mut touched = HashSet::new();
for d in hashes.iter() {
if let Some(int) = txn.get_internal(*d)? {
for inode in txn.iter_rev_touched(int)? {
let (int_, inode) = inode?;
if int_ < int {
continue;
} else if int_ > int {
break;
}
touched.insert(inode);
}
}
}
let mut done = HashMap::new();
for i in touched {
let (path, _) =
libpijul::fs::find_path(&repo.changes, &txn, &channel.borrow(), false, i)?;
txn.output_repository_no_pending(
&mut repo.working_copy,
&repo.changes,
&mut channel,
&mut done,
&path,
true,
None,
)?;
}
repo.write_file(&path, |w: &mut dyn std::io::Write| {
output_file::<_, _, R>(
txn,
channel,
changes,
&output_item,
&mut conflicts,
w,
)
})
.map_err(OutputError::from)?
let output = if let Some(m) = if_modified_after {
if let Ok(last) = repo.modified_time(&path) {
last >= m
} else {
true
}
} else {
true
};
if output {
repo.write_file(&path, |w: &mut dyn std::io::Write| {
output_file::<_, _, R>(
txn,
channel,
changes,
&output_item,
&mut conflicts,
w,
)
})
.map_err(OutputError::from)?
}