Upgrading to Sanakirja 0.15 + version bump
[?]
Dec 31, 2020, 12:20 PM
CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDACDependencies
- [2]
MF3WAHBIcommands/record: amend current change if unspecified - [3]
7PM25EXLRecursive apply was written a little too fast… - [4]
SNZ3OAMCuse native external subcommand support instead of hand-rolled one - [5]
VXZNQQHCIf an existing file is moved to a new directory that is deleted before the record, record the deletion - [6]
KD4JIMAEListing the working copy in alphabetical order (instead of reverse alphabetical) - [7]
IUGP6ZGBAdd support for ~/.config/pijul even on macos - [8]
WKX5S4Z4remove unneccesary explicit lifetimes - [9]
PH7B6I3UFixing log --hash-only - [10]
7T5STZYBNow you can `pijul remove` the root of a repository - [11]
A7NTQINQpijul channel delete: error if channel doesn't exist - [12]
A6R6SGCPFixing a panic in `pijul change` - [13]
IM6UFPOZFixing a test related to the tree/revtree tables - [14]
PSKXR4QEDo not load the entire change in memory in log - [15]
BE7GUCI2Completing dependencies only with changes the remote does not have - [16]
6RVT5X4LCurrent state: return zero instead of an Option if there is no change on the channel - [17]
4VWXL6KQCorrect handling of ignore files - [18]
Y7YAFMFFFix path prefix striping on Windows. - [19]
6DOXSHWGCleanup, and version bump - [20]
VBMXB443Retrying if the HTTP connection drops while reading the body - [21]
6YMDOZIBRefactoring apply - [22]
VZL5OHF5Remove the obsolete `remote list` command - [23]
62XVBWPYremove redundant Clap attributes - [24]
NA5I4WYNFixing the inverse of conflict resolutions - [25]
NX5I5H53New published versions - [26]
737IBW6OFixing a warning in record - [27]
VQPAUKBQchannel switch as an alias to reset - [28]
WIORLB47Version bump - [29]
YAJAXIV5Unrecording changes atomically - [30]
23LVKATNUse pager crate for log output - [31]
6T5ULULMFixing conflicts with the changes from discussion #143 - [32]
KQTD46KVUnrecord: restore files *after* having unapplied the *entire* change - [33]
PJ7T2VFLDo not hang on locked repositories - [34]
FBXYP7QMForgot to add remote::http - [35]
FXT5FS5WUpdating Cargo.nix - [36]
WI5BS6BSNew published versions - [37]
AEPEFS7OWrite help for each argument - [38]
ZTVNGFNTVersion bump - [39]
UDHP4ZVBFixing SSH asynchronicity issues - [40]
JACZWIJ6Version bump - [41]
G6YZ7U65Version bump - [42]
X6YFD4WVDo not download changes if we already have them - [43]
UFCZKKLXUpgrading to the latest Sanakirja/Rand - [44]
I52XSRUHMassive cleanup, and simplification - [45]
7FFFKQZUadd 'Default' implementations - [46]
3S4DR77ZVersion updates - [47]
UNZXTNSJChange text format: order dependencies in the order they were on the channel at record time - [48]
DNQHXWRZaddress clippy hard errors - [49]
CFNFIUJVParsing the correct flags for new vertices - [50]
ERV3644QAdding the block module - [51]
XL6Y64UPFixing a panic when iterating over the basenames of a file - [52]
QE64ATLZFixing asynchronicity problems in SSH - [53]
FE5ES6Q4Stop pushing/pulling if the remote returns an error - [54]
NLGQAH4HCredit and reset relative to current directory instead of the root - [55]
7UPL3Y2AUnrecord: don't restore the same unrecorded file deletion twice in the inodes and tree tables - [56]
LCERQSWMCleanup - [57]
SZWBLWZ4Reading ~/.ssh/config - [58]
4OCC6D42Recursive add - [59]
RR65HCKOThrussh versions - [60]
MWKDNWZWVersion bump - [61]
N35L72XVVersions in Cargo.lock - [62]
MU5GSJAWPartial push and pull (WARNING: breaks the existing protocol) - [63]
4H2XTVJ2Fix some mistakes in the docs - [64]
O4DNWMPDCleaunp and proofreading of libpijul::record - [65]
VO5OQW4WRemoving anyhow in libpijul - [66]
IYJZVLETCleaning up the literate programming bits - [67]
3YDPHBANaddress non-controversial clippy lints - [68]
HMMMKONLFixing alive vertices - [69]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [70]
76PCXGMLPushing to, and pulling from the local repository - [71]
SLJ3OHD4unrecord: show list of changes if none were given as arguments - [72]
L5IUD2DSFixing the regular expression parsing the protocol lines - [73]
ZHABNS3SCanonicalize all paths - [74]
ZXTHL45Oaddress clippy lints - [75]
ATZ3BWSEFixing the double-deletion of repairs for folder edges - [76]
SPA2OL5Ikeep-changes feature (default) to avoid deleting problematic changes - [77]
G734WNM6flake.nix: use crate2nix - [78]
QYY37T6YFixing a panic with reset --dry-run and no input - [79]
Q7CAYX5NFixing Windows compilation - [80]
3M7WBE24Re-adding anyhow in the tests of libpijul - [81]
OJZWJUF2MUCH faster `pijul add -r` - [82]
UBCBQ5FGRemoving pijul/src/commands/checkout.rs (unused file), as well as litorg comments - [83]
KTTKF3RWLocking stderr and the progress bar in SSH - [84]
2K7JLB4ZNo pager on Windows - [85]
K6GWUOD5Styling progress bars - [86]
H23LO7U7a few more clippy lints addressed - [87]
3WIQYEISFixing conflicts in Cargo.lock - [88]
KDF6FJRVbigger clippy refactors - [89]
5DVRL6MFHard-unrecord - [90]
XAY4DYRRVersion bump - [91]
YACC5QR6Don't delete non-block edges unless they're at the top of a block - [92]
M5FK3ABTComplete dependencies when pushing and pulling - [93]
B5Z4IMEUGenerating Cargo.nix for pijul 1.0.0-alpha.6 - [94]
BXD3IQYNFixing --features git - [95]
OCBM7IFENew release: pijul-1.0.0-alpha.8 - [96]
Q45QHPO4Feedback on network stuff - [97]
BZSC7VMYaddress clippy lints - [98]
WZVCLZKYaddress clippy lints - [99]
QNJBR73Kdon't return Result for infallible functions - [100]
BD5PC25ADeleting conflict resolution vertices when the sides are deleted - [101]
H62VFFJECargo.nix, and solving conflicts - [102]
7A2TSC4PConflict solving code (FOLDER edges) - [103]
L5PHFTIEMinor simplification - [104]
GURIBVW6Fixing the pager - [105]
R3H7D42UDebugging `pijul git`: proper error reporting - [106]
AN7IDX26pijul: added ChangesNotFound error variant - [107]
L4JXJHWXpijul/*: reorganize imports and remove extern crate - [108]
IQ4FCHPZHTTP connections: pooling + retry on error - [109]
GLMOA3PFMore edges in "credit" - [110]
YX3VCEOMVersion bump - [111]
43AJ37IXGetting rid of edge validation, which does not work for zombie conflicts - [112]
BT2ZHPY4Version bumps - [113]
SAGSYAPXVarious version bumps - [114]
5BRU2RRWCleanup (debugging a crash related to trees/inodes) - [115]
73NW2X2MReturning a parse error instead of panicking when parsing a text change - [116]
6WFOU7UXDo a DFS on dependencies to complete the list - [117]
GVQ7YSEDChecking for dependencies even for a local change - [118]
XWETQ4DEUpgrading versions - [119]
5YDI33C4Fixing pager on OSX - [120]
VIHXB7SGcommands: set up pager for diff, change, and credit - [121]
OUWD436AVersion bump - [122]
74HX2XZDCleanup and debugging - [*]
FMKKWCFVBetter clap attributes
Change contents
- edit in pijul-macros/src/lib.rs at line 36
#[doc(hidden)] - edit in pijul-macros/src/lib.rs at line 52
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 69
quote! { self.txn.get(&self.#name, key, value) }quote! { if let Ok(x) = self.txn.get(&self.#name, key, value) {Ok(x)} else {Err(TxnErr(SanakirjaError::PristineCorrupt))}} - replacement in pijul-macros/src/lib.rs at line 76
quote! { self.txn.get(&self.#name, key, value) . #post_ }quote! { if let Ok(x) = self.txn.get(&self.#name, key, value) {Ok(x . #post_)} else {Err(TxnErr(SanakirjaError::PristineCorrupt))}} - replacement in pijul-macros/src/lib.rs at line 83
#[doc(hidden)]fn #name_get <'txn> (&'txn self, key: #key, value: Option<#value>) -> Option<#value> {fn #name_get <'txn> (&'txn self, key: #key, value: Option<#value>) -> Result<Option<#value>, TxnErr<Self::#error>> { - edit in pijul-macros/src/lib.rs at line 103
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 111
#[doc(hidden)]fn #name_get(&self, db: &Self::#name_capital, key: #key, value: Option<#value>) -> Option<#value> {fn #name_get(&self, db: &Self::#name_capital, key: #key, value: Option<#value>) -> Result<Option<#value>, TxnErr<Self::#error>> { - replacement in pijul-macros/src/lib.rs at line 113
self.txn.get(db, key, value)if let Ok(x) = self.txn.get(db, key, value) {Ok(x)} else {Err(TxnErr(SanakirjaError::PristineCorrupt))} - edit in pijul-macros/src/lib.rs at line 133
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 141
#[doc(hidden)]fn #name_get<'txn>(&'txn self, key: #key, value: Option<#value>) -> Option<#value>;fn #name_get<'txn>(&'txn self, key: #key, value: Option<#value>) -> Result<Option<#value>, TxnErr<Self::#error>>; - edit in pijul-macros/src/lib.rs at line 157
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 165
#[doc(hidden)]fn #name_get<'txn>(&'txn self, db: &Self::#name_capital, key: #key, value: Option<#value>) -> Option<#value>;fn #name_get<'txn>(&'txn self, db: &Self::#name_capital, key: #key, value: Option<#value>) -> Result<Option<#value>, TxnErr<Self::#error>>; - edit in pijul-macros/src/lib.rs at line 234
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { GraphError }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 244
crate::pristine::RevCursor<Self, &'txn Self, Self::#cursor_name, #key, #value>Result<crate::pristine::RevCursor<Self, &'txn Self, Self::#cursor_name, #key, #value>, TxnErr<Self::#error>> - replacement in pijul-macros/src/lib.rs at line 248
crate::pristine::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value>Result<crate::pristine::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value>, TxnErr<Self::#error>> - edit in pijul-macros/src/lib.rs at line 255
#[doc(hidden)] - edit in pijul-macros/src/lib.rs at line 256
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 259
) -> Option<(#key, #value)>;#[doc(hidden)]) -> Result<Option<(#key, #value)>, TxnErr<Self::#error>>; - replacement in pijul-macros/src/lib.rs at line 263
) -> Option<(#key, #value)>;) -> Result<Option<(#key, #value)>, TxnErr<Self::#error>>; - edit in pijul-macros/src/lib.rs at line 268
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 272
) -> crate::pristine::Cursor<Self, RT, Self::#cursor_name, #key, #value>;) -> Result<crate::pristine::Cursor<Self, RT, Self::#cursor_name, #key, #value>, TxnErr<Self::#error>>; - edit in pijul-macros/src/lib.rs at line 281
#[doc(hidden)] - edit in pijul-macros/src/lib.rs at line 291
#[doc(hidden)] - edit in pijul-macros/src/lib.rs at line 372
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 376
) -> super::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value> {) -> Result<super::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value>, TxnErr<SanakirjaError>> { - edit in pijul-macros/src/lib.rs at line 386
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 390
) -> super::Cursor<Self, RT, Self::#cursor_name, #key, #value> {) -> Result<super::Cursor<Self, RT, Self::#cursor_name, #key, #value>, TxnErr<SanakirjaError>> { - replacement in pijul-macros/src/lib.rs at line 392
let mut cursor = txn.txn.set_cursors(&db, pos).0;super::Cursor {cursor,txn,marker: std::marker::PhantomData,if let Ok((cursor, _)) = txn.txn.set_cursors(&db, pos) {Ok(super::Cursor {cursor,txn,marker: std::marker::PhantomData,})} else {Err(TxnErr(SanakirjaError::PristineCorrupt)) - edit in pijul-macros/src/lib.rs at line 409
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 413
) -> super::RevCursor<Self, &'txn Self, Self::#cursor_name, #key, #value> {) -> Result<super::RevCursor<Self, &'txn Self, Self::#cursor_name, #key, #value>, TxnErr<SanakirjaError>> { - replacement in pijul-macros/src/lib.rs at line 416
self.txn.set_cursors(&db, pos).0if let Ok((x, _)) = self.txn.set_cursors(&db, pos) {x} else {return Err(TxnErr(SanakirjaError::PristineCorrupt))}} else if let Ok(x) = self.txn.set_cursors_last(&db) {x - replacement in pijul-macros/src/lib.rs at line 424
self.txn.set_cursors_last(&db)return Err(TxnErr(SanakirjaError::PristineCorrupt)) - replacement in pijul-macros/src/lib.rs at line 426
super::RevCursor {Ok(super::RevCursor { - replacement in pijul-macros/src/lib.rs at line 430
}}) - edit in pijul-macros/src/lib.rs at line 435
#[doc(hidden)] - edit in pijul-macros/src/lib.rs at line 436
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 440
) -> super::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value> {) -> Result<super::Cursor<Self, &'txn Self, Self::#cursor_name, #key, #value>, TxnErr<SanakirjaError>> { - replacement in pijul-macros/src/lib.rs at line 442
let mut cursor = self.txn.set_cursors(&db, pos).0;super::Cursor {let mut cursor = if let Ok((x, _)) = self.txn.set_cursors(&db, pos) {x} else {return Err(TxnErr(SanakirjaError::PristineCorrupt))};Ok(super::Cursor { - replacement in pijul-macros/src/lib.rs at line 451
}}) - edit in pijul-macros/src/lib.rs at line 454
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 457
) -> Option<(#key, #value)> {(unsafe { ::sanakirja::next(&self.txn, cursor) })#post) -> Result<Option<(#key, #value)>, TxnErr<SanakirjaError>> {let x = if let Ok(x) = unsafe { ::sanakirja::next(&self.txn, cursor) } {x} else {return Err(TxnErr(SanakirjaError::PristineCorrupt))};Ok(x #post) - edit in pijul-macros/src/lib.rs at line 465
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 468
) -> Option<(#key, #value)> {(unsafe { ::sanakirja::prev(&self.txn, cursor) })#post) -> Result<Option<(#key, #value)>, TxnErr<SanakirjaError>> {let x = if let Ok(x) = unsafe { ::sanakirja::prev(&self.txn, cursor) } {x} else {return Err(TxnErr(SanakirjaError::PristineCorrupt))};Ok(x #post) - edit in pijul-macros/src/lib.rs at line 507
let txnt = next(&mut input_iter);let txnt: proc_macro2::TokenStream = if txnt.is_empty() {proc_macro2::TokenStream::from(quote! { TxnT })} else {proc_macro2::TokenStream::from_iter(txnt.into_iter())};let error = next(&mut input_iter);let error: proc_macro2::TokenStream = if error.is_empty() {proc_macro2::TokenStream::from(quote! { GraphError })} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - replacement in pijul-macros/src/lib.rs at line 524
impl<T: TxnT, RT: std::ops::Deref<Target = T>> Iterator for crate::pristine::RevCursor<T, RT, T::#cursor_name, #key, #value>impl<T: #txnt, RT: std::ops::Deref<Target = T>> Iterator for crate::pristine::RevCursor<T, RT, T::#cursor_name, #key, #value> - replacement in pijul-macros/src/lib.rs at line 526
type Item = (#key, #value);fn next(&mut self) -> Option<(#key, #value)> {self.txn.#name_prev(&mut self.cursor)type Item = Result<(#key, #value), TxnErr<T::#error>>;fn next(&mut self) -> Option<Self::Item> {match self.txn.#name_prev(&mut self.cursor) {Ok(Some(x)) => Some(Ok(x)),Ok(None) => None,Err(e) => Some(Err(e)),} - replacement in pijul-macros/src/lib.rs at line 539
impl<T: TxnT, RT: std::ops::Deref<Target = T>>impl<T: #txnt, RT: std::ops::Deref<Target = T>> - replacement in pijul-macros/src/lib.rs at line 542
pub fn prev(&mut self) -> Option<(#key, #value)> {self.txn.#name_prev(&mut self.cursor)pub fn prev(&mut self) -> Option<Result<(#key, #value), TxnErr<T::#error>>> {match self.txn.#name_prev(&mut self.cursor) {Ok(Some(x)) => Some(Ok(x)),Ok(None) => None,Err(e) => Some(Err(e)),} - replacement in pijul-macros/src/lib.rs at line 550
impl<T: TxnT, RT: std::ops::Deref<Target = T>> Iterator for crate::pristine::Cursor<T, RT, T::#cursor_name, #key, #value>impl<T: #txnt, RT: std::ops::Deref<Target = T>> Iterator for crate::pristine::Cursor<T, RT, T::#cursor_name, #key, #value> - replacement in pijul-macros/src/lib.rs at line 552
type Item = (#key, #value);fn next(&mut self) -> Option<(#key, #value)> {self.txn.#name_next(&mut self.cursor)type Item = Result<(#key, #value), TxnErr<T::#error>>;fn next(&mut self) -> Option<Self::Item> {match self.txn.#name_next(&mut self.cursor) {Ok(Some(x)) => Some(Ok(x)),Ok(None) => None,Err(e) => Some(Err(e)),} - edit in pijul-macros/src/lib.rs at line 578
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - edit in pijul-macros/src/lib.rs at line 587
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 591
) -> Result<bool, Self::Error>;#[doc(hidden)]) -> Result<bool, TxnErr<Self::#error>>; - replacement in pijul-macros/src/lib.rs at line 596
) -> Result<bool, Self::Error>;) -> Result<bool, TxnErr<Self::#error>>; - edit in pijul-macros/src/lib.rs at line 614
let error = next(&mut input_iter);let error = if error.is_empty() {quote! { Error }} else {proc_macro2::TokenStream::from_iter(error.into_iter())}; - edit in pijul-macros/src/lib.rs at line 624
- edit in pijul-macros/src/lib.rs at line 626
- edit in pijul-macros/src/lib.rs at line 629
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 633
) -> Result<bool, Self::Error> {Ok(self.txn.put(&mut self.rng, &mut self.#name, k, v)?)) -> Result<bool, TxnErr<Self::#error>> {Ok(self.txn.put(&mut self.rng, &mut self.#name, k, v).map_err(TxnErr)?) - edit in pijul-macros/src/lib.rs at line 636
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 640
) -> Result<bool, Self::Error> {Ok(self.txn.del(&mut self.rng, &mut self.#name, k, v)?)) -> Result<bool, TxnErr<Self::#error>> {Ok(self.txn.del(&mut self.rng, &mut self.#name, k, v).map_err(TxnErr)?) - edit in pijul-macros/src/lib.rs at line 646
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 650
) -> Result<bool, Self::Error> {) -> Result<bool, TxnErr<Self::#error>> { - replacement in pijul-macros/src/lib.rs at line 653
Ok(self.txn.put(&mut self.rng, &mut self.#name, k, v)?)Ok(self.txn.put(&mut self.rng, &mut self.#name, k, v).map_err(TxnErr)?) - edit in pijul-macros/src/lib.rs at line 655
#[doc(hidden)] - replacement in pijul-macros/src/lib.rs at line 659
) -> Result<bool, Self::Error> {) -> Result<bool, TxnErr<Self::#error>> { - replacement in pijul-macros/src/lib.rs at line 662
Ok(self.txn.del(&mut self.rng, &mut self.#name, k, v)?)Ok(self.txn.del(&mut self.rng, &mut self.#name, k, v).map_err(TxnErr)?) - replacement in pijul-macros/Cargo.toml at line 4
version = "0.2.0"version = "0.3.0" - edit in pijul/src/repository.rs at line 4
use anyhow::bail; - replacement in pijul/src/repository.rs at line 8
use crate::{config, current_dir, Error};use crate::{config, current_dir}; - replacement in pijul/src/repository.rs at line 45
return Err(Error::NoRepoRoot.into());bail!("No Pijul repository found") - replacement in pijul/src/repository.rs at line 74
return Err((crate::Error::CouldNotReadConfig { path: config_path }).into());bail!("Could not read configuration file at {:?}", config_path) - replacement in pijul/src/repository.rs at line 114
Err(Error::AlreadyInARepo.into())bail!("Already in a repository") - edit in pijul/src/remote/ssh.rs at line 21
use crate::Error; - replacement in pijul/src/remote/ssh.rs at line 103
return Err(Error::NotAuthenticated.into());bail!("Not authenticated") - replacement in pijul/src/remote/ssh.rs at line 561
return Err((Error::RemoteExit {status: exit_status,}).into());bail!("Remote exited with status {:?}", exit_status) - replacement in pijul/src/remote/ssh.rs at line 659
return Err((Error::RemoteExit {status: exit_status,}).into());bail!("Remote exited with status {:?}", exit_status) - replacement in pijul/src/remote/ssh.rs at line 881
let h = txn.get_external(ch).unwrap();let h = txn.get_external(ch)?.unwrap(); - replacement in pijul/src/remote/ssh.rs at line 885
for (_, (h, _)) in txn.log(&channel_, 0) {hashes.push(h);for h in txn.log(&channel_, 0)? {hashes.push((h?.1).0); - edit in pijul/src/remote/mod.rs at line 14
use crate::Error; - replacement in pijul/src/remote/mod.rs at line 75
Err((Error::RemoteNotFound {remote: name.to_string(),}).into())bail!("Remote not found: {:?}", name) - replacement in pijul/src/remote/mod.rs at line 106
Err((Error::RemoteNotFound {remote: name.to_string(),}).into())bail!("Remote not found: {:?}", name) - replacement in pijul/src/remote/mod.rs at line 181
.iter_remote(&remote.borrow().remote, n).filter_map(|(k, _)| if k >= n { Some(k) } else { None }).iter_remote(&remote.borrow().remote, n)?.filter_map(|k| {let k = k.unwrap().0;if k >= n {Some(k)} else {None}}) - replacement in pijul/src/remote/mod.rs at line 212
let (mut b, (_, state)) = if let Some(last) = txn.last_remote(remote) {let (mut b, (_, state)) = if let Some(last) = txn.last_remote(remote)? { - replacement in pijul/src/remote/mod.rs at line 229
let (mid, (_, state)) = txn.get_remote_state(remote, mid).unwrap();let (mid, (_, state)) = txn.get_remote_state(remote, mid)?.unwrap(); - replacement in pijul/src/remote/mod.rs at line 272
return Err((crate::Error::Http {status: res.status(),}).into());bail!("HTTP error {:?}", res.status()) - replacement in pijul/src/remote/mod.rs at line 288
if let Some(channel) = txn.load_channel(&channel) {Ok(local::get_state(txn, &channel, mid))if let Some(channel) = txn.load_channel(&channel)? {local::get_state(txn, &channel, mid) - replacement in pijul/src/remote/mod.rs at line 311
let mut channel = txn.load_channel(&l.channel).unwrap();let mut channel = txn.load_channel(&l.channel)?.unwrap(); - replacement in pijul/src/remote/mod.rs at line 315
let channel = txn.load_channel(&l.channel).unwrap();let channel = txn.load_channel(&l.channel)?.unwrap(); - replacement in pijul/src/remote/mod.rs at line 338
return Err((crate::Error::Http {status: res.status(),}).into());bail!("HTTP error {:?}", res.status()) - replacement in pijul/src/remote/mod.rs at line 595
for (n, (h, s)) in txn.iter_rev_remote(&remote.borrow().remote, None) {for x in txn.iter_rev_remote(&remote.borrow().remote, None)? {let (n, (h, s)) = x?; - replacement in pijul/src/remote/mod.rs at line 605
return Err((Error::StateNotFound { state }).into());bail!("State not found: {:?}", state) - replacement in pijul/src/remote/mod.rs at line 617
for (n, (h, s)) in txn.iter_remote(&remote.borrow().remote, 0) {for x in txn.iter_remote(&remote.borrow().remote, 0)? {let (n, (h, s)) = x?; - replacement in pijul/src/remote/mod.rs at line 627
return Err((Error::StateNotFound { state }).into());bail!("State not found: {:?}", state) - replacement in pijul/src/remote/mod.rs at line 659
if repo.changes.has_contents(*c, txn.get_internal(*c)) {if repo.changes.has_contents(*c, txn.get_internal(*c)?) { - replacement in pijul/src/remote/mod.rs at line 669
let change = if let Some(i) = txn.get_internal(*c) {let change = if let Some(i) = txn.get_internal(*c)? { - replacement in pijul/src/remote/mod.rs at line 681
if txn.is_alive(&channel, v) {if txn.is_alive(&channel, v)? { - replacement in pijul/src/remote/mod.rs at line 710
for (_, (h, _)) in txn.iter_remote(&remote_changes.borrow().remote, 0) {for x in txn.iter_remote(&remote_changes.borrow().remote, 0)? {let (_, (h, _)) = x?; - replacement in pijul/src/remote/local.rs at line 5
use libpijul::pristine::{Base32, Hash, Merkle, MutTxnT, Position, TxnT};use libpijul::{MutTxnTExt, TxnTExt};use libpijul::pristine::{Hash, Merkle, MutTxnT, Position, TxnT};use libpijul::*; - replacement in pijul/src/remote/local.rs at line 24
) -> Option<(u64, Merkle)> {) -> Result<Option<(u64, Merkle)>, anyhow::Error> { - replacement in pijul/src/remote/local.rs at line 26
txn.get_changes(&channel, mid).map(|(_, m)| (mid, m))Ok(txn.get_changes(&channel, mid)?.map(|(_, m)| (mid, m))) - replacement in pijul/src/remote/local.rs at line 28
txn.reverse_log(&channel.borrow(), None).next().map(|(n, (_, m))| (n, m))Ok(txn.reverse_log(&channel.borrow(), None)?.next().map(|n| {let (n, (_, m)) = n.unwrap();(n, m)})) - replacement in pijul/src/remote/local.rs at line 38
let channel = txn.load_channel(&self.channel).unwrap();Ok(get_state(&txn, &channel, mid))let channel = txn.load_channel(&self.channel)?.unwrap();Ok(get_state(&txn, &channel, mid)?) - replacement in pijul/src/remote/local.rs at line 51
let remote_channel = if let Some(channel) = remote_txn.load_channel(&self.channel) {let remote_channel = if let Some(channel) = remote_txn.load_channel(&self.channel)? { - replacement in pijul/src/remote/local.rs at line 63
change: remote_txn.get_external(p.change).unwrap(),change: remote_txn.get_external(p.change)?.unwrap(), - replacement in pijul/src/remote/local.rs at line 67
paths_.extend(libpijul::fs::iter_graph_descendants(&remote_txn,&remote_channel.borrow(),p,));paths_.extend(libpijul::fs::iter_graph_descendants(&remote_txn,&remote_channel.borrow().graph,p,)?.map(|x| x.unwrap()),); - replacement in pijul/src/remote/local.rs at line 78
for (n, (h, m)) in remote_txn.log(&remote_channel.borrow(), from) {for x in remote_txn.log(&remote_channel.borrow(), from)? {let (n, (h, m)) = x?; - replacement in pijul/src/remote/local.rs at line 87
let h_int = remote_txn.get_internal(h).unwrap();let h_int = remote_txn.get_internal(h)?.unwrap(); - replacement in pijul/src/remote/local.rs at line 89
|| paths_.iter().any(|x| remote_txn.get_touched_files(*x, Some(h_int)).is_some())|| paths_.iter().any(|x| {remote_txn.get_touched_files(*x, Some(h_int)).unwrap().is_some()}) - edit in pijul/src/remote/http.rs at line 5
use anyhow::bail; - replacement in pijul/src/remote/http.rs at line 44
return Err((crate::Error::Http {status: res.status(),}).into());bail!("HTTP error {:?}", res.status()) - replacement in pijul/src/remote/http.rs at line 183
return Err((crate::Error::Http {status: res.status(),}).into());bail!("HTTP error {:?}", res.status()) - edit in pijul/src/main.rs at line 10[22.603][124.0]
use anyhow::bail; - edit in pijul/src/main.rs at line 13
use libpijul::pristine::Base32;use thiserror::Error; - edit in pijul/src/main.rs at line 125[4.98]→[22.85867:86849](∅→∅),[22.85867]→[22.85867:86849](∅→∅),[22.86917]→[22.86917:87334](∅→∅),[22.87413]→[22.87413:87666](∅→∅),[22.87666]→[22.867:909](∅→∅),[22.909]→[22.87719:87776](∅→∅),[22.87719]→[22.87719:87776](∅→∅),[22.87776]→[22.0:82](∅→∅),[22.82]→[22.87776:88054](∅→∅),[22.87776]→[22.87776:88054](∅→∅),[22.93]→[22.33:133](∅→∅),[22.133]→[22.1660:1751](∅→∅)
}#[derive(Debug, Error)]pub enum Error {#[error("No Pijul repository found")]NoRepoRoot,#[error("Cannot access working directory")]CannotAccessWorkingDirectory,#[error("Already in a repository")]AlreadyInARepo,#[error("No such channel: {}", channel)]NoSuchChannel { channel: String },#[error("Protocol error. Is this the correct URL?")]ProtocolError { line: Vec<u8> },#[error("Not authenticated")]NotAuthenticated,#[error("No change message")]NoChangeMessage,#[error("Incorrect remote: {}", name)]IncorrectRemote { name: String },#[error("Unknown host key")]UnknownHostKey,#[error("Cannot record a binary change interactively. Use -a")]RecordBinaryChange,#[error("Remote not found: {:?}", remote)]RemoteNotFound { remote: String },#[error("No global config directory")]NoGlobalConfigDir,#[error("Could not parse global config")]CouldNotParseGlobal,#[error("Remote error: {}", msg)]Remote { msg: String },#[error("Remote exited with status {}", status)]RemoteExit { status: u32 },#[error("Missing remote")]MissingRemote,#[error("State not found in remote: {:?}", state)]StateNotFound { state: libpijul::pristine::Merkle },#[error("Missing dependencies for change {:?}", h)]MissingDep { h: libpijul::pristine::Hash },#[error("No prefixes given. Use `.` to record the current directory.")]NoRecordPrefixes,#[error("HTTP error: {}", status.as_str())]Http { status: reqwest::StatusCode },#[error("Could not parse configuration file at {:?}", path)]CouldNotReadConfig { path: PathBuf },#[error("No current channel")]NoCurrentChannel,#[error("Cannot delete the current channel")]CannotDeleteCurrentChannel,#[error("Channel not found: {:?}", channel)]ChannelNotFound { channel: String },#[error("Cannot reset, because there are unrecorded changes")]UnrecordedChanges,#[error("Could not infer repository name")]CouldNotInferRepositoryName { repo: String },#[error("Cannot unrecord change {}, because change {} depends on it", change, dep.to_base32())]CannotUnrecord {change: String,dep: libpijul::pristine::Hash,}, - replacement in pijul/src/main.rs at line 207
pub fn current_dir() -> Result<PathBuf, Error> {std::env::current_dir().map_err(|_| Error::CannotAccessWorkingDirectory)pub fn current_dir() -> Result<PathBuf, anyhow::Error> {if let Ok(cur) = std::env::current_dir() {Ok(cur)} else {bail!("Cannot access working directory")} - edit in pijul/src/config.rs at line 1
use crate::Error; - edit in pijul/src/config.rs at line 3
use anyhow::bail; - replacement in pijul/src/config.rs at line 42
toml::from_slice(&s).map_err(|_| Error::CouldNotReadConfig { path: dir }.into())if let Ok(t) = toml::from_slice(&s) {Ok(t)} else {bail!("Could not read configuration file at {:?}", dir)} - replacement in pijul/src/config.rs at line 48
Err(Error::NoGlobalConfigDir.into())bail!("Global configuration file missing") - replacement in pijul/src/commands/unrecord.rs at line 7
use libpijul::{Base32, MutTxnT, MutTxnTExt, TxnT, TxnTExt};use libpijul::*; - replacement in pijul/src/commands/unrecord.rs at line 39
if let Some(mut channel) = txn.load_channel(channel_name) {if let Some(mut channel) = txn.load_channel(channel_name)? { - replacement in pijul/src/commands/unrecord.rs at line 63
.reverse_log(&channel.borrow(), None).map(|(_, (h, _))| h).reverse_log(&channel.borrow(), None)?.map(|h| (h.unwrap().1).0) - replacement in pijul/src/commands/unrecord.rs at line 88
for (p, d) in txn.iter_revdep(change_id) {for p in txn.iter_revdep(change_id)? {let (p, d) = p?; - replacement in pijul/src/commands/unrecord.rs at line 95
if txn.get_changeset(&channel_.changes, d, None).is_some() {let dep = txn.get_external(d).unwrap();if txn.get_changeset(&channel_.changes, d, None)?.is_some() {let dep = txn.get_external(d)?.unwrap(); - edit in pijul/src/commands/reset.rs at line 10
use crate::Error; - replacement in pijul/src/commands/reset.rs at line 41
let mut channel = if let Some(channel) = txn.load_channel(&channel_name) {let mut channel = if let Some(channel) = txn.load_channel(&channel_name)? { - replacement in pijul/src/commands/reset.rs at line 44
return Err((Error::NoSuchChannel {channel: channel_name.to_string(),}).into());bail!("No such channel: {:?}", channel_name) - replacement in pijul/src/commands/reset.rs at line 75
if let Some(mut channel) = txn.load_channel(current_channel) {if let Some(mut channel) = txn.load_channel(current_channel)? { - replacement in pijul/src/commands/reset.rs at line 88
return Err(Error::UnrecordedChanges.into());bail!("Cannot change channel, as there are unrecorded changes.") - edit in pijul/src/commands/record.rs at line 5
use anyhow::bail; - edit in pijul/src/commands/record.rs at line 17
use crate::Error; - replacement in pijul/src/commands/record.rs at line 76
} else if let Some((_, (h, _))) = txn.reverse_log(&channel.borrow(), None).next() {h} else if let Some(h) = txn.reverse_log(&channel.borrow(), None)?.next() {(h?.1).0 - replacement in pijul/src/commands/record.rs at line 200
.map(|rec| rec.globalize(txn)).map(|rec| rec.globalize(txn).unwrap()) - replacement in pijul/src/commands/record.rs at line 203
LocalChange::make_change(txn, channel, actions, rec.contents, header, Vec::new());LocalChange::make_change(txn, channel, actions, rec.contents, header, Vec::new())?; - replacement in pijul/src/commands/record.rs at line 210
return Err(Error::RecordBinaryChange.into());bail!("Cannot record a binary change interactively. Please use -a.") - replacement in pijul/src/commands/record.rs at line 243
return Err(Error::NoChangeMessage.into());bail!("No change message") - replacement in pijul/src/commands/pushpull.rs at line 10
use libpijul::{MutTxnT, MutTxnTExt, TxnT, TxnTExt};use libpijul::*; - replacement in pijul/src/commands/pushpull.rs at line 40
for r in txn.iter_remotes("") {for r in txn.iter_remotes("")? {let r = r?; - replacement in pijul/src/commands/pushpull.rs at line 165
paths.extend(libpijul::fs::iter_graph_descendants(&txn,&channel.borrow(),p,));paths.extend(libpijul::fs::iter_graph_descendants(&txn, &channel.borrow().graph, p)?.map(|x| x.unwrap()),); - replacement in pijul/src/commands/pushpull.rs at line 172
for (_, (h, m)) in txn.reverse_log(&channel.borrow(), None) {for x in txn.reverse_log(&channel.borrow(), None)? {let (_, (h, m)) = x?; - replacement in pijul/src/commands/pushpull.rs at line 175
if txn.remote_has_state(remote_changes, m) {if txn.remote_has_state(remote_changes, m)? { - replacement in pijul/src/commands/pushpull.rs at line 178
let h_int = txn.get_internal(h).unwrap();if !txn.remote_has_change(&remote_changes, h) {let h_int = txn.get_internal(h)?.unwrap();if !txn.remote_has_change(&remote_changes, h)? { - replacement in pijul/src/commands/pushpull.rs at line 184
if txn.get_touched_files(*p, Some(h_int)).is_some() {if txn.get_touched_files(*p, Some(h_int))?.is_some() { - replacement in pijul/src/commands/pushpull.rs at line 192
if let Some(channel) = txn.load_channel(remote_channel) {if let Some(channel) = txn.load_channel(remote_channel)? { - replacement in pijul/src/commands/pushpull.rs at line 194
let h_int = txn.get_internal(h).unwrap();if txn.get_changeset(&channel.changes, h_int, None).is_none() {let h_int = txn.get_internal(h)?.unwrap();if txn.get_changeset(&channel.changes, h_int, None)?.is_none() { - replacement in pijul/src/commands/pushpull.rs at line 200
if txn.get_touched_files(*p, Some(h_int)).is_some() {if txn.get_touched_files(*p, Some(h_int))?.is_some() { - replacement in pijul/src/commands/pushpull.rs at line 309
for (_, (h, m)) in txn.iter_remote(&remote_changes.borrow().remote, 0) {if txn.channel_has_state(&channel, m) {for x in txn.iter_remote(&remote_changes.borrow().remote, 0)? {let (h, m) = x?.1;if txn.channel_has_state(&channel, m)? { - replacement in pijul/src/commands/pushpull.rs at line 313
} else if txn.get_revchanges(&channel, h).is_none() {} else if txn.get_revchanges(&channel, h)?.is_none() { - replacement in pijul/src/commands/pushpull.rs at line 325
inodes_.extend(libpijul::fs::iter_graph_descendants(&txn,&channel.borrow(),p,));inodes_.extend(libpijul::fs::iter_graph_descendants(&txn, &channel.borrow().graph, p)?.map(|x| x.unwrap()),); - replacement in pijul/src/commands/pushpull.rs at line 331
change: txn.get_external(x.change).unwrap(),change: txn.get_external(x.change).unwrap().unwrap(), - replacement in pijul/src/commands/pushpull.rs at line 334
if let Some(remote_channel) = txn.load_channel(remote_channel) {if let Some(remote_channel) = txn.load_channel(remote_channel)? { - replacement in pijul/src/commands/pushpull.rs at line 336
for (_, (h, m)) in txn.reverse_log(&remote_channel, None) {if txn.channel_has_state(&channel, m) {for x in txn.reverse_log(&remote_channel, None)? {let (h, m) = x?.1;if txn.channel_has_state(&channel, m)? { - replacement in pijul/src/commands/pushpull.rs at line 341
let h_int = txn.get_internal(h).unwrap();let h_int = txn.get_internal(h)?.unwrap(); - replacement in pijul/src/commands/pushpull.rs at line 343
.get_changeset(&channel.borrow().changes, h_int, None).get_changeset(&channel.borrow().changes, h_int, None)? - replacement in pijul/src/commands/pushpull.rs at line 348
txn.get_rev_touched_files(h_int, Some(inode)).is_some()txn.get_rev_touched_files(h_int, Some(inode)).unwrap().is_some() - replacement in pijul/src/commands/pushpull.rs at line 436
let i = if let Some(change) = txn.get_internal(i.change) {let i = if let Some(change) = txn.get_internal(i.change)? { - replacement in pijul/src/commands/pushpull.rs at line 488
if txn.remote_has_change(rem, d) {if txn.remote_has_change(rem, d)? { - edit in pijul/src/commands/protocol.rs at line 6
use crate::repository::Repository;use anyhow::bail; - replacement in pijul/src/commands/protocol.rs at line 11
use libpijul::{Base32, ChannelRef, Hash, MutTxnT, MutTxnTExt, TxnT, TxnTExt};use libpijul::*; - edit in pijul/src/commands/protocol.rs at line 15
use crate::repository::Repository;use crate::Error; - replacement in pijul/src/commands/protocol.rs at line 38[22.124435]→[22.3079:3165](∅→∅),[22.3165]→[22.124518:124564](∅→∅),[22.124518]→[22.124518:124564](∅→∅)
fn load_channel<T: MutTxnTExt>(txn: &T, name: &str) -> Result<ChannelRef<T>, Error> {if let Some(c) = txn.load_channel(name) {fn load_channel<T: MutTxnTExt>(txn: &T, name: &str) -> Result<ChannelRef<T>, anyhow::Error> {if let Some(c) = txn.load_channel(name)? { - replacement in pijul/src/commands/protocol.rs at line 42
Err(Error::NoSuchChannel {channel: name.to_string(),})bail!("No such channel: {:?}", name) - replacement in pijul/src/commands/protocol.rs at line 72
for (n, (_, m)) in txn.log(&channel.borrow(), pos) {for x in txn.log(&channel.borrow(), pos)? {let (n, (_, m)) = x?; - replacement in pijul/src/commands/protocol.rs at line 86
} else if let Some((n, (_, m))) = txn.reverse_log(&channel.borrow(), None).next() {} else if let Some(x) = txn.reverse_log(&channel.borrow(), None)?.next() {let (n, (_, m)) = x?; - replacement in pijul/src/commands/protocol.rs at line 103
return Err((Error::ProtocolError {line: buf.as_bytes().to_vec(),}).into());bail!("Ambiguous path") - replacement in pijul/src/commands/protocol.rs at line 105
let h = txn.get_external(p.change).unwrap();let h = txn.get_external(p.change)?.unwrap(); - replacement in pijul/src/commands/protocol.rs at line 108
paths.extend(libpijul::fs::iter_graph_descendants(&txn,&channel.borrow(),p,));paths.extend(libpijul::fs::iter_graph_descendants(&txn, &channel.borrow().graph, p)?.map(|x| x.unwrap()),); - replacement in pijul/src/commands/protocol.rs at line 113
return Err((Error::ProtocolError {line: buf.as_bytes().to_vec(),}).into());debug!("protocol line: {:?}", buf);bail!("Protocol error") - replacement in pijul/src/commands/protocol.rs at line 118
for (n, (h, m)) in txn.log(&channel.borrow(), from) {let h_int = txn.get_internal(h).unwrap();for x in txn.log(&channel.borrow(), from)? {let (n, (h, m)) = x?;let h_int = txn.get_internal(h)?.unwrap(); - replacement in pijul/src/commands/protocol.rs at line 123
x.change == h_int || txn.get_touched_files(*x, Some(h_int)).is_some()x.change == h_int|| txn.get_touched_files(*x, Some(h_int)).unwrap().is_some() - replacement in pijul/src/commands/protocol.rs at line 137
return Err((Error::ProtocolError {line: buf.as_bytes().to_vec(),}).into());debug!("protocol error: {:?}", buf);bail!("Protocol error") - replacement in pijul/src/commands/protocol.rs at line 168
return Err((Error::ProtocolError {line: buf.as_bytes().to_vec(),}).into());debug!("protocol error {:?}", buf);bail!("Protocol error"); - replacement in pijul/src/commands/protocol.rs at line 184
for d in libpijul::pristine::channel_dump::dump_channel(&txn, channel) {o.write_all(&d)?;for d in libpijul::pristine::channel_dump::dump_channel(&txn, channel)? {o.write_all(&d?)?; - replacement in pijul/src/commands/protocol.rs at line 201
if txn.current_state(&channel.borrow()) == state && extra.is_empty() {if txn.current_state(&channel.borrow())? == state && extra.is_empty() { - replacement in pijul/src/commands/mod.rs at line 80
.map(|rec| rec.globalize(txn)).map(|rec| rec.globalize(txn).unwrap()) - replacement in pijul/src/commands/mod.rs at line 89
);)?; - replacement in pijul/src/commands/mod.rs at line 91
libpijul::change::dependencies(txn, channel, pending_change.changes.iter());libpijul::change::dependencies(txn, &channel.borrow(), pending_change.changes.iter())?; - edit in pijul/src/commands/log.rs at line 4
use anyhow::bail; - edit in pijul/src/commands/log.rs at line 10
use crate::Error; - replacement in pijul/src/commands/log.rs at line 35
let channel = if let Some(channel) = txn.load_channel(channel_name) {let channel = if let Some(channel) = txn.load_channel(channel_name)? { - replacement in pijul/src/commands/log.rs at line 38
return Err((Error::NoSuchChannel {channel: channel_name.to_string(),}).into());bail!("No such channel: {:?}", channel_name) - replacement in pijul/src/commands/log.rs at line 44
for (_, (h, _)) in txn.reverse_log(&channel.borrow(), None) {for h in txn.reverse_log(&channel.borrow(), None)? {let h = (h?.1).0; - replacement in pijul/src/commands/log.rs at line 50
for (_, (h, mrk)) in txn.reverse_log(&channel.borrow(), None) {for h in txn.reverse_log(&channel.borrow(), None)? {let (h, mrk) = h?.1; - replacement in pijul/src/commands/fork.rs at line 35
if let Some(channel) = txn.load_channel(channel_name) {if let Some(channel) = txn.load_channel(channel_name)? { - replacement in pijul/src/commands/file_operations.rs at line 81
for (_, p) in txn.iter_working_copy() {for p in txn.iter_working_copy() {let p = p?.1; - replacement in pijul/src/commands/file_operations.rs at line 140
if !txn.is_tracked(&path_str) {if !txn.is_tracked(&path_str)? { - replacement in pijul/src/commands/file_operations.rs at line 184
if txn.is_tracked(&path_str) {if txn.is_tracked(&path_str)? { - replacement in pijul/src/commands/diff.rs at line 71
.map(|rec| rec.globalize(&txn)).map(|rec| rec.globalize(&txn).unwrap()) - replacement in pijul/src/commands/diff.rs at line 80
);)?; - replacement in pijul/src/commands/diff.rs at line 83
full_dependencies(&txn, &channel)full_dependencies(&txn, &channel)? - replacement in pijul/src/commands/diff.rs at line 85
dependencies(&txn, &channel, change.changes.iter())dependencies(&txn, &channel.borrow(), change.changes.iter())? - replacement in pijul/src/commands/debug.rs at line 4
use crate::Error;use anyhow::bail; - replacement in pijul/src/commands/debug.rs at line 26
let channel = if let Some(channel) = txn.load_channel(&channel_name) {let channel = if let Some(channel) = txn.load_channel(&channel_name)? { - replacement in pijul/src/commands/debug.rs at line 29
return Err((Error::NoSuchChannel {channel: channel_name.to_string(),}).into());bail!("No such channel: {:?}", channel_name) - replacement in pijul/src/commands/debug.rs at line 37
&channel.borrow(),&channel.borrow().graph, - replacement in pijul/src/commands/debug.rs at line 44
libpijul::pristine::debug(&txn, &channel, std::io::stdout())?;libpijul::pristine::debug(&txn, &channel.graph, std::io::stdout())?; - replacement in pijul/src/commands/debug.rs at line 46
libpijul::pristine::check_alive_debug(&repo.changes, &txn, &channel, 0)?;libpijul::pristine::check_alive_debug(&repo.changes, &txn, &channel.borrow(), 0)?; - edit in pijul/src/commands/credit.rs at line 4
use anyhow::bail; - replacement in pijul/src/commands/credit.rs at line 8
use libpijul::{ChangeId, Channel, EdgeFlags, TxnT, TxnTExt, Vertex};use libpijul::*; - edit in pijul/src/commands/credit.rs at line 12
use crate::Error; - replacement in pijul/src/commands/credit.rs at line 31
let channel = if let Some(channel) = txn.load_channel(&channel_name) {let channel = if let Some(channel) = txn.load_channel(&channel_name)? { - replacement in pijul/src/commands/credit.rs at line 34
return Err((Error::NoSuchChannel {channel: channel_name.to_string(),}).into());bail!("No such channel: {:?}", channel_name) - replacement in pijul/src/commands/credit.rs at line 64
pub struct Creditor<'a, W: std::io::Write, T: TxnTExt> {pub struct Creditor<'a, W: std::io::Write, T: ChannelTxnT> { - replacement in pijul/src/commands/credit.rs at line 73
impl<'a, W: std::io::Write, T: TxnTExt> Creditor<'a, W, T> {impl<'a, W: std::io::Write, T: ChannelTxnT> Creditor<'a, W, T> { - edit in pijul/src/commands/credit.rs at line 99
use libpijul::Base32; - replacement in pijul/src/commands/credit.rs at line 104
.filter(|e| !e.introduced_by.is_root()).unwrap() - edit in pijul/src/commands/credit.rs at line 106
let e = e.unwrap();if e.introduced_by.is_root() {continue;} - edit in pijul/src/commands/clone.rs at line 4
use crate::repository::*;use anyhow::bail; - edit in pijul/src/commands/clone.rs at line 10
use crate::repository::*; - replacement in pijul/src/commands/clone.rs at line 57
return Err((crate::Error::CouldNotInferRepositoryName { repo: self.remote }).into());bail!("Could not infer repository name from {:?}", self.remote) - edit in pijul/src/commands/channel.rs at line 6[11.20][124.147]
use anyhow::bail; - replacement in pijul/src/commands/channel.rs at line 42
for channel in txn.iter_channels("") {for channel in txn.iter_channels("")? {let channel = channel?; - replacement in pijul/src/commands/channel.rs at line 57
return Err(crate::Error::CannotDeleteCurrentChannel.into());bail!("Cannot delete current channel") - replacement in pijul/src/commands/channel.rs at line 83
return Err(crate::Error::NoCurrentChannel.into());bail!("No current channel") - replacement in pijul/src/commands/channel.rs at line 85
let mut channel = if let Some(channel) = txn.load_channel(from) {let mut channel = if let Some(channel) = txn.load_channel(from)? { - replacement in pijul/src/commands/channel.rs at line 88
return Err((crate::Error::ChannelNotFound {channel: from.to_string(),}).into());bail!("No such channel: {:?}", from) - replacement in pijul/src/commands/change.rs at line 30
let channel = if let Some(channel) = txn.load_channel(channel_name) {let channel = if let Some(channel) = txn.load_channel(channel_name)? { - replacement in pijul/src/commands/change.rs at line 36
if let Some((_, (h, _))) = txn.reverse_log(&channel, None).next() {hif let Some(h) = txn.reverse_log(&channel, None)?.next() {(h?.1).0 - replacement in pijul/src/commands/archive.rs at line 90
let mut channel = txn.load_channel(&channel_name).unwrap();let mut channel = txn.load_channel(&channel_name)?.unwrap(); - replacement in pijul/src/commands/archive.rs at line 100
let channel = txn.load_channel(&channel_name).unwrap();let channel = txn.load_channel(&channel_name)?.unwrap(); - replacement in pijul/src/commands/apply.rs at line 31
let mut channel = if let Some(channel) = txn.load_channel(&channel_name) {let mut channel = if let Some(channel) = txn.load_channel(&channel_name)? { - replacement in pijul/Cargo.toml at line 4
version = "1.0.0-alpha.26"version = "1.0.0-alpha.27" - replacement in pijul/Cargo.toml at line 49
thiserror = "1.0"libpijul = { version = "1.0.0-alpha.22", features = [ "tarball" ] }libpijul = { version = "1.0.0-alpha.23", features = [ "tarball" ] } - replacement in pijul/Cargo.toml at line 64
sanakirja = "0.14.2"sanakirja = "0.15.2" - replacement in libpijul/src/working_copy/filesystem.rs at line 107
) -> Result<(), Error<C::Error, T::Error>> {) -> Result<(), Error<C::Error, T::GraphError>> { - replacement in libpijul/src/working_copy/filesystem.rs at line 140
) -> Result<(), AddError<T::Error>> {) -> Result<(), AddError<T::GraphError>> { - replacement in libpijul/src/working_copy/filesystem.rs at line 149
let t = std::thread::spawn(move || -> Result<(), AddError<T::Error>> {let t = std::thread::spawn(move || -> Result<(), AddError<T::GraphError>> { - replacement in libpijul/src/working_copy/filesystem.rs at line 219
) -> Result<(), Error<C::Error, T::Error>> {) -> Result<(), Error<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 6
pub fn undo_file_addition<T: MutTxnT>(pub fn undo_file_addition<T: GraphMutTxnT + TreeMutTxnT<TreeError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/unrecord/working_copy.rs at line 12
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 18
if let Some(inode) = txn.get_revinodes(pos, None) {if let Some(inode) = txn.get_revinodes(pos, None)? { - replacement in libpijul/src/unrecord/working_copy.rs at line 25
pub fn undo_file_deletion<T: MutTxnT, P: ChangeStore>(pub fn undo_file_deletion<T: ChannelTxnT + TreeMutTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,P: ChangeStore,>( - replacement in libpijul/src/unrecord/working_copy.rs at line 34
) -> Result<(), super::UnrecordError<P::Error, T::Error>> {) -> Result<(), super::UnrecordError<P::Error, T::TreeError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 37
let source = find_block_end(txn, &channel, internal_pos(txn, &e.from, change_id)?)?;let source = find_block_end(txn, &channel.graph, internal_pos(txn, &e.from, change_id)?)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 46
fn restore<T: MutTxnT, P: ChangeStore>(fn restore<T: ChannelTxnT + TreeMutTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,P: ChangeStore,>( - replacement in libpijul/src/unrecord/working_copy.rs at line 55
) -> Result<(), super::UnrecordError<P::Error, T::Error>> {) -> Result<(), super::UnrecordError<P::Error, T::TreeError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 63
let source_parent = iter_adjacent(let mut source_parent = None;for e in iter_adjacent( - replacement in libpijul/src/unrecord/working_copy.rs at line 66
&channel,&channel.graph, - replacement in libpijul/src/unrecord/working_copy.rs at line 70[22.6880]→[22.6880:6890](∅→∅),[22.6890]→[22.1769:1843](∅→∅),[22.1843]→[22.6982:7015](∅→∅),[22.6982]→[22.6982:7015](∅→∅)
).find(|e| e.flag.contains(EdgeFlags::PARENT | EdgeFlags::FOLDER)).unwrap().dest;)? {let e = e?;if e.flag.contains(EdgeFlags::PARENT | EdgeFlags::FOLDER) {source_parent = Some(e.dest);break;}}let source_parent = source_parent.unwrap(); - replacement in libpijul/src/unrecord/working_copy.rs at line 81
} else if let Some(inode) = txn.get_revinodes(source_parent, None) {} else if let Some(inode) = txn.get_revinodes(source_parent, None)? { - replacement in libpijul/src/unrecord/working_copy.rs at line 92
fn restore_inode<T: MutTxnT, P: ChangeStore>(fn restore_inode<T: TreeMutTxnT + GraphTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,P: ChangeStore,>( - replacement in libpijul/src/unrecord/working_copy.rs at line 101
) -> Result<Inode, super::UnrecordError<P::Error, T::Error>> {) -> Result<Inode, super::UnrecordError<P::Error, T::TreeError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 104
.get_file_name(|h| txn.get_external(h), source, &mut name).get_file_name(|h| txn.get_external(h).unwrap(), source, &mut name) - replacement in libpijul/src/unrecord/working_copy.rs at line 111
if let Some(inode) = txn.get_revinodes(dest, None) {if let Some(inode) = txn.get_revinodes(dest, None)? { - replacement in libpijul/src/unrecord/working_copy.rs at line 114
let inode = crate::fs::create_new_inode(txn);put_tree_with_rev(txn, file_id.as_file_id(), inode).map_err(super::UnrecordError::Txn)?;put_inodes_with_rev(txn, inode, dest).map_err(super::UnrecordError::Txn)?;let inode = crate::fs::create_new_inode(txn)?;put_tree_with_rev(txn, file_id.as_file_id(), inode)?;put_inodes_with_rev(txn, inode, dest)?; - replacement in libpijul/src/unrecord/working_copy.rs at line 121
fn find_youngest_parent<T: TxnT>(fn find_youngest_parent<T: ChannelTxnT>( - replacement in libpijul/src/unrecord/working_copy.rs at line 125
) -> Result<Vertex<ChangeId>, BlockError> {) -> Result<Vertex<ChangeId>, BlockError<T::GraphError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 129
channel,&channel.graph, - replacement in libpijul/src/unrecord/working_copy.rs at line 133
).filter(|e| e.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)){)? {let e = e?;if !e.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT) {continue;} - replacement in libpijul/src/unrecord/working_copy.rs at line 141
.get_changeset(&channel.changes, e.introduced_by, None).get_changeset(&channel.changes, e.introduced_by, None)? - replacement in libpijul/src/unrecord/working_copy.rs at line 156
find_block_end(txn, channel, next.unwrap().1)find_block_end(txn, &channel.graph, next.unwrap().1) - replacement in libpijul/src/unrecord/working_copy.rs at line 159
pub fn undo_file_reinsertion<P: ChangeStore, T: MutTxnT>(pub fn undo_file_reinsertion<P: ChangeStore,T: GraphTxnT + TreeMutTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/unrecord/working_copy.rs at line 166
) -> Result<(), super::UnrecordError<P::Error, T::Error>> {) -> Result<(), super::UnrecordError<P::Error, T::TreeError>> { - replacement in libpijul/src/unrecord/working_copy.rs at line 171[22.7432]→[22.231227:231296](∅→∅),[22.231227]→[22.231227:231296](∅→∅),[22.231296]→[22.7578:7673](∅→∅)
if let Some(inode) = txn.get_revinodes(position, None) {del_inodes_with_rev(txn, inode, position).map_err(super::UnrecordError::Txn)?;if let Some(inode) = txn.get_revinodes(position, None)? {del_inodes_with_rev(txn, inode, position)?; - replacement in libpijul/src/unrecord/mod.rs at line 21
Block(#[from] crate::pristine::BlockError),Block(#[from] crate::pristine::BlockError<TxnError>), - replacement in libpijul/src/unrecord/mod.rs at line 23
InconsistentChange(#[from] crate::pristine::InconsistentChange),InconsistentChange(#[from] crate::pristine::InconsistentChange<TxnError>), - edit in libpijul/src/unrecord/mod.rs at line 34
}impl<T: std::error::Error + 'static, C: std::error::Error + 'static> std::convert::From<TxnErr<T>>for UnrecordError<C, T>{fn from(t: TxnErr<T>) -> Self {UnrecordError::Txn(t.0)} - replacement in libpijul/src/unrecord/mod.rs at line 49
) -> Result<bool, UnrecordError<P::Error, T::Error>> {) -> Result<bool, UnrecordError<P::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 53
let change_id = if let Some(h) = txn.get_internal(*hash) {let change_id = if let Some(h) = txn.get_internal(*hash)? { - replacement in libpijul/src/unrecord/mod.rs at line 58
let unused = unused_in_other_channels(txn, &channel, change_id);let unused = unused_in_other_channels(txn, &channel, change_id)?; - replacement in libpijul/src/unrecord/mod.rs at line 66
assert!(txn.get_revdep(change_id, None).is_none());while txn.del_dep(change_id, None).map_err(UnrecordError::Txn)? {}txn.del_external(change_id, None).map_err(UnrecordError::Txn)?;txn.del_internal(*hash, None).map_err(UnrecordError::Txn)?;assert!(txn.get_revdep(change_id, None)?.is_none());while txn.del_dep(change_id, None)? {}txn.del_external(change_id, None)?;txn.del_internal(*hash, None)?; - replacement in libpijul/src/unrecord/mod.rs at line 71
let dep = txn.get_internal(*dep).unwrap();txn.del_revdep(dep, Some(change_id)).map_err(UnrecordError::Txn)?;let dep = txn.get_internal(*dep)?.unwrap();txn.del_revdep(dep, Some(change_id))?; - replacement in libpijul/src/unrecord/mod.rs at line 80
fn del_channel_changes<T: MutTxnT, P: ChangeStore>(fn del_channel_changes<T: ChannelMutTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,P: ChangeStore,>( - replacement in libpijul/src/unrecord/mod.rs at line 87[22.232905]→[22.9214:9267](∅→∅),[22.9267]→[22.232938:233031](∅→∅),[22.232938]→[22.232938:233031](∅→∅)
) -> Result<(), UnrecordError<P::Error, T::Error>> {let timestamp = if let Some(ts) = txn.get_changeset(&channel.changes, change_id, None) {) -> Result<(), UnrecordError<P::Error, T::GraphError>> {let timestamp = if let Some(ts) = txn.get_changeset(&channel.changes, change_id, None)? { - replacement in libpijul/src/unrecord/mod.rs at line 94
for (p, d) in txn.iter_revdep(change_id) {for x in txn.iter_revdep(change_id)? {let (p, d) = x?; - replacement in libpijul/src/unrecord/mod.rs at line 101
if txn.get_changeset(&channel.changes, d, None).is_some() {if txn.get_changeset(&channel.changes, d, None)?.is_some() { - replacement in libpijul/src/unrecord/mod.rs at line 106
txn.del_changes(channel, change_id, timestamp).map_err(UnrecordError::Txn)?;txn.del_changes(channel, change_id, timestamp)?; - replacement in libpijul/src/unrecord/mod.rs at line 114
) -> bool {) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 116
for br in txn.iter_channels("") {for br in txn.iter_channels("")? {let br = br?; - replacement in libpijul/src/unrecord/mod.rs at line 119
if br.name != channel.name && txn.get_changeset(&br.changes, change_id, None).is_some() {return false;if br.name != channel.name && txn.get_changeset(&br.changes, change_id, None)?.is_some() {return Ok(false); - replacement in libpijul/src/unrecord/mod.rs at line 123
trueOk(true) - replacement in libpijul/src/unrecord/mod.rs at line 126
fn unapply<T: MutTxnT, C: ChangeStore>(fn unapply<T: ChannelMutTxnT + TreeMutTxnT<TreeError = <T as GraphTxnT>::GraphError>,C: ChangeStore,>( - replacement in libpijul/src/unrecord/mod.rs at line 135
) -> Result<(), UnrecordError<C::Error, T::Error>> {) -> Result<(), UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 140
Atom::EdgeMap(ref newedges) => {unapply_edges(changes, txn, channel, change_id, newedges, &mut ws)?}Atom::EdgeMap(ref newedges) => unapply_edges(changes,txn,&mut channel.graph,change_id,newedges,&mut ws,)?, - replacement in libpijul/src/unrecord/mod.rs at line 152
channel,&mut channel.graph, - replacement in libpijul/src/unrecord/mod.rs at line 154
).map_err(UnrecordError::Txn)?;)? - replacement in libpijul/src/unrecord/mod.rs at line 156
unapply_newvertex::<T, C>(txn, channel, change_id, &mut ws, newvertex)?unapply_newvertex::<T, C>(txn, &mut channel.graph, change_id, &mut ws, newvertex)? - replacement in libpijul/src/unrecord/mod.rs at line 160
repair_newvertex_contexts::<T, C>(txn, channel, &mut ws, change_id)?;repair_newvertex_contexts::<T, C>(txn, &mut channel.graph, &mut ws, change_id)?; - replacement in libpijul/src/unrecord/mod.rs at line 163
remove_zombies::<_, C>(txn, channel, &mut ws, change_id, n)?;remove_zombies::<_, C>(txn, &mut channel.graph, &mut ws, change_id, n)?; - replacement in libpijul/src/unrecord/mod.rs at line 167
channel,&mut channel.graph, - replacement in libpijul/src/unrecord/mod.rs at line 188
working_copy::undo_file_addition(txn, change_id, new_vertex).map_err(UnrecordError::Txn)?;working_copy::undo_file_addition(txn, change_id, new_vertex)?; - replacement in libpijul/src/unrecord/mod.rs at line 194
crate::apply::clean_obsolete_pseudo_edges(txn, channel, &mut ws.apply, change_id)?;crate::apply::repair_cyclic_paths(txn, channel, &mut ws.apply)?;crate::apply::clean_obsolete_pseudo_edges(txn, &mut channel.graph, &mut ws.apply, change_id)?;crate::apply::repair_cyclic_paths(txn, &mut channel.graph, &mut ws.apply)?; - replacement in libpijul/src/unrecord/mod.rs at line 211
fn unapply_newvertex<T: MutTxnT, C: ChangeStore>(fn unapply_newvertex<T: GraphMutTxnT, C: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 213
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 217
) -> Result<(), UnrecordError<C::Error, T::Error>> {) -> Result<(), UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 225
for e in iter_adj_all(txn, channel, vertex) {for e in iter_adj_all(txn, channel, vertex)? {let e = e?; - replacement in libpijul/src/unrecord/mod.rs at line 256
fn perform_del<C: ChangeStore, T: MutTxnT>(fn perform_del<C: ChangeStore, T: GraphMutTxnT>( - replacement in libpijul/src/unrecord/mod.rs at line 259
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 261
) -> Result<(), UnrecordError<C::Error, T::Error>> {) -> Result<(), UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 275
).map_err(UnrecordError::Txn)?;)?; - replacement in libpijul/src/unrecord/mod.rs at line 281
fn repair_newvertex_contexts<T: MutTxnT, C: ChangeStore>(fn repair_newvertex_contexts<T: GraphMutTxnT, C: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 283
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 286
) -> Result<(), UnrecordError<C::Error, T::Error>> {) -> Result<(), UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 289
if is_alive(txn, channel, up) {if is_alive(txn, channel, up)? { - replacement in libpijul/src/unrecord/mod.rs at line 309
) {)? {let parent = parent?; - replacement in libpijul/src/unrecord/mod.rs at line 312
if !is_alive(txn, channel, parent) {if !is_alive(txn, channel, parent)? { - replacement in libpijul/src/unrecord/mod.rs at line 332
fn unapply_edges<T: MutTxnT, P: ChangeStore>(fn unapply_edges<T: GraphMutTxnT, P: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 335
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 339
) -> Result<(), UnrecordError<P::Error, T::Error>> {) -> Result<(), UnrecordError<P::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 341
let ext = txn.get_external(change_id).unwrap();let ext = txn.get_external(change_id)?.unwrap(); - replacement in libpijul/src/unrecord/mod.rs at line 343
let intro = internal(txn, &edge.introduced_by, change_id).unwrap();let intro = internal(txn, &edge.introduced_by, change_id)?.unwrap(); - replacement in libpijul/src/unrecord/mod.rs at line 359
fn must_reintroduce<T: TxnT, C: ChangeStore>(fn must_reintroduce<T: GraphTxnT, C: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 361
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 368
) -> Result<bool, crate::apply::ApplyError<C::Error, T::Error>> {) -> Result<bool, UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 373
change: txn.get_external(b.change),change: txn.get_external(b.change)?, - replacement in libpijul/src/unrecord/mod.rs at line 377
for e in iter_adj_all(txn, channel, a).filter(|e| {!e.flag.contains(EdgeFlags::PARENT)&& e.dest == b.start_pos()&& !e.introduced_by.is_root()&& e.introduced_by != current_id}) {for e in iter_adj_all(txn, channel, a)? {let e = e?;if e.flag.contains(EdgeFlags::PARENT)|| e.dest != b.start_pos()|| e.introduced_by.is_root()|| e.introduced_by == current_id{continue;} - edit in libpijul/src/unrecord/mod.rs at line 396
.map_err(crate::apply::ApplyError::Changestore) - replacement in libpijul/src/unrecord/mod.rs at line 398
fn edge_is_in_channel<T: TxnT, C: ChangeStore>(fn edge_is_in_channel<T: GraphTxnT, C: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 404
) -> Result<bool, C::Error> {) -> Result<bool, UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 411
for next in changes.change_deletes_position(|c| txn.get_external(c), s, pos)? {for next in changes.change_deletes_position(|c| txn.get_external(c).unwrap(), s, pos).map_err(UnrecordError::Changestore)?{ - replacement in libpijul/src/unrecord/mod.rs at line 417
} else if let Some(i) = txn.get_internal(next) {} else if let Some(i) = txn.get_internal(next)? { - replacement in libpijul/src/unrecord/mod.rs at line 425
fn remove_zombies<T: MutTxnT, C: ChangeStore>(fn remove_zombies<T: GraphMutTxnT, C: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 427
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 431
) -> Result<(), UnrecordError<C::Error, T::Error>> {) -> Result<(), UnrecordError<C::Error, T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 441
del_graph_with_rev(txn, channel, e.flag, u, v, e.introduced_by).map_err(UnrecordError::Txn)?;del_graph_with_rev(txn, channel, e.flag, u, v, e.introduced_by)?; - replacement in libpijul/src/unrecord/mod.rs at line 444
del_graph_with_rev(txn, channel, e.flag, v, w, e.introduced_by).map_err(UnrecordError::Txn)?;del_graph_with_rev(txn, channel, e.flag, v, w, e.introduced_by)?; - replacement in libpijul/src/unrecord/mod.rs at line 451
fn collect_zombies<T: TxnT>(txn: &mut T,channel: &mut Channel<T>,fn collect_zombies<T: GraphTxnT>(txn: &T,channel: &T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 457
) -> Result<(), BlockError> {) -> Result<(), BlockError<T::GraphError>> { - replacement in libpijul/src/unrecord/mod.rs at line 464
for e in iter_adj_all(txn, channel, v) {for e in iter_adj_all(txn, channel, v)? {let e = e?; - replacement in libpijul/src/unrecord/mod.rs at line 485
fn repair_edges_context<T: MutTxnT, P: ChangeStore>(fn repair_edges_context<T: GraphMutTxnT, P: ChangeStore>( - replacement in libpijul/src/unrecord/mod.rs at line 488
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/unrecord/mod.rs at line 492[22.247082]→[22.10961:11014](∅→∅),[22.11014]→[22.247115:247175](∅→∅),[22.247115]→[22.247115:247175](∅→∅)
) -> Result<(), UnrecordError<P::Error, T::Error>> {let change_hash = txn.get_external(change_id).unwrap();) -> Result<(), UnrecordError<P::Error, T::GraphError>> {let change_hash = txn.get_external(change_id)?.unwrap(); - replacement in libpijul/src/unrecord/mod.rs at line 496
let intro = internal(txn, &e.introduced_by, change_id).unwrap();let intro = internal(txn, &e.introduced_by, change_id)?.unwrap(); - replacement in libpijul/src/unrecord/mod.rs at line 511
if !is_alive(txn, channel, to) {if !is_alive(txn, channel, to)? { - replacement in libpijul/src/tests/unrecord.rs at line 128
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/unrecord.rs at line 137
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/unrecord.rs at line 314
let (alive_, reachable_) = check_alive(&txn, &channel);let (alive_, reachable_) = check_alive(&txn, &channel.borrow().graph); - replacement in libpijul/src/tests/unrecord.rs at line 399
let (alive_, reachable_) = check_alive(&txn, &channel);let (alive_, reachable_) = check_alive(&txn, &channel.borrow().graph); - replacement in libpijul/src/tests/unrecord.rs at line 449
for p in txn.log(&channel.borrow(), 0) {for p in txn.log(&channel.borrow(), 0).unwrap() { - replacement in libpijul/src/tests/unrecord.rs at line 457
for p in txn.log(&channel.borrow(), 0) {for p in txn.log(&channel.borrow(), 0).unwrap() { - replacement in libpijul/src/tests/unrecord.rs at line 938
let mut inodes = txn.iter_inodes();let mut inodes = txn.iter_inodes().unwrap(); - replacement in libpijul/src/tests/performance.rs at line 53
let m = txn.cursor_graph(&channel.graph, None).count();let m = txn.cursor_graph(&channel.graph, None).unwrap().count(); - replacement in libpijul/src/tests/performance.rs at line 136
let m = txn.cursor_graph(&channel.graph, None).count();let m = txn.cursor_graph(&channel.graph, None).unwrap().count(); - replacement in libpijul/src/tests/performance.rs at line 145
let m = txn.cursor_graph(&channel.graph, None).count();let m = txn.cursor_graph(&channel.graph, None).unwrap().count(); - replacement in libpijul/src/tests/partial.rs at line 35
let key = txn.get_inodes(inode, None).unwrap();let changes: Vec<_> = txn.log_for_path(&channel.borrow(), key, 0).collect();let key = txn.get_inodes(inode, None).unwrap().unwrap();let changes: Vec<_> = txn.log_for_path(&channel.borrow(), key, 0).unwrap().map(|x| x.unwrap()).collect(); - replacement in libpijul/src/tests/mod.rs at line 32
state.record(txn, Algorithm::default(), channel, repo, store, prefix)?;state.record(txn,Algorithm::default(),&mut channel.borrow_mut(),repo,store,prefix,)?; - replacement in libpijul/src/tests/mod.rs at line 45
.map(|rec| rec.globalize(txn)).map(|rec| rec.globalize(txn).unwrap()) - replacement in libpijul/src/tests/mod.rs at line 62
);).unwrap(); - replacement in libpijul/src/tests/file_conflicts.rs at line 569
for x in txn_alice.iter_tree(OwnedPathId {parent_inode: Inode::ROOT,basename: crate::small_string::SmallString::new(),},None,) {for x in txn_alice.iter_tree(OwnedPathId {parent_inode: Inode::ROOT,basename: crate::small_string::SmallString::new(),},None,).unwrap(){ - replacement in libpijul/src/tests/file_conflicts.rs at line 1499
let (alive, reachable) = check_alive(&txn_alice, &channel_alice);let (alive, reachable) = check_alive(&txn_alice, &channel_alice.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 1124
&mut channel_alice,&mut channel_alice.borrow_mut(), - replacement in libpijul/src/tests/conflict.rs at line 2335
let (alive_, reachable_) = check_alive(&txn, &channel_bob);let (alive_, reachable_) = check_alive(&txn, &channel_bob.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 2352
let (alive, reachable) = check_alive(&txn, &channel_bob);let (alive, reachable) = check_alive(&txn, &channel_bob.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 2369
let (alive, reachable) = check_alive(&txn, &channel_charlie);let (alive, reachable) = check_alive(&txn, &channel_charlie.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 2386
let (alive, reachable) = check_alive(&txn, &channel_charlie);let (alive, reachable) = check_alive(&txn, &channel_charlie.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 2465
let (alive, reachable) = check_alive(&txn_alice, &channel_alice);let (alive, reachable) = check_alive(&txn_alice, &channel_alice.borrow().graph); - replacement in libpijul/src/tests/conflict.rs at line 2550
for (inode, vertex) in txn.iter_inodes() {for x in txn.iter_inodes().unwrap() {let (inode, vertex) = x.unwrap(); - replacement in libpijul/src/tests/conflict.rs at line 2555
if let Some(next) = txn.get_revtree(inode_, None) {if let Some(next) = txn.get_revtree(inode_, None).unwrap() { - replacement in libpijul/src/tests/conflict.rs at line 2562
if !is_alive(txn, &channel, vertex.inode_vertex()) {if !is_alive(txn, &channel.graph, vertex.inode_vertex()).unwrap() { - replacement in libpijul/src/tests/conflict.rs at line 2565
&channel,&channel.graph, - replacement in libpijul/src/tests/conflict.rs at line 2569
) {).unwrap(){ - replacement in libpijul/src/tests/clone.rs at line 37
for channel in txn.iter_channels("") {for (_, (i, _)) in txn.log(&channel.borrow(), 0) {for channel in txn.iter_channels("").unwrap() {let channel = channel.unwrap();for x in txn.log(&channel.borrow(), 0).unwrap() {let (_, (i, _)) = x.unwrap(); - replacement in libpijul/src/tests/change.rs at line 48
&mut channel,&mut channel.borrow_mut(), - replacement in libpijul/src/tests/change.rs at line 58
.map(|rec| rec.globalize(&txn)).map(|rec| rec.globalize(&txn).unwrap()) - replacement in libpijul/src/tests/change.rs at line 73
);).unwrap(); - replacement in libpijul/src/tests/change.rs at line 96
state.record(txn, Algorithm::default(), channel, repo, store, prefix)?;state.record(txn,Algorithm::default(),&mut channel.borrow_mut(),repo,store,prefix,)?; - replacement in libpijul/src/tests/change.rs at line 109
.map(|rec| rec.globalize(txn)).map(|rec| rec.globalize(txn).unwrap()) - replacement in libpijul/src/tests/change.rs at line 126
);).unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 29
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 33
let channel_ = txn.load_channel("main").unwrap();let channel_ = txn.load_channel("main").unwrap().unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 35
let mut it = crate::fs::iter_graph_children(&txn, &changes, &channel, Position::ROOT);let (key, meta, file) = it.next().unwrap();let mut it =crate::fs::iter_graph_children(&txn, &changes, &channel.graph, Position::ROOT).unwrap();let (key, meta, file) = it.next().unwrap().unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 41
let mut it = crate::fs::iter_graph_children(&txn, &changes, &channel, key);let (file_key, _, _) = it.next().unwrap();crate::fs::iter_paths(&txn, &channel_, file_key, |path| {let mut it = crate::fs::iter_graph_children(&txn, &changes, &channel.graph, key).unwrap();let (file_key, _, _) = it.next().unwrap().unwrap();crate::fs::iter_paths(&txn, &channel_.borrow().graph, file_key, |path| { - replacement in libpijul/src/tests/add_file.rs at line 50
});}).unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 54
let mut it = crate::fs::iter_basenames(&txn, &changes, &channel, key);let (key, _, name) = it.next().unwrap();let mut it = crate::fs::iter_basenames(&txn, &changes, &channel.graph, key).unwrap();let (key, _, name) = it.next().unwrap().unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 59
assert!(txn.is_tracked("dir/file"));assert!(txn.is_tracked("dir/file").unwrap()); - replacement in libpijul/src/tests/add_file.rs at line 76
assert!(txn.is_tracked("dir"));assert!(txn.is_tracked("dir/file"));assert!(txn.is_tracked("dir").unwrap());assert!(txn.is_tracked("dir/file").unwrap()); - edit in libpijul/src/tests/add_file.rs at line 80
.unwrap() - edit in libpijul/src/tests/add_file.rs at line 82
.unwrap() - replacement in libpijul/src/tests/add_file.rs at line 85
assert!(txn.is_directory(inode));assert!(txn.is_directory(inode).unwrap()); - replacement in libpijul/src/tests/add_file.rs at line 88
let mut it = crate::fs::working_copy_children(&txn, inode);let (name, _) = it.next().unwrap();let mut it = crate::fs::working_copy_children(&txn, inode).unwrap();let (name, _) = it.next().unwrap().unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 114
.map(|(_, file)| file).map(|f| f.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 122
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 131
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 139
assert!(crate::fs::iter_working_copy(&txn, Inode::ROOT).all(|(_, file)| file != "dir2"));assert!(crate::fs::iter_working_copy(&txn, Inode::ROOT).all(|f| f.unwrap().1 != "dir2")); - replacement in libpijul/src/tests/add_file.rs at line 147
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 172
.map(|(_, file)| file).map(|f| f.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 186
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 673
&mut channel,&mut channel.borrow_mut(), - replacement in libpijul/src/tests/add_file.rs at line 682
&mut channel,&mut channel.borrow_mut(), - replacement in libpijul/src/tests/add_file.rs at line 692
.map(|rec| rec.globalize(&txn_alice)).map(|rec| rec.globalize(&txn_alice).unwrap()) - replacement in libpijul/src/tests/add_file.rs at line 706
);).unwrap(); - replacement in libpijul/src/tests/add_file.rs at line 720
let (alive, reachable) = check_alive(&txn_alice, &channel);let (alive, reachable) = check_alive(&txn_alice, &channel.borrow().graph); - replacement in libpijul/src/tests/add_file.rs at line 774
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/tests/add_file.rs at line 795
.map(|(_, name)| name).map(|n| n.unwrap().1) - replacement in libpijul/src/record.rs at line 28
Diff(#[from] diff::DiffError<C>),Diff(#[from] diff::DiffError<C, T>), - edit in libpijul/src/record.rs at line 35
impl<C: std::error::Error + 'static,W: std::error::Error + 'static,T: std::error::Error + 'static,> std::convert::From<TxnErr<T>> for RecordError<C, W, T>{fn from(e: TxnErr<T>) -> Self {RecordError::Txn(e.0)}} - replacement in libpijul/src/record.rs at line 150
fn get_inodes<T: TxnT>(txn: &T, channel: &Channel<T>, inode: Inode) -> Option<Position<ChangeId>> {if let Some(vertex) = txn.get_inodes(inode, None) {fn get_inodes<T: ChannelTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>>(txn: &T,channel: &Channel<T>,inode: Inode,) -> Result<Option<Position<ChangeId>>, TxnErr<T::GraphError>> {if let Some(vertex) = txn.get_inodes(inode, None)? { - replacement in libpijul/src/record.rs at line 157
.get_changeset(&channel.changes, vertex.change, None).get_changeset(&channel.changes, vertex.change, None)? - replacement in libpijul/src/record.rs at line 160
Some(vertex)Ok(Some(vertex)) - replacement in libpijul/src/record.rs at line 162
NoneOk(None) - replacement in libpijul/src/record.rs at line 165
NoneOk(None) - replacement in libpijul/src/record.rs at line 170
pub(crate) fn record<T: MutTxnT, W: WorkingCopy, C: ChangeStore>(pub(crate) fn record<T, W: WorkingCopy, C: ChangeStore>( - replacement in libpijul/src/record.rs at line 174
channel: &mut ChannelRef<T>,channel: &mut Channel<T>, - replacement in libpijul/src/record.rs at line 178
) -> Result<(), RecordError<C::Error, W::Error, T::Error>> {) -> Result<(), RecordError<C::Error, W::Error, T::GraphError>>whereT: ChannelTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError> + GraphMutTxnT,<W as WorkingCopy>::Error: 'static,{ - edit in libpijul/src/record.rs at line 184
let channel = channel.borrow(); - replacement in libpijul/src/record.rs at line 196
&channel,&channel.graph, - replacement in libpijul/src/record.rs at line 200
);)?; - replacement in libpijul/src/record.rs at line 202
} else if let Some(vertex) = get_inodes(txn, &channel, item.inode) {} else if let Some(vertex) = get_inodes(txn, &channel, item.inode)? { - replacement in libpijul/src/record.rs at line 333
fn record_existing_file<T: MutTxnT, W: WorkingCopy, C: ChangeStore>(fn record_existing_file<T: ChannelTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,W: WorkingCopy,C: ChangeStore,>( - replacement in libpijul/src/record.rs at line 346
) -> Result<(), RecordError<C::Error, W::Error, T::Error>> {) -> Result<(), RecordError<C::Error, W::Error, T::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{ - replacement in libpijul/src/record.rs at line 359[22.500045]→[22.33988:34069](∅→∅),[22.34069]→[22.500138:500208](∅→∅),[22.500138]→[22.500138:500208](∅→∅)
for name_ in iter_adjacent(txn, &channel, vertex.inode_vertex(), f0, f1).filter(|e| e.flag.contains(EdgeFlags::PARENT)){for name_ in iter_adjacent(txn, &channel.graph, vertex.inode_vertex(), f0, f1)? {let name_ = name_?;if !name_.flag.contains(EdgeFlags::PARENT) {continue;} - replacement in libpijul/src/record.rs at line 370
let name_dest = find_block_end(txn, &channel, name_.dest).unwrap();let name_dest = find_block_end(txn, &channel.graph, name_.dest).unwrap(); - replacement in libpijul/src/record.rs at line 373
.get_contents(|p| txn.get_external(p), name_dest, &mut name).get_contents(|p| txn.get_external(p).unwrap(), name_dest, &mut name) - replacement in libpijul/src/record.rs at line 379
if let Some(v_papa) = iter_adjacent(txn, &channel, name_dest, f0, f1).next() {if let Some(v_papa) = iter_adjacent(txn, &channel.graph, name_dest, f0, f1)?.next() {let v_papa = v_papa?; - replacement in libpijul/src/record.rs at line 404
self.record_moved_file(self.record_moved_file::<_, _, W>( - replacement in libpijul/src/record.rs at line 407
&channel,&channel.graph, - replacement in libpijul/src/record.rs at line 412
).map_err(RecordError::Changestore)?)? - replacement in libpijul/src/record.rs at line 418
let mut ret = retrieve(txn, &channel, vertex);let mut ret = retrieve(txn, &channel.graph, vertex)?; - replacement in libpijul/src/record.rs at line 443
self.record_deleted_file(txn, &channel, working_copy, &item.full_path, vertex)self.record_deleted_file(txn, &channel.graph, working_copy, &item.full_path, vertex)? - replacement in libpijul/src/record.rs at line 448
fn delete_obsolete_children<T: MutTxnT, W: WorkingCopy>(fn delete_obsolete_children<T: GraphTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,W: WorkingCopy,>( - replacement in libpijul/src/record.rs at line 454
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 458
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/record.rs at line 462
for child in iter_adjacent(txn, &channel, v.inode_vertex(), f0, f1) {let child = find_block(txn, &channel, child.dest).unwrap();for grandchild in iter_adjacent(txn, &channel, child, f0, f1) {for child in iter_adjacent(txn, channel, v.inode_vertex(), f0, f1)? {let child = child?;let child = find_block(txn, channel, child.dest).unwrap();for grandchild in iter_adjacent(txn, channel, child, f0, f1)? {let grandchild = grandchild?; - replacement in libpijul/src/record.rs at line 468
let needs_deletion = if let Some(inode) = txn.get_revinodes(grandchild.dest, None) {debug!("inode = {:?} {:?}", inode, txn.get_revtree(inode, None));if let Some(path) = crate::fs::inode_filename(txn, inode) {working_copy.file_metadata(&path).is_err()let needs_deletion =if let Some(inode) = txn.get_revinodes(grandchild.dest, None)? {debug!("inode = {:?} {:?}", inode, txn.get_revtree(inode, None));if let Some(path) = crate::fs::inode_filename(txn, inode)? {working_copy.file_metadata(&path).is_err()} else {true} - replacement in libpijul/src/record.rs at line 478
}} else {true};}; - replacement in libpijul/src/record.rs at line 487
))? - edit in libpijul/src/record.rs at line 491
Ok(()) - replacement in libpijul/src/record.rs at line 494
fn push_children<'a, T: MutTxnT, W: WorkingCopy, C: ChangeStore>(fn push_children<'a,T: ChannelTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,W: WorkingCopy,C: ChangeStore,>( - replacement in libpijul/src/record.rs at line 508
) -> Result<(), RecordError<C::Error, W::Error, T::Error>> {) -> Result<(), RecordError<C::Error, W::Error, T::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{ - replacement in libpijul/src/record.rs at line 519
for (fileid_, child_inode) in txn.iter_tree(fileid.clone(), None) {for x in txn.iter_tree(fileid.clone(), None)? {let (fileid_, child_inode) = x?; - replacement in libpijul/src/record.rs at line 549
} else if let Some(vertex) = get_inodes(txn, &channel, child_inode) {self.record_deleted_file(txn, &channel, working_copy, &full_path, vertex)} else if let Some(vertex) = get_inodes(txn, &channel, child_inode)? {self.record_deleted_file(txn, &channel.graph, working_copy, &full_path, vertex)? - replacement in libpijul/src/record.rs at line 561
fn modified_since_last_commit<T: TxnT, W: WorkingCopy>(fn modified_since_last_commit<T: ChannelTxnT, W: WorkingCopy>( - replacement in libpijul/src/record.rs at line 585
fn record_moved_file<T: TxnT, C: ChangeStore>(fn record_moved_file<T: GraphTxnT, C: ChangeStore, W: WorkingCopy>( - replacement in libpijul/src/record.rs at line 589
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 594
) -> Result<(), C::Error> {) -> Result<(), RecordError<C::Error, W::Error, T::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{ - replacement in libpijul/src/record.rs at line 605
let mut moved = collect_moved_edges(let mut moved = collect_moved_edges::<_, _, W>( - replacement in libpijul/src/record.rs at line 672
fn collect_moved_edges<T: TxnT, C: ChangeStore>(fn collect_moved_edges<T: GraphTxnT, C: ChangeStore, W: WorkingCopy>( - replacement in libpijul/src/record.rs at line 675
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 681
) -> Result<MovedEdges, C::Error> {) -> Result<MovedEdges, RecordError<C::Error, W::Error, T::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{ - replacement in libpijul/src/record.rs at line 701[22.34642]→[22.34642:34720](∅→∅),[22.34720]→[22.511660:511666](∅→∅),[22.511660]→[22.511660:511666](∅→∅)
).filter(|e| e.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)){)? {let parent = parent?;if !parent.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT) {continue;} - replacement in libpijul/src/record.rs at line 730[22.512793]→[22.34721:34800](∅→∅),[22.34800]→[22.512871:512960](∅→∅),[22.512871]→[22.512871:512960](∅→∅)
let parent_dest = find_block_end(txn, &channel, parent.dest).unwrap();changes.get_contents(|p| txn.get_external(p), parent_dest, &mut previous_name)?;let parent_dest = find_block_end(txn, channel, parent.dest).unwrap();changes.get_contents(|p| txn.get_external(p).unwrap(),parent_dest,&mut previous_name,).map_err(RecordError::Changestore)?; - replacement in libpijul/src/record.rs at line 752
).filter(|e| {e.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)&& !e.flag.contains(EdgeFlags::PSEUDO)}) {)? {let grandparent = grandparent?;if !grandparent.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)|| grandparent.flag.contains(EdgeFlags::PSEUDO){continue;} - replacement in libpijul/src/record.rs at line 762
let grandparent_dest = find_block_end(txn, &channel, grandparent.dest).unwrap();let grandparent_dest = find_block_end(txn, channel, grandparent.dest).unwrap(); - replacement in libpijul/src/record.rs at line 864
fn record_deleted_file<T: TxnT, W: WorkingCopy>(fn record_deleted_file<T: GraphTxnT + TreeTxnT<TreeError = <T as GraphTxnT>::GraphError>,W: WorkingCopy,>( - replacement in libpijul/src/record.rs at line 870
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 874
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/record.rs at line 880
if let Some(path) = tree_path(txn, vertex.start_pos()) {if let Some(path) = tree_path(txn, vertex.start_pos())? { - replacement in libpijul/src/record.rs at line 889
self.delete_file_edge(txn, channel, vertex, inode)self.delete_file_edge(txn, channel, vertex, inode)? - replacement in libpijul/src/record.rs at line 896
if let Some(inode) = txn.get_revinodes(vertex.start_pos(), None) {if let Some(inode) = txn.get_revinodes(vertex.start_pos(), None)? { - replacement in libpijul/src/record.rs at line 907
self.delete_inode_vertex(txn, channel, vertex, vertex.start_pos(), full_path)self.delete_inode_vertex(txn, channel, vertex, vertex.start_pos(), full_path)? - replacement in libpijul/src/record.rs at line 917
) {)? {let edge = edge?; - replacement in libpijul/src/record.rs at line 921
find_block(txn, &channel, edge.dest).expect("delete_recursively, descendants");find_block(txn, channel, edge.dest).expect("delete_recursively, descendants"); - edit in libpijul/src/record.rs at line 936
Ok(()) - replacement in libpijul/src/record.rs at line 939
fn delete_inode_vertex<T: TxnT>(fn delete_inode_vertex<T: GraphTxnT>( - replacement in libpijul/src/record.rs at line 942
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 946
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/record.rs at line 954
).filter(|e| e.flag.contains(EdgeFlags::PARENT)){assert!(parent.flag.contains(EdgeFlags::PARENT));)? {let parent = parent?;if !parent.flag.contains(EdgeFlags::PARENT) {continue;} - replacement in libpijul/src/record.rs at line 960
let parent_dest = find_block_end(txn, &channel, parent.dest).unwrap();let parent_dest = find_block_end(txn, channel, parent.dest).unwrap(); - replacement in libpijul/src/record.rs at line 967[22.521694]→[22.521694:521708](∅→∅),[22.521708]→[22.36065:36164](∅→∅),[22.36164]→[22.522371:522385](∅→∅),[22.522371]→[22.522371:522385](∅→∅)
).filter(|e| e.flag.contains(EdgeFlags::PARENT) && !e.flag.contains(EdgeFlags::PSEUDO)){)? {let grandparent = grandparent?;if !grandparent.flag.contains(EdgeFlags::PARENT)|| grandparent.flag.contains(EdgeFlags::PSEUDO){continue;} - edit in libpijul/src/record.rs at line 1005
Ok(()) - replacement in libpijul/src/record.rs at line 1008
fn delete_file_edge<T: TxnT>(fn delete_file_edge<T: GraphTxnT>( - replacement in libpijul/src/record.rs at line 1011
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/record.rs at line 1014
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/record.rs at line 1032[22.36386]→[22.36386:36469](∅→∅),[22.36469]→[22.524640:524658](∅→∅),[22.524640]→[22.524640:524658](∅→∅)
).filter(|e| !e.flag.contains(EdgeFlags::PSEUDO)){)? {let parent = parent?;if parent.flag.contains(EdgeFlags::PSEUDO) {continue;} - edit in libpijul/src/record.rs at line 1049
Ok(()) - edit in libpijul/src/pristine/sanakirja.rs at line 28
}impl std::convert::From<::sanakirja::CRCError> for SanakirjaError {fn from(_: ::sanakirja::CRCError) -> Self {SanakirjaError::PristineCorrupt}}impl std::convert::From<::sanakirja::CRCError> for TxnErr<SanakirjaError> {fn from(_: ::sanakirja::CRCError) -> Self {TxnErr(SanakirjaError::PristineCorrupt)}}impl std::convert::From<::sanakirja::Error> for TxnErr<SanakirjaError> {fn from(e: ::sanakirja::Error) -> Self {TxnErr(e.into())}}impl std::convert::From<TxnErr<::sanakirja::Error>> for TxnErr<SanakirjaError> {fn from(e: TxnErr<::sanakirja::Error>) -> Self {TxnErr(e.0.into())} - replacement in libpijul/src/pristine/sanakirja.rs at line 278
for (a, (g, c, r, s, _, _)) in self.txn.iter(&self.channels, None) {for x in self.txn.iter(&self.channels, None).unwrap() {let (a, (g, c, r, s, _, _)) = x.unwrap(); - replacement in libpijul/src/pristine/sanakirja.rs at line 292
for (a, (u, v, w)) in self.txn.iter(&self.remotes, None) {for x in self.txn.iter(&self.remotes, None).unwrap() {let (a, (u, v, w)) = x.unwrap(); - replacement in libpijul/src/pristine/sanakirja.rs at line 309
for (a, (g, c, r, s, _, _)) in self.txn.iter(&self.channels, None) {for x in self.txn.iter(&self.channels, None).unwrap() {let (a, (g, c, r, s, _, _)) = x.unwrap(); - replacement in libpijul/src/pristine/sanakirja.rs at line 356
impl<T: ::sanakirja::Transaction> TxnT for GenericTxn<T> {type Error = SanakirjaError;impl<T: ::sanakirja::Transaction> GraphTxnT for GenericTxn<T> { - edit in libpijul/src/pristine/sanakirja.rs at line 358
type GraphError = SanakirjaError; - replacement in libpijul/src/pristine/sanakirja.rs at line 361
sanakirja_get!(graph, Vertex<ChangeId>, Edge);fn get_external(&self, p: ChangeId) -> Option<Hash> {sanakirja_get!(graph, Vertex<ChangeId>, Edge, GraphError);fn get_external(&self, p: ChangeId) -> Result<Option<Hash>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 364
Some(Hash::None)Ok(Some(Hash::None))} else if let Ok(x) = self.txn.get(&self.external, p, None) {Ok(x) - replacement in libpijul/src/pristine/sanakirja.rs at line 368
self.txn.get(&self.external, p, None)Err(TxnErr(SanakirjaError::PristineCorrupt)) - replacement in libpijul/src/pristine/sanakirja.rs at line 372
fn get_internal(&self, p: Hash) -> Option<ChangeId> {fn get_internal(&self, p: Hash) -> Result<Option<ChangeId>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 374
Some(ChangeId::ROOT)Ok(Some(ChangeId::ROOT))} else if let Ok(x) = self.txn.get(&self.internal, p, None) {Ok(x) - replacement in libpijul/src/pristine/sanakirja.rs at line 378
self.txn.get(&self.internal, p, None)Err(TxnErr(SanakirjaError::PristineCorrupt)) - edit in libpijul/src/pristine/sanakirja.rs at line 381
} - replacement in libpijul/src/pristine/sanakirja.rs at line 383[22.542895]→[22.13700:13794](∅→∅),[22.13794]→[22.542980:543067](∅→∅),[22.542980]→[22.542980:543067](∅→∅),[22.543067]→[22.13795:13865](∅→∅),[22.13865]→[22.543147:543716](∅→∅),[22.543147]→[22.543147:543716](∅→∅),[22.543716]→[22.13866:13948](∅→∅),[22.13948]→[22.543884:544005](∅→∅),[22.543884]→[22.543884:544005](∅→∅),[22.544005]→[22.13949:14014](∅→∅),[22.14014]→[22.544126:544136](∅→∅),[22.544126]→[22.544126:544136](∅→∅)
fn hash_from_prefix(&self, s: &str) -> Result<(Hash, ChangeId), super::HashPrefixError> {let h = if let Some(h) = Hash::from_prefix(s) {h} else {return Err(super::HashPrefixError::Parse(s.to_string()));};let mut result = None;debug!("h = {:?}", h);for (e, i) in self.txn.iter(&self.internal, Some((h, None))) {debug!("{:?} {:?}", e, i);if e < h {continue;} else {let b32 = e.to_base32();debug!("{:?}", b32);let (b32, _) = b32.split_at(s.len().min(b32.len()));if b32 != s {break;} else if result.is_none() {result = Some((e, i))} else {return Err(super::HashPrefixError::Ambiguous(s.to_string()));}}}if let Some(result) = result {Ok(result)} else {Err(super::HashPrefixError::NotFound(s.to_string()))}impl<T: ::sanakirja::Transaction> ChannelTxnT for GenericTxn<T> {type Changeset = Db<ChangeId, u64>;type Revchangeset = Db<u64, (ChangeId, Merkle)>;type Channelstates = Db<Merkle, u64>;sanakirja_get!(changeset, ChangeId, u64, GraphError);sanakirja_get!(revchangeset, u64, (ChangeId, Merkle), GraphError);sanakirja_cursor!(changeset, ChangeId, u64);sanakirja_cursor_ref!(revchangeset, u64, (ChangeId, Merkle));sanakirja_rev_cursor!(revchangeset, u64, (ChangeId, Merkle));}impl<T: ::sanakirja::Transaction> DepsTxnT for GenericTxn<T> {type DepsError = SanakirjaError;type Dep = Db<ChangeId, ChangeId>;type Revdep = Db<ChangeId, ChangeId>;sanakirja_table_get!(dep, ChangeId, ChangeId, DepsError);sanakirja_table_get!(revdep, ChangeId, ChangeId, DepsError);sanakirja_cursor_ref!(dep, ChangeId, ChangeId);fn iter_dep_ref<RT: std::ops::Deref<Target = Self> + Clone>(txn: RT,p: ChangeId,) -> Result<super::Cursor<Self, RT, Self::DepCursor, ChangeId, ChangeId>, TxnErr<Self::DepsError>>{Self::cursor_dep_ref(txn.clone(), &txn.dep, Some((p, None))) - edit in libpijul/src/pristine/sanakirja.rs at line 411
sanakirja_table_get!(touched_files, Position<ChangeId>, ChangeId, DepsError);sanakirja_table_get!(rev_touched_files, ChangeId, Position<ChangeId>, DepsError);type Touched_files = Db<Position<ChangeId>, ChangeId>; - replacement in libpijul/src/pristine/sanakirja.rs at line 417[22.544143]→[22.544143:544252](∅→∅),[22.544252]→[22.14015:14063](∅→∅),[22.14063]→[22.544291:544416](∅→∅),[22.544291]→[22.544291:544416](∅→∅),[22.544416]→[22.14064:14134](∅→∅),[22.14134]→[22.544496:545049](∅→∅),[22.544496]→[22.544496:545049](∅→∅),[22.545049]→[22.14135:14217](∅→∅),[22.14217]→[22.545217:545338](∅→∅),[22.545217]→[22.545217:545338](∅→∅),[22.545338]→[22.14218:14283](∅→∅),[22.14283]→[22.545459:545469](∅→∅),[22.545459]→[22.545459:545469](∅→∅)
fn hash_from_prefix_remote<'txn>(&'txn self,remote: &RemoteRef<Self>,s: &str,) -> Result<Hash, super::HashPrefixError> {let remote = remote.borrow();let h = if let Some(h) = Hash::from_prefix(s) {h} else {return Err(super::HashPrefixError::Parse(s.to_string()));};let mut result = None;debug!("h = {:?}", h);for (e, _) in self.txn.iter(&remote.rev, Some((h, None))) {debug!("{:?}", e);if e < h {continue;} else {let b32 = e.to_base32();debug!("{:?}", b32);let (b32, _) = b32.split_at(s.len().min(b32.len()));if b32 != s {break;} else if result.is_none() {result = Some(e)} else {return Err(super::HashPrefixError::Ambiguous(s.to_string()));}}}if let Some(result) = result {Ok(result)} else {Err(super::HashPrefixError::NotFound(s.to_string()))}type Rev_touched_files = Db<ChangeId, Position<ChangeId>>;sanakirja_iter!(touched_files, Position<ChangeId>, ChangeId);sanakirja_iter!(rev_touched_files, ChangeId, Position<ChangeId>);fn iter_revdep(&self,k: ChangeId,) -> Result<super::Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>,TxnErr<Self::DepsError>,> {self.cursor_dep(&self.revdep, Some((k, None)))}fn iter_dep(&self,k: ChangeId,) -> Result<super::Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>,TxnErr<Self::DepsError>,> {self.cursor_dep(&self.dep, Some((k, None)))}fn iter_touched(&self,k: Position<ChangeId>,) -> Result<super::Cursor<Self, &Self, Self::Touched_filesCursor, Position<ChangeId>, ChangeId>,TxnErr<Self::DepsError>,> {self.cursor_touched_files(&self.touched_files, Some((k, None))) - edit in libpijul/src/pristine/sanakirja.rs at line 450
fn iter_rev_touched(&self,k: ChangeId,) -> Result<super::Cursor<Self, &Self, Self::Rev_touched_filesCursor, ChangeId, Position<ChangeId>>,TxnErr<Self::DepsError>,> {self.cursor_rev_touched_files(&self.rev_touched_files, Some((k, None)))}}impl<T: ::sanakirja::Transaction> TreeTxnT for GenericTxn<T> {type TreeError = SanakirjaError; - replacement in libpijul/src/pristine/sanakirja.rs at line 465
sanakirja_table_get!(inodes, Inode, Position<ChangeId>);sanakirja_table_get!(revinodes, Position<ChangeId>, Inode);sanakirja_table_get!(inodes, Inode, Position<ChangeId>, TreeError);sanakirja_table_get!(revinodes, Position<ChangeId>, Inode, TreeError); - replacement in libpijul/src/pristine/sanakirja.rs at line 472
sanakirja_table_get!(tree, PathId, Inode, (UnsafePathId::from_fileid(key), value),);sanakirja_table_get!(tree,PathId,Inode,TreeError,(UnsafePathId::from_fileid(key), value),); - edit in libpijul/src/pristine/sanakirja.rs at line 513
TreeError, - edit in libpijul/src/pristine/sanakirja.rs at line 524[22.547109]→[22.547109:547110](∅→∅),[22.547129]→[22.547129:547169](∅→∅),[22.547169]→[22.36943:36944](∅→∅),[22.36944]→[22.547188:547241](∅→∅),[22.547188]→[22.547188:547241](∅→∅)
type Changeset = Db<ChangeId, u64>;type Revchangeset = Db<u64, (ChangeId, Merkle)>; - edit in libpijul/src/pristine/sanakirja.rs at line 525[22.36946]→[22.547260:547589](∅→∅),[22.547260]→[22.547260:547589](∅→∅),[22.547608]→[22.547608:547648](∅→∅),[22.547667]→[22.547667:548014](∅→∅),[22.548033]→[22.548033:548208](∅→∅),[22.548208]→[22.2066:2135](∅→∅),[22.2135]→[22.548302:548309](∅→∅),[22.548302]→[22.548302:548309](∅→∅),[22.548328]→[22.548328:548387](∅→∅),[22.548387]→[22.36947:36948](∅→∅),[22.36948]→[22.548406:548606](∅→∅),[22.548406]→[22.548406:548606](∅→∅)
type Channelstates = Db<Merkle, u64>;sanakirja_get!(changeset, ChangeId, u64);sanakirja_get!(revchangeset, u64, (ChangeId, Merkle));sanakirja_cursor!(changeset, ChangeId, u64);sanakirja_cursor_ref!(revchangeset, u64, (ChangeId, Merkle));sanakirja_rev_cursor!(revchangeset, u64, (ChangeId, Merkle));type Dep = Db<ChangeId, ChangeId>;type Revdep = Db<ChangeId, ChangeId>;sanakirja_table_get!(dep, ChangeId, ChangeId);sanakirja_table_get!(revdep, ChangeId, ChangeId);sanakirja_cursor_ref!(dep, ChangeId, ChangeId);sanakirja_table_get!(touched_files, Position<ChangeId>, ChangeId);sanakirja_table_get!(rev_touched_files, ChangeId, Position<ChangeId>);fn iter_dep_ref<RT: std::ops::Deref<Target = Self> + Clone>(txn: RT,p: ChangeId,) -> super::Cursor<Self, RT, Self::DepCursor, ChangeId, ChangeId> {Self::cursor_dep_ref(txn.clone(), &txn.dep, Some((p, None)))}type Touched_files = Db<Position<ChangeId>, ChangeId>;type Rev_touched_files = Db<ChangeId, Position<ChangeId>>;sanakirja_iter!(touched_files, Position<ChangeId>, ChangeId);sanakirja_iter!(rev_touched_files, ChangeId, Position<ChangeId>); - edit in libpijul/src/pristine/sanakirja.rs at line 540
fn iter_inodes(&self,) -> Result<super::Cursor<Self, &Self, Self::InodesCursor, Inode, Position<ChangeId>>,TxnErr<Self::TreeError>,> {self.cursor_inodes(&self.inodes, None)}#[cfg(debug_assertions)]fn iter_revinodes(&self,) -> Result<super::Cursor<Self, &Self, Self::RevinodesCursor, Position<ChangeId>, Inode>,TxnErr<SanakirjaError>,> {self.cursor_revinodes(&self.revinodes, None)}fn iter_partials<'txn>(&'txn self,k: &str,) -> Result<super::Cursor<Self, &'txn Self, Self::PartialsCursor, SmallString, Position<ChangeId>>,TxnErr<SanakirjaError>,> {let k0 = SmallString::from_str(k);self.cursor_partials(&self.partials, Some((k0, None)))}}impl<T: ::sanakirja::Transaction> TxnT for GenericTxn<T> {fn hash_from_prefix(&self,s: &str,) -> Result<(Hash, ChangeId), super::HashPrefixError<Self::GraphError>> {let h = if let Some(h) = Hash::from_prefix(s) {h} else {return Err(super::HashPrefixError::Parse(s.to_string()));};let mut result = None;debug!("h = {:?}", h);for x in self.txn.iter(&self.internal, Some((h, None))).map_err(|e| super::HashPrefixError::Txn(e.into()))?{let (e, i) = x.map_err(|e| super::HashPrefixError::Txn(e.into()))?;debug!("{:?} {:?}", e, i);if e < h {continue;} else {let b32 = e.to_base32();debug!("{:?}", b32);let (b32, _) = b32.split_at(s.len().min(b32.len()));if b32 != s {break;} else if result.is_none() {result = Some((e, i))} else {return Err(super::HashPrefixError::Ambiguous(s.to_string()));}}}if let Some(result) = result {Ok(result)} else {Err(super::HashPrefixError::NotFound(s.to_string()))}} - edit in libpijul/src/pristine/sanakirja.rs at line 612
fn hash_from_prefix_remote<'txn>(&'txn self,remote: &RemoteRef<Self>,s: &str,) -> Result<Hash, super::HashPrefixError<Self::GraphError>> {let remote = remote.borrow();let h = if let Some(h) = Hash::from_prefix(s) {h} else {return Err(super::HashPrefixError::Parse(s.to_string()));};let mut result = None;debug!("h = {:?}", h);for x in self.txn.iter(&remote.rev, Some((h, None))).map_err(|e| super::HashPrefixError::Txn(e.into()))?{let (e, _) = x.map_err(|e| super::HashPrefixError::Txn(e.into()))?;debug!("{:?}", e);if e < h {continue;} else {let b32 = e.to_base32();debug!("{:?}", b32);let (b32, _) = b32.split_at(s.len().min(b32.len()));if b32 != s {break;} else if result.is_none() {result = Some(e)} else {return Err(super::HashPrefixError::Ambiguous(s.to_string()));}}}if let Some(result) = result {Ok(result)} else {Err(super::HashPrefixError::NotFound(s.to_string()))}} - replacement in libpijul/src/pristine/sanakirja.rs at line 655
fn load_channel(&self, name: &str) -> Option<ChannelRef<Self>> {fn load_channel(&self,name: &str,) -> Result<Option<ChannelRef<Self>>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 667
))? - replacement in libpijul/src/pristine/sanakirja.rs at line 682
return None;return Ok(None); - replacement in libpijul/src/pristine/sanakirja.rs at line 687
self.open_channels.borrow().get(&name).cloned()Ok(self.open_channels.borrow().get(&name).cloned()) - replacement in libpijul/src/pristine/sanakirja.rs at line 690
fn load_remote(&self, name: &str) -> Option<RemoteRef<Self>> {fn load_remote(&self, name: &str) -> Result<Option<RemoteRef<Self>>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 698
) {)? { - replacement in libpijul/src/pristine/sanakirja.rs at line 709
return None;return Ok(None); - replacement in libpijul/src/pristine/sanakirja.rs at line 714
self.open_remotes.borrow().get(&name).cloned()Ok(self.open_remotes.borrow().get(&name).cloned()) - replacement in libpijul/src/pristine/sanakirja.rs at line 733
fn iter_channels<'txn>(&'txn self, start: &str) -> ChannelIterator<'txn, Self> {fn iter_channels<'txn>(&'txn self,start: &str,) -> Result<ChannelIterator<'txn, Self>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 739
ChannelIterator {cursor: self.txn.set_cursors(&self.channels, Some((name, None))).0,Ok(ChannelIterator {cursor: self.txn.set_cursors(&self.channels, Some((name, None)))?.0, - replacement in libpijul/src/pristine/sanakirja.rs at line 742
}}) - replacement in libpijul/src/pristine/sanakirja.rs at line 760
fn iter_remotes<'txn>(&'txn self, start: &str) -> RemotesIterator<'txn, Self> {fn iter_remotes<'txn>(&'txn self,start: &str,) -> Result<RemotesIterator<'txn, Self>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 766
RemotesIterator {cursor: self.txn.set_cursors(&self.remotes, Some((name, None))).0,Ok(RemotesIterator {cursor: self.txn.set_cursors(&self.remotes, Some((name, None)))?.0, - replacement in libpijul/src/pristine/sanakirja.rs at line 769
}}) - edit in libpijul/src/pristine/sanakirja.rs at line 772[22.36950]→[22.2136:2256](∅→∅),[22.2256]→[22.553148:553195](∅→∅),[22.553148]→[22.553148:553195](∅→∅),[22.553195]→[22.553195:553202](∅→∅),[22.553202]→[22.709:738](∅→∅),[22.738]→[8.445:571](∅→∅),[8.571]→[22.880:940](∅→∅),[22.880]→[22.880:940](∅→∅),[22.940]→[22.115:115](∅→∅),[22.115]→[22.2257:2292](∅→∅),[22.553202]→[22.2257:2292](∅→∅),[22.2292]→[22.553267:553288](∅→∅),[22.553267]→[22.553267:553288](∅→∅),[22.553288]→[22.2293:2368](∅→∅),[22.2368]→[22.553368:553430](∅→∅),[22.553368]→[22.553368:553430](∅→∅),[22.553430]→[22.2369:2401](∅→∅),[22.2401]→[22.553492:553513](∅→∅),[22.553492]→[22.553492:553513](∅→∅),[22.553513]→[22.2402:2477](∅→∅),[22.2477]→[22.553593:553652](∅→∅),[22.553593]→[22.553593:553652](∅→∅),[22.553652]→[22.2478:2514](∅→∅),[22.2514]→[22.553718:553749](∅→∅),[22.553718]→[22.553718:553749](∅→∅),[22.553749]→[22.2515:2610](∅→∅),[22.2610]→[22.553853:553932](∅→∅),[22.553853]→[22.553853:553932](∅→∅),[22.553932]→[22.2611:2651](∅→∅),[22.2651]→[22.554002:554023](∅→∅),[22.554002]→[22.554002:554023](∅→∅),[22.554023]→[22.2652:2749](∅→∅),[22.2749]→[22.554125:554218](∅→∅),[22.554125]→[22.554125:554218](∅→∅),[22.554237]→[22.554237:554517](∅→∅)
fn iter_inodes(&self,) -> super::Cursor<Self, &Self, Self::InodesCursor, Inode, Position<ChangeId>> {self.cursor_inodes(&self.inodes, None)}#[cfg(debug_assertions)]fn iter_revinodes(&self,) -> super::Cursor<Self, &Self, Self::RevinodesCursor, Position<ChangeId>, Inode> {self.cursor_revinodes(&self.revinodes, None)}fn iter_revdep(&self,k: ChangeId,) -> super::Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId> {self.cursor_dep(&self.revdep, Some((k, None)))}fn iter_dep(&self,k: ChangeId,) -> super::Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId> {self.cursor_dep(&self.dep, Some((k, None)))}fn iter_touched(&self,k: Position<ChangeId>,) -> super::Cursor<Self, &Self, Self::Touched_filesCursor, Position<ChangeId>, ChangeId> {self.cursor_touched_files(&self.touched_files, Some((k, None)))}fn iter_rev_touched(&self,k: ChangeId,) -> super::Cursor<Self, &Self, Self::Rev_touched_filesCursor, ChangeId, Position<ChangeId>>{self.cursor_rev_touched_files(&self.rev_touched_files, Some((k, None)))}fn iter_partials<'txn>(&'txn self,k: &str,) -> super::Cursor<Self, &'txn Self, Self::PartialsCursor, SmallString, Position<ChangeId>>{let k0 = SmallString::from_str(k);self.cursor_partials(&self.partials, Some((k0, None)))} - replacement in libpijul/src/pristine/sanakirja.rs at line 782
) -> super::Cursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)> {) -> Result<super::Cursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>,TxnErr<Self::GraphError>,> { - replacement in libpijul/src/pristine/sanakirja.rs at line 793
) -> super::RevCursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)> {) -> Result<super::RevCursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>,TxnErr<Self::GraphError>,> { - replacement in libpijul/src/pristine/sanakirja.rs at line 800
fn get_remote(&mut self, name: &str) -> Option<RemoteRef<Self>> {fn get_remote(&mut self,name: &str,) -> Result<Option<RemoteRef<Self>>, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 811
) {)? { - replacement in libpijul/src/pristine/sanakirja.rs at line 822
return None;return Ok(None); - replacement in libpijul/src/pristine/sanakirja.rs at line 827
self.open_remotes.borrow().get(&name).cloned()Ok(self.open_remotes.borrow().get(&name).cloned()) - replacement in libpijul/src/pristine/sanakirja.rs at line 830
fn last_remote(&self, remote: &Self::Remote) -> Option<(u64, (Hash, Merkle))> {self.txn.rev_iter(remote, None).next()fn last_remote(&self,remote: &Self::Remote,) -> Result<Option<(u64, (Hash, Merkle))>, TxnErr<Self::GraphError>> {Ok(self.txn.rev_iter(remote, None)?.next().transpose()?) - replacement in libpijul/src/pristine/sanakirja.rs at line 837
fn get_remote_state(&self, remote: &Self::Remote, n: u64) -> Option<(u64, (Hash, Merkle))> {self.txn.iter(remote, Some((n, None))).find(|(k, _)| *k >= n)fn get_remote_state(&self,remote: &Self::Remote,n: u64,) -> Result<Option<(u64, (Hash, Merkle))>, TxnErr<Self::GraphError>> {for x in self.txn.iter(remote, Some((n, None)))? {let (k, m) = x?;if k >= n {return Ok(Some((k, m)));}}Ok(None) - replacement in libpijul/src/pristine/sanakirja.rs at line 851
fn remote_has_change(&self, remote: &RemoteRef<Self>, hash: Hash) -> bool {self.txn.get(&remote.db.borrow().rev, hash, None).is_some()fn remote_has_change(&self,remote: &RemoteRef<Self>,hash: Hash,) -> Result<bool, TxnErr<Self::GraphError>> {Ok(self.txn.get(&remote.db.borrow().rev, hash, None)?.is_some()) - replacement in libpijul/src/pristine/sanakirja.rs at line 858
fn remote_has_state(&self, remote: &RemoteRef<Self>, m: Merkle) -> bool {self.txn.get(&remote.db.borrow().states, m, None).is_some()fn remote_has_state(&self,remote: &RemoteRef<Self>,m: Merkle,) -> Result<bool, TxnErr<Self::GraphError>> {Ok(self.txn.get(&remote.db.borrow().states, m, None)?.is_some()) - replacement in libpijul/src/pristine/sanakirja.rs at line 865[22.556904]→[22.556904:557051](∅→∅),[22.557051]→[22.557051:557057](∅→∅),[22.557057]→[22.557057:557915](∅→∅),[22.557915]→[22.557915:557921](∅→∅),[22.557921]→[22.557921:558202](∅→∅)
fn channel_has_state(&self, channel: &ChannelRef<Self>, m: Merkle) -> bool {self.txn.get(&channel.borrow().states, m, None).is_some()}}/*impl<T> MutTxn<T> {pub fn with_remote_mut<F: FnMut(&mut Db<u64, (Hash, Merkle)>)>(&mut self,name: &str,mut f: F,) -> Result<bool, anyhow::Error> {let name = SmallString::from_str(name);let name = UnsafeSmallStr::from_small_str(name.as_small_str());if let Some((mut db0, db1, db2)) = self.txn.get(&self.remotes, name, None) {f(&mut db0);let mut db: ::sanakirja::Db<UnsafeSmallStr, (u64, u64, u64)> =unsafe { std::mem::transmute(self.remotes) };self.txn.del(&mut self.rng, &mut db, name, None)?;self.remotes = unsafe { std::mem::transmute(db) };self.txn.put(&mut self.rng, &mut self.remotes, name, (db0, db1, db2))?;Ok(true)} else {Ok(false)}}pub fn del_remote(&mut self, name: &str) -> Result<(), anyhow::Error> {let name = SmallString::from_str(name);let name = UnsafeSmallStr::from_small_str(name.as_small_str());self.txn.del(&mut self.rng, &mut self.remotes, name, None)?;Ok(())fn channel_has_state(&self,channel: &ChannelRef<Self>,m: Merkle,) -> Result<bool, TxnErr<Self::GraphError>> {Ok(self.txn.get(&channel.borrow().states, m, None)?.is_some()) - edit in libpijul/src/pristine/sanakirja.rs at line 873
*/impl MutTxnT for MutTxn<()> {sanakirja_put_del!(internal, Hash, ChangeId);sanakirja_put_del!(external, ChangeId, Hash);sanakirja_put_del!(inodes, Inode, Position<ChangeId>);sanakirja_put_del!(revinodes, Position<ChangeId>, Inode);sanakirja_put_del!(tree, PathId, Inode, UnsafePathId::from_fileid(k), v);sanakirja_put_del!(revtree, Inode, PathId, k, UnsafePathId::from_fileid(v),);sanakirja_put_del!(dep, ChangeId, ChangeId);sanakirja_put_del!(revdep, ChangeId, ChangeId);sanakirja_put_del!(touched_files, Position<ChangeId>, ChangeId);sanakirja_put_del!(rev_touched_files, ChangeId, Position<ChangeId>); - edit in libpijul/src/pristine/sanakirja.rs at line 874
impl GraphMutTxnT for MutTxn<()> { - replacement in libpijul/src/pristine/sanakirja.rs at line 880
) -> Result<bool, Self::Error> {) -> Result<bool, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 889
) -> Result<bool, Self::Error> {) -> Result<bool, TxnErr<Self::GraphError>> { - edit in libpijul/src/pristine/sanakirja.rs at line 893
sanakirja_put_del!(internal, Hash, ChangeId, GraphError);sanakirja_put_del!(external, ChangeId, Hash, GraphError);} - replacement in libpijul/src/pristine/sanakirja.rs at line 897[22.559395]→[22.14360:14454](∅→∅),[22.14454]→[22.559510:559731](∅→∅),[22.559510]→[22.559510:559731](∅→∅),[22.559731]→[22.36953:36954](∅→∅),[22.36954]→[22.559750:559846](∅→∅),[22.559750]→[22.559750:559846](∅→∅),[22.559846]→[22.14455:14492](∅→∅),[22.14492]→[22.559885:560107](∅→∅),[22.559885]→[22.559885:560107](∅→∅)
fn put_partials(&mut self, k: &str, e: Position<ChangeId>) -> Result<bool, Self::Error> {let k = SmallString::from_str(k);Ok(self.txn.put(&mut self.rng,&mut self.partials,UnsafeSmallStr::from_small_str(k.as_small_str()),e,)?)}fn del_partials(&mut self,k: &str,e: Option<Position<ChangeId>>,) -> Result<bool, Self::Error> {let k = SmallString::from_str(k);Ok(self.txn.del(&mut self.rng,&mut self.partials,UnsafeSmallStr::from_small_str(k.as_small_str()),e,)?)}impl ChannelMutTxnT for MutTxn<()> { - replacement in libpijul/src/pristine/sanakirja.rs at line 904[22.560268]→[22.14493:14540](∅→∅),[22.14540]→[22.560317:560386](∅→∅),[22.560317]→[22.560317:560386](∅→∅)
) -> Result<Option<Merkle>, Self::Error> {if self.get_changeset(&channel.changes, p, None).is_none() {) -> Result<Option<Merkle>, TxnErr<Self::GraphError>> {if self.get_changeset(&channel.changes, p, None)?.is_none() { - replacement in libpijul/src/pristine/sanakirja.rs at line 908
let m = if let Some((_, (_, m))) = self.txn.rev_iter(&channel.revchanges, None).next() {mlet m = if let Some(x) = self.txn.rev_iter(&channel.revchanges, None)?.next() {(x?.1).1 - replacement in libpijul/src/pristine/sanakirja.rs at line 915
.get_revchangeset(&channel.revchanges, t, None).get_revchangeset(&channel.revchanges, t, None)? - replacement in libpijul/src/pristine/sanakirja.rs at line 932
) -> Result<bool, Self::Error> {) -> Result<bool, TxnErr<Self::GraphError>> { - replacement in libpijul/src/pristine/sanakirja.rs at line 934
for (t_, (p, _)) in self.txn.iter(&channel.revchanges, Some((t, None))) {for x in self.txn.iter(&channel.revchanges, Some((t, None)))? {let (t_, (p, _)) = x?; - replacement in libpijul/src/pristine/sanakirja.rs at line 941
for (t_, (_, m_)) in self.txn.rev_iter(&channel.revchanges, Some((t, None))) {for x in self.txn.rev_iter(&channel.revchanges, Some((t, None)))? {let (t_, (_, m_)) = x?; - replacement in libpijul/src/pristine/sanakirja.rs at line 953
m = m.next(&self.get_external(*p).unwrap());m = m.next(&self.get_external(*p)?.unwrap()); - edit in libpijul/src/pristine/sanakirja.rs at line 961
}}impl DepsMutTxnT for MutTxn<()> {sanakirja_put_del!(dep, ChangeId, ChangeId, DepsError);sanakirja_put_del!(revdep, ChangeId, ChangeId, DepsError);sanakirja_put_del!(touched_files, Position<ChangeId>, ChangeId, DepsError);sanakirja_put_del!(rev_touched_files, ChangeId, Position<ChangeId>, DepsError);}impl TreeMutTxnT for MutTxn<()> {sanakirja_put_del!(inodes, Inode, Position<ChangeId>, TreeError);sanakirja_put_del!(revinodes, Position<ChangeId>, Inode, TreeError);sanakirja_put_del!(tree,PathId,Inode,TreeError,UnsafePathId::from_fileid(k),v);sanakirja_put_del!(revtree,Inode,PathId,TreeError,k,UnsafePathId::from_fileid(v));fn put_partials(&mut self,k: &str,e: Position<ChangeId>,) -> Result<bool, TxnErr<Self::TreeError>> {let k = SmallString::from_str(k);Ok(self.txn.put(&mut self.rng,&mut self.partials,UnsafeSmallStr::from_small_str(k.as_small_str()),e,)?) - edit in libpijul/src/pristine/sanakirja.rs at line 1006
fn del_partials(&mut self,k: &str,e: Option<Position<ChangeId>>,) -> Result<bool, TxnErr<Self::TreeError>> {let k = SmallString::from_str(k);Ok(self.txn.del(&mut self.rng,&mut self.partials,UnsafeSmallStr::from_small_str(k.as_small_str()),e,)?)}}impl MutTxnT for MutTxn<()> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1027
) -> Result<bool, Self::Error> {) -> Result<bool, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1034
fn del_remote(&mut self, remote: &mut RemoteRef<Self>, k: u64) -> Result<bool, Self::Error> {fn del_remote(&mut self,remote: &mut RemoteRef<Self>,k: u64,) -> Result<bool, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1040
if let Some((h, m)) = self.txn.get(&remote.remote, k, None) {if let Some((h, m)) = self.txn.get(&remote.remote, k, None)? { - replacement in libpijul/src/pristine/sanakirja.rs at line 1049
fn open_or_create_channel(&mut self, name: &str) -> Result<ChannelRef<Self>, Self::Error> {fn open_or_create_channel(&mut self, name: &str) -> Result<ChannelRef<Self>, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1065
) {)? { - replacement in libpijul/src/pristine/sanakirja.rs at line 1106
) -> Result<ChannelRef<Self>, ForkError<Self::Error>> {) -> Result<ChannelRef<Self>, ForkError<Self::GraphError>> { - edit in libpijul/src/pristine/sanakirja.rs at line 1116
.map_err(|e| ForkError::Txn(e.into()))? - replacement in libpijul/src/pristine/sanakirja.rs at line 1153
) -> Result<(), ForkError<Self::Error>> {) -> Result<(), ForkError<Self::GraphError>> { - edit in libpijul/src/pristine/sanakirja.rs at line 1162
.map_err(|e| ForkError::Txn(e.into()))? - replacement in libpijul/src/pristine/sanakirja.rs at line 1193
fn drop_channel(&mut self, name: &str) -> Result<bool, Self::Error> {fn drop_channel(&mut self, name: &str) -> Result<bool, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1207
fn open_or_create_remote(&mut self, name: &str) -> Result<RemoteRef<Self>, Self::Error> {fn open_or_create_remote(&mut self, name: &str) -> Result<RemoteRef<Self>, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1216
) {)? { - replacement in libpijul/src/pristine/sanakirja.rs at line 1247
fn drop_remote(&mut self, remote: RemoteRef<Self>) -> Result<bool, Self::Error> {fn drop_remote(&mut self, remote: RemoteRef<Self>) -> Result<bool, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1260
fn drop_named_remote(&mut self, name: &str) -> Result<bool, Self::Error> {fn drop_named_remote(&mut self, name: &str) -> Result<bool, Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1273
fn commit(mut self) -> Result<(), Self::Error> {fn commit(mut self) -> Result<(), Self::GraphError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1312
pub fn load_const_channel(&self, name: &str) -> Option<Channel<Self>> {pub fn load_const_channel(&self, name: &str) -> Result<Option<Channel<Self>>, SanakirjaError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1318
) {Some(Channel {)? {Ok(Some(Channel { - replacement in libpijul/src/pristine/sanakirja.rs at line 1327
})})) - replacement in libpijul/src/pristine/sanakirja.rs at line 1329
NoneOk(None) - replacement in libpijul/src/pristine/sanakirja.rs at line 1386
fn put_remotes(&mut self, remote: RemoteRef<Self>) -> Result<(), ::sanakirja::Error> {fn put_remotes(&mut self, remote: RemoteRef<Self>) -> Result<(), SanakirjaError> { - replacement in libpijul/src/pristine/sanakirja.rs at line 1410
fn commit_remote(&mut self, remote: RemoteRef<Self>) -> Result<(), ::sanakirja::Error> {fn commit_remote(&mut self, remote: RemoteRef<Self>) -> Result<(), SanakirjaError> { - replacement in libpijul/src/pristine/mod.rs at line 40
pub struct Channel<T: TxnT> {pub struct Channel<T: ChannelTxnT> { - replacement in libpijul/src/pristine/mod.rs at line 50
pub struct ChannelRef<T: TxnT> {pub struct ChannelRef<T: ChannelTxnT> { - replacement in libpijul/src/pristine/mod.rs at line 54
impl<T: TxnT> Clone for ChannelRef<T> {impl<T: ChannelTxnT> Clone for ChannelRef<T> { - replacement in libpijul/src/pristine/mod.rs at line 60
impl<T: TxnT> Channel<T> {impl<T: ChannelTxnT> Channel<T> { - replacement in libpijul/src/pristine/mod.rs at line 66
impl<T: MutTxnT> Channel<T> {impl<T: ChannelTxnT> Channel<T> { - replacement in libpijul/src/pristine/mod.rs at line 81
impl<T: TxnT> ChannelRef<T> {impl<T: ChannelTxnT> ChannelRef<T> { - replacement in libpijul/src/pristine/mod.rs at line 120
pub enum HashPrefixError {pub enum HashPrefixError<T: std::error::Error + 'static> { - edit in libpijul/src/pristine/mod.rs at line 127
#[error(transparent)]Txn(T), - replacement in libpijul/src/pristine/mod.rs at line 139[22.17347]→[22.589140:589205](∅→∅),[22.589140]→[22.589140:589205](∅→∅),[22.589205]→[22.17348:17407](∅→∅)
/// The trait of immutable transactions.pub trait TxnT: Sized {type Error: std::error::Error + Send + Sync + 'static;#[derive(Debug, Error)]#[error(transparent)]pub struct TxnErr<E: std::error::Error + 'static>(pub E);pub trait GraphTxnT: Sized {type GraphError: std::error::Error + Send + Sync + 'static; - replacement in libpijul/src/pristine/mod.rs at line 146
cursor_ref!(graph, Vertex<ChangeId>, Edge);get!(graph, Vertex<ChangeId>, Edge);cursor_ref!(graph, Vertex<ChangeId>, Edge, GraphError);get!(graph, Vertex<ChangeId>, Edge, GraphError);/// Returns the external hash of an internal change identifier, if/// the change is known.fn get_external(&self, p: ChangeId) -> Result<Option<Hash>, TxnErr<Self::GraphError>>;/// Returns the internal change identifier of change with external/// hash `hash`, if the change is known.fn get_internal(&self, p: Hash) -> Result<Option<ChangeId>, TxnErr<Self::GraphError>>;} - edit in libpijul/src/pristine/mod.rs at line 157
pub trait ChannelTxnT: GraphTxnT { - replacement in libpijul/src/pristine/mod.rs at line 159
get!(changeset, ChangeId, u64);cursor!(changeset, ChangeId, u64);get!(changeset, ChangeId, u64, GraphError);cursor!(changeset, ChangeId, u64, GraphError); - replacement in libpijul/src/pristine/mod.rs at line 163
get!(revchangeset, u64, (ChangeId, Merkle));cursor_ref!(revchangeset, u64, (ChangeId, Merkle));rev_cursor!(revchangeset, u64, (ChangeId, Merkle));get!(revchangeset, u64, (ChangeId, Merkle), GraphError);cursor_ref!(revchangeset, u64, (ChangeId, Merkle), GraphError);rev_cursor!(revchangeset, u64, (ChangeId, Merkle), GraphError); - edit in libpijul/src/pristine/mod.rs at line 168
}pub trait DepsTxnT: Sized {type DepsError: std::error::Error + Send + Sync + 'static;table!(revdep);table!(dep);table_get!(dep, ChangeId, ChangeId, DepsError);cursor_ref!(dep, ChangeId, ChangeId, DepsError);table_get!(revdep, ChangeId, ChangeId, DepsError);fn iter_revdep(&self,p: ChangeId,) -> Result<Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>, TxnErr<Self::DepsError>>;fn iter_dep(&self,p: ChangeId,) -> Result<Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>, TxnErr<Self::DepsError>>;fn iter_dep_ref<RT: std::ops::Deref<Target = Self> + Clone>(txn: RT,p: ChangeId,) -> Result<Cursor<Self, RT, Self::DepCursor, ChangeId, ChangeId>, TxnErr<Self::DepsError>>;fn iter_touched(&self,p: Position<ChangeId>,) -> Result<Cursor<Self, &Self, Self::Touched_filesCursor, Position<ChangeId>, ChangeId>,TxnErr<Self::DepsError>,>;fn iter_rev_touched(&self,p: ChangeId,) -> Result<Cursor<Self, &Self, Self::Rev_touched_filesCursor, ChangeId, Position<ChangeId>>,TxnErr<Self::DepsError>,>;table!(touched_files);table!(rev_touched_files);table_get!(touched_files, Position<ChangeId>, ChangeId, DepsError);table_get!(rev_touched_files, ChangeId, Position<ChangeId>, DepsError);iter!(touched_files, Position<ChangeId>, ChangeId, DepsError);iter!(rev_touched_files, ChangeId, Position<ChangeId>, DepsError);} - edit in libpijul/src/pristine/mod.rs at line 211
pub trait TreeTxnT: Sized {type TreeError: std::error::Error + Send + Sync + 'static; - replacement in libpijul/src/pristine/mod.rs at line 214
table_get!(tree, PathId, Inode);iter!(tree, OwnedPathId, Inode);table_get!(tree, PathId, Inode, TreeError);iter!(tree, OwnedPathId, Inode, TreeError); - replacement in libpijul/src/pristine/mod.rs at line 218
table_get!(revtree, Inode, PathId);iter!(revtree, Inode, OwnedPathId);table_get!(revtree, Inode, PathId, TreeError);iter!(revtree, Inode, OwnedPathId, TreeError); - replacement in libpijul/src/pristine/mod.rs at line 223
table_get!(inodes, Inode, Position<ChangeId>);table_get!(revinodes, Position<ChangeId>, Inode);table_get!(inodes, Inode, Position<ChangeId>, TreeError);table_get!(revinodes, Position<ChangeId>, Inode, TreeError); - replacement in libpijul/src/pristine/mod.rs at line 227
cursor!(partials, SmallString, Position<ChangeId>);cursor!(partials, SmallString, Position<ChangeId>, TreeError);cursor!(inodes, Inode, Position<ChangeId>, TreeError);fn iter_inodes(&self,) -> Result<Cursor<Self, &Self, Self::InodesCursor, Inode, Position<ChangeId>>,TxnErr<Self::TreeError>,>; - replacement in libpijul/src/pristine/mod.rs at line 236
table!(channels);cursor!(channels, SmallString, (u64, u64, u64, u64, u64, u64));#[cfg(debug_assertions)]cursor!(revinodes, Position<ChangeId>, Inode, TreeError);#[cfg(debug_assertions)]fn iter_revinodes(&self,) -> Result<Cursor<Self, &Self, Self::RevinodesCursor, Position<ChangeId>, Inode>,TxnErr<Self::TreeError>,>; - replacement in libpijul/src/pristine/mod.rs at line 248
) -> Cursor<Self, &'txn Self, Self::PartialsCursor, SmallString, Position<ChangeId>>;) -> Result<Cursor<Self, &'txn Self, Self::PartialsCursor, SmallString, Position<ChangeId>>,TxnErr<Self::TreeError>,>;} - replacement in libpijul/src/pristine/mod.rs at line 254[22.590301]→[22.590301:590867](∅→∅),[22.590886]→[22.590886:591060](∅→∅),[22.591079]→[22.591079:591136](∅→∅)
table!(revdep);table!(dep);table_get!(dep, ChangeId, ChangeId);cursor_ref!(dep, ChangeId, ChangeId);table_get!(revdep, ChangeId, ChangeId);table!(touched_files);table!(rev_touched_files);table_get!(touched_files, Position<ChangeId>, ChangeId);table_get!(rev_touched_files, ChangeId, Position<ChangeId>);iter!(touched_files, Position<ChangeId>, ChangeId);iter!(rev_touched_files, ChangeId, Position<ChangeId>);/// Returns the external hash of an internal change identifier, if/// the change is known.fn get_external(&self, p: ChangeId) -> Option<Hash>;/// Returns the internal change identifier of change with external/// hash `hash`, if the change is known.fn get_internal(&self, p: Hash) -> Option<ChangeId>;/// The trait of immutable transactions.pub trait TxnT:GraphTxnT+ ChannelTxnT+ DepsTxnT<DepsError = <Self as GraphTxnT>::GraphError>+ TreeTxnT<TreeError = <Self as GraphTxnT>::GraphError>{table!(channels);cursor!(channels, SmallString, (u64, u64, u64, u64, u64, u64)); - replacement in libpijul/src/pristine/mod.rs at line 264
fn hash_from_prefix(&self, prefix: &str) -> Result<(Hash, ChangeId), HashPrefixError>;fn hash_from_prefix(&self,prefix: &str,) -> Result<(Hash, ChangeId), HashPrefixError<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 272
) -> Result<Hash, HashPrefixError>;) -> Result<Hash, HashPrefixError<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 284
fn load_channel(&self, name: &str) -> Option<ChannelRef<Self>>;fn load_channel(&self,name: &str,) -> Result<Option<ChannelRef<Self>>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 289
fn load_remote(&self, name: &str) -> Option<RemoteRef<Self>>;fn load_remote(&self, name: &str) -> Result<Option<RemoteRef<Self>>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 293[22.592225]→[22.592225:592310](∅→∅),[22.592329]→[22.592329:592412](∅→∅),[22.599224]→[22.599224:599225](∅→∅),[22.599225]→[8.572:672](∅→∅),[8.672]→[22.600030:600031](∅→∅),[22.600030]→[22.600030:600031](∅→∅),[22.600031]→[8.673:770](∅→∅),[8.770]→[22.600186:600187](∅→∅),[22.600186]→[22.600186:600187](∅→∅),[22.600206]→[22.600206:600373](∅→∅)
fn iter_channels<'txn>(&'txn self, start: &str) -> ChannelIterator<'txn, Self>;fn iter_remotes<'txn>(&'txn self, start: &str) -> RemotesIterator<'txn, Self>;fn iter_revdep(&self, p: ChangeId) -> Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>;fn iter_dep(&self, p: ChangeId) -> Cursor<Self, &Self, Self::DepCursor, ChangeId, ChangeId>;fn iter_dep_ref<RT: std::ops::Deref<Target = Self> + Clone>(txn: RT,p: ChangeId,) -> Cursor<Self, RT, Self::DepCursor, ChangeId, ChangeId>;fn iter_channels<'txn>(&'txn self,start: &str,) -> Result<ChannelIterator<'txn, Self>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 298[22.600374]→[8.771:807](∅→∅),[8.807]→[22.600440:600471](∅→∅),[22.600440]→[22.600440:600471](∅→∅),[22.600471]→[8.808:895](∅→∅)
fn iter_touched(&self,p: Position<ChangeId>,) -> Cursor<Self, &Self, Self::Touched_filesCursor, Position<ChangeId>, ChangeId>;fn iter_remotes<'txn>(&'txn self,start: &str,) -> Result<RemotesIterator<'txn, Self>, TxnErr<Self::GraphError>>; - edit in libpijul/src/pristine/mod.rs at line 303[22.600564]→[8.896:936](∅→∅),[8.936]→[22.600634:600655](∅→∅),[22.600634]→[22.600634:600655](∅→∅),[22.600655]→[8.937:1028](∅→∅),[8.1028]→[22.605607:605608](∅→∅),[22.605607]→[22.605607:605608](∅→∅)
fn iter_rev_touched(&self,p: ChangeId,) -> Cursor<Self, &Self, Self::Rev_touched_filesCursor, ChangeId, Position<ChangeId>>; - replacement in libpijul/src/pristine/mod.rs at line 315
) -> Cursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>;) -> Result<Cursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>,TxnErr<Self::GraphError>,>; - replacement in libpijul/src/pristine/mod.rs at line 324
) -> RevCursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>;fn get_remote(&mut self, name: &str) -> Option<RemoteRef<Self>>;fn last_remote(&self, remote: &Self::Remote) -> Option<(u64, (Hash, Merkle))>;) -> Result<RevCursor<Self, &'txn Self, Self::RemoteCursor, u64, (Hash, Merkle)>,TxnErr<Self::GraphError>,>; - replacement in libpijul/src/pristine/mod.rs at line 329
fn get_remote_state(&self, remote: &Self::Remote, n: u64) -> Option<(u64, (Hash, Merkle))>;fn get_remote(&mut self,name: &str,) -> Result<Option<RemoteRef<Self>>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 334
fn remote_has_change(&self, remote: &RemoteRef<Self>, hash: Hash) -> bool;fn remote_has_state(&self, remote: &RemoteRef<Self>, hash: Merkle) -> bool;fn channel_has_state(&self, channel: &ChannelRef<Self>, hash: Merkle) -> bool;fn last_remote(&self,remote: &Self::Remote,) -> Result<Option<(u64, (Hash, Merkle))>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 339
cursor!(inodes, Inode, Position<ChangeId>);fn iter_inodes(&self) -> Cursor<Self, &Self, Self::InodesCursor, Inode, Position<ChangeId>>;fn get_remote_state(&self,remote: &Self::Remote,n: u64,) -> Result<Option<(u64, (Hash, Merkle))>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 345
#[cfg(debug_assertions)]cursor!(revinodes, Position<ChangeId>, Inode);#[cfg(debug_assertions)]fn iter_revinodes(fn remote_has_change(&self,remote: &RemoteRef<Self>,hash: Hash,) -> Result<bool, TxnErr<Self::GraphError>>;fn remote_has_state( - replacement in libpijul/src/pristine/mod.rs at line 352
) -> Cursor<Self, &Self, Self::RevinodesCursor, Position<ChangeId>, Inode>;remote: &RemoteRef<Self>,hash: Merkle,) -> Result<bool, TxnErr<Self::GraphError>>;fn channel_has_state(&self,channel: &ChannelRef<Self>,hash: Merkle,) -> Result<bool, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 364
pub(crate) fn iter_adjacent<'db, 'txn: 'db, T: TxnT>(pub(crate) fn iter_adjacent<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 366
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 370
) -> AdjacentIterator<'txn, T> {) -> Result<AdjacentIterator<'txn, T>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 376
AdjacentIterator {it: iter_graph(txn, &channel.graph, key, Some(edge)),Ok(AdjacentIterator {it: iter_graph(txn, graph, key, Some(edge))?, - replacement in libpijul/src/pristine/mod.rs at line 381
}}) - replacement in libpijul/src/pristine/mod.rs at line 384
pub(crate) fn iter_alive_children<'db, 'txn: 'db, T: TxnT>(pub(crate) fn iter_alive_children<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 386
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 388
) -> AdjacentIterator<'txn, T> {) -> Result<AdjacentIterator<'txn, T>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 391
channel,graph, - replacement in libpijul/src/pristine/mod.rs at line 398
pub(crate) fn iter_deleted_parents<'db, 'txn: 'db, T: TxnT>(pub(crate) fn iter_deleted_parents<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 400
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 402
) -> AdjacentIterator<'txn, T> {) -> Result<AdjacentIterator<'txn, T>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 405
channel,graph, - replacement in libpijul/src/pristine/mod.rs at line 412
pub(crate) fn iter_adj_all<'db, 'txn: 'db, T: TxnT>(pub(crate) fn iter_adj_all<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 414
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 416
) -> AdjacentIterator<'txn, T> {iter_adjacent(txn, channel, key, EdgeFlags::empty(), EdgeFlags::all())) -> Result<AdjacentIterator<'txn, T>, TxnErr<T::GraphError>> {iter_adjacent(txn, graph, key, EdgeFlags::empty(), EdgeFlags::all()) - replacement in libpijul/src/pristine/mod.rs at line 420
pub(crate) fn tree_path<T: TxnT>(txn: &T, v: Position<ChangeId>) -> Option<String> {if let Some(mut inode) = txn.get_revinodes(v, None) {pub(crate) fn tree_path<T: TreeTxnT>(txn: &T,v: Position<ChangeId>,) -> Result<Option<String>, TxnErr<T::TreeError>> {if let Some(mut inode) = txn.get_revinodes(v, None)? { - replacement in libpijul/src/pristine/mod.rs at line 427
if let Some(next) = txn.get_revtree(inode, None) {if let Some(next) = txn.get_revtree(inode, None)? { - replacement in libpijul/src/pristine/mod.rs at line 432
return None;return Ok(None); - replacement in libpijul/src/pristine/mod.rs at line 439
Some(result)} else {Nonereturn Ok(Some(result)); - edit in libpijul/src/pristine/mod.rs at line 441
} else {None - edit in libpijul/src/pristine/mod.rs at line 442
Ok(None) - replacement in libpijul/src/pristine/mod.rs at line 445
pub(crate) fn internal<T: TxnT>(txn: &T, h: &Option<Hash>, p: ChangeId) -> Option<ChangeId> {pub(crate) fn internal<T: GraphTxnT>(txn: &T,h: &Option<Hash>,p: ChangeId,) -> Result<Option<ChangeId>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 451
Some(Hash::None) => Some(ChangeId::ROOT),Some(Hash::None) => Ok(Some(ChangeId::ROOT)), - replacement in libpijul/src/pristine/mod.rs at line 453
None => Some(p),None => Ok(Some(p)), - replacement in libpijul/src/pristine/mod.rs at line 458
#[error("Inconsistent change")]pub struct InconsistentChange {}pub enum InconsistentChange<T: std::error::Error + 'static> {#[error("Undeclared dependency")]UndeclaredDep,#[error(transparent)]Txn(T),}impl<T: std::error::Error + 'static> std::convert::From<TxnErr<T>> for InconsistentChange<T> {fn from(e: TxnErr<T>) -> Self {InconsistentChange::Txn(e.0)}} - replacement in libpijul/src/pristine/mod.rs at line 471
pub(crate) fn internal_pos<T: TxnT>(pub(crate) fn internal_pos<T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 475
) -> Result<Position<ChangeId>, InconsistentChange> {) -> Result<Position<ChangeId>, InconsistentChange<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 477
if let Some(p) = txn.get_internal(p) {if let Some(p) = txn.get_internal(p)? { - replacement in libpijul/src/pristine/mod.rs at line 480
return Err(InconsistentChange {});return Err(InconsistentChange::UndeclaredDep); - replacement in libpijul/src/pristine/mod.rs at line 492
pub(crate) fn iter_graph<'txn, T: TxnT>(pub(crate) fn iter_graph<'txn, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 497
) -> Cursor<T, &'txn T, T::GraphCursor, Vertex<ChangeId>, Edge> {) -> Result<Cursor<T, &'txn T, T::GraphCursor, Vertex<ChangeId>, Edge>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 501
pub(crate) fn iter_graph_ref<T: TxnT, RT: std::ops::Deref<Target = T>>(pub(crate) fn iter_graph_ref<T: GraphTxnT, RT: std::ops::Deref<Target = T>>( - replacement in libpijul/src/pristine/mod.rs at line 506
) -> Cursor<T, RT, T::GraphCursor, Vertex<ChangeId>, Edge> {) -> Result<Cursor<T, RT, T::GraphCursor, Vertex<ChangeId>, Edge>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 510
pub(crate) fn changeid_log<'db, 'txn: 'db, T: TxnT>(pub(crate) fn changeid_log<'db, 'txn: 'db, T: ChannelTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 514
) -> Cursor<T, &'txn T, T::RevchangesetCursor, u64, (ChangeId, Merkle)> {) -> Result<Cursor<T, &'txn T, T::RevchangesetCursor, u64, (ChangeId, Merkle)>, TxnErr<T::GraphError>>{ - replacement in libpijul/src/pristine/mod.rs at line 519
pub(crate) fn current_state<'db, 'txn: 'db, T: TxnT>(pub(crate) fn current_state<'db, 'txn: 'db, T: ChannelTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 522
) -> Merkle {txn.rev_cursor_revchangeset(&channel.revchanges, None)) -> Result<Merkle, TxnErr<T::GraphError>> {if let Some(e) = txn.rev_cursor_revchangeset(&channel.revchanges, None)? - replacement in libpijul/src/pristine/mod.rs at line 526
.map(|(_, (_, m))| m).unwrap_or(Merkle::zero()){let (_, (_, m)) = e?;Ok(m)} else {Ok(Merkle::zero())} - replacement in libpijul/src/pristine/mod.rs at line 534
pub(crate) fn changeid_log_ref<T: TxnT, RT: std::ops::Deref<Target = T>>(pub(crate) fn changeid_log_ref<T: ChannelTxnT, RT: std::ops::Deref<Target = T>>( - replacement in libpijul/src/pristine/mod.rs at line 538
) -> Cursor<T, RT, T::RevchangesetCursor, u64, (ChangeId, Merkle)> {T::cursor_revchangeset_ref(txn, &channel.revchanges, Some((from, None)))) -> Result<Cursor<T, RT, T::RevchangesetCursor, u64, (ChangeId, Merkle)>, TxnErr<T::GraphError>> {Ok(T::cursor_revchangeset_ref(txn,&channel.revchanges,Some((from, None)),)?) - replacement in libpijul/src/pristine/mod.rs at line 546
pub(crate) fn changeid_rev_log<'db, 'txn: 'db, T: TxnT>(pub(crate) fn changeid_rev_log<'db, 'txn: 'db, T: ChannelTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 550
) -> RevCursor<T, &'txn T, T::RevchangesetCursor, u64, (ChangeId, Merkle)> {txn.rev_cursor_revchangeset(&channel.revchanges, from.map(|from| (from, None)))) -> Result<RevCursor<T, &'txn T, T::RevchangesetCursor, u64, (ChangeId, Merkle)>,TxnErr<T::GraphError>,> {Ok(txn.rev_cursor_revchangeset(&channel.revchanges, from.map(|from| (from, None)))?) - replacement in libpijul/src/pristine/mod.rs at line 557
pub(crate) fn log_for_path<'txn, 'channel, T: TxnT>(pub(crate) fn log_for_path<'txn,'channel,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/pristine/mod.rs at line 566
) -> PathChangeset<'channel, 'txn, T> {PathChangeset {iter: txn.cursor_revchangeset(&channel.revchanges, Some((from_timestamp, None))),) -> Result<PathChangeset<'channel, 'txn, T>, TxnErr<T::GraphError>> {Ok(PathChangeset {iter: txn.cursor_revchangeset(&channel.revchanges, Some((from_timestamp, None)))?, - replacement in libpijul/src/pristine/mod.rs at line 572
}}) - replacement in libpijul/src/pristine/mod.rs at line 575
pub(crate) fn rev_log_for_path<'txn, 'channel, T: TxnT>(pub(crate) fn rev_log_for_path<'txn,'channel,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/pristine/mod.rs at line 584
) -> RevPathChangeset<'channel, 'txn, T> {RevPathChangeset {iter: txn.rev_cursor_revchangeset(&channel.revchanges, Some((from_timestamp, None))),) -> Result<RevPathChangeset<'channel, 'txn, T>, TxnErr<T::GraphError>> {Ok(RevPathChangeset {iter: txn.rev_cursor_revchangeset(&channel.revchanges, Some((from_timestamp, None)))?, - replacement in libpijul/src/pristine/mod.rs at line 590
}}) - replacement in libpijul/src/pristine/mod.rs at line 594
pub(crate) fn test_edge<T: TxnT>(pub(crate) fn test_edge<T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 596
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 601
) -> bool {) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 613
let mut cursor = txn.cursor_graph(&channel.graph, Some((key, Some(edge))));let (a_, b_) = cursor.next().unwrap();a_.change == a.changelet mut cursor = txn.cursor_graph(&channel, Some((key, Some(edge))))?;let (a_, b_) = cursor.next().unwrap()?;Ok(a_.change == a.change - replacement in libpijul/src/pristine/mod.rs at line 620
&& b_.dest == b&& b_.dest == b) - replacement in libpijul/src/pristine/mod.rs at line 624
pub(crate) fn is_alive<T: TxnT>(txn: &T, channel: &Channel<T>, a: Vertex<ChangeId>) -> bool {a.is_root()|| iter_adjacent(txn,channel,a,EdgeFlags::PARENT,EdgeFlags::all() - EdgeFlags::DELETED,).any(|e| {!e.flag.contains(EdgeFlags::PSEUDO)&& (e.flag.contains(EdgeFlags::BLOCK) || a.is_empty())})pub(crate) fn is_alive<T: GraphTxnT>(txn: &T,channel: &T::Graph,a: Vertex<ChangeId>,) -> Result<bool, TxnErr<T::GraphError>> {if a.is_root() {return Ok(true);}for e in iter_adjacent(txn,channel,a,EdgeFlags::PARENT,EdgeFlags::all() - EdgeFlags::DELETED,)? {let e = e?;if !e.flag.contains(EdgeFlags::PSEUDO)&& (e.flag.contains(EdgeFlags::BLOCK) || a.is_empty()){return Ok(true);}}Ok(false) - replacement in libpijul/src/pristine/mod.rs at line 649
pub(crate) fn make_changeid<T: TxnT>(txn: &T, h: &Hash) -> ChangeId {if let Some(h) = txn.get_internal(*h) {return h;pub(crate) fn make_changeid<T: GraphTxnT>(txn: &T,h: &Hash,) -> Result<ChangeId, TxnErr<T::GraphError>> {if let Some(h) = txn.get_internal(*h)? {return Ok(h); - replacement in libpijul/src/pristine/mod.rs at line 659
Hash::None => return ChangeId::ROOT,Hash::None => return Ok(ChangeId::ROOT), - replacement in libpijul/src/pristine/mod.rs at line 662
while txn.get_external(p).is_some() {while txn.get_external(p)?.is_some() { - replacement in libpijul/src/pristine/mod.rs at line 665
pOk(p) - replacement in libpijul/src/pristine/mod.rs at line 669
pub fn debug_tree<P: AsRef<std::path::Path>, T: TxnT>(pub fn debug_tree<P: AsRef<std::path::Path>, T: TreeTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 678
for t in txn.iter_tree(root, None) {writeln!(f, "{:?}", t)?for t in txn.iter_tree(root, None).unwrap() {writeln!(f, "{:?}", t.unwrap())? - replacement in libpijul/src/pristine/mod.rs at line 685
pub fn debug_tree_print<T: TxnT>(txn: &T) {pub fn debug_tree_print<T: TreeTxnT>(txn: &T) { - replacement in libpijul/src/pristine/mod.rs at line 690
for t in txn.iter_tree(root, None) {debug!("{:?}", t)for t in txn.iter_tree(root, None).unwrap() {debug!("{:?}", t.unwrap()) - replacement in libpijul/src/pristine/mod.rs at line 698
pub fn debug_to_file<P: AsRef<std::path::Path>, T: TxnT>(pub fn debug_to_file<P: AsRef<std::path::Path>, T: ChannelTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 705
let channel = channel.r.borrow();let done = debug(txn, &channel, &mut f)?;let done = debug(txn, &channel.borrow().graph, &mut f)?; - replacement in libpijul/src/pristine/mod.rs at line 712
pub fn debug_revtree<P: AsRef<std::path::Path>, T: TxnT>(pub fn debug_revtree<P: AsRef<std::path::Path>, T: TreeTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 717
for t in txn.iter_revtree(Inode::ROOT, None) {writeln!(f, "{:?}", t)?for t in txn.iter_revtree(Inode::ROOT, None).unwrap() {writeln!(f, "{:?}", t.unwrap())? - replacement in libpijul/src/pristine/mod.rs at line 724
pub fn debug_revtree_print<T: TxnT>(txn: &T) {for t in txn.iter_revtree(Inode::ROOT, None) {debug!("{:?}", t)pub fn debug_revtree_print<T: TreeTxnT>(txn: &T) {for t in txn.iter_revtree(Inode::ROOT, None).unwrap() {debug!("{:?}", t.unwrap()) - replacement in libpijul/src/pristine/mod.rs at line 731
pub fn debug_inodes<T: TxnT>(txn: &T) {pub fn debug_inodes<T: TreeTxnT>(txn: &T) { - replacement in libpijul/src/pristine/mod.rs at line 733
for t in txn.iter_inodes() {debug!("debug_inodes = {:?}", t)for t in txn.iter_inodes().unwrap() {debug!("debug_inodes = {:?}", t.unwrap()) - replacement in libpijul/src/pristine/mod.rs at line 740
pub fn debug_revinodes<T: TxnT>(txn: &T) {pub fn debug_revinodes<T: TreeTxnT>(txn: &T) { - replacement in libpijul/src/pristine/mod.rs at line 742
for t in txn.iter_revinodes() {debug!("debug_revinodes = {:?}", t)for t in txn.iter_revinodes().unwrap() {debug!("debug_revinodes = {:?}", t.unwrap()) - replacement in libpijul/src/pristine/mod.rs at line 751
pub fn debug<W: Write, T: TxnT>(pub fn debug<W: Write, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 753
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 756
let cursor = txn.cursor_graph(&channel.graph, None);let cursor = txn.cursor_graph(&channel, None).unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 760
for (k, v) in cursor {for x in cursor {let (k, v) = x.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 773
pub fn check_alive<T: TxnT>(pub fn check_alive<T: ChannelTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 775
channel: &ChannelRef<T>,channel: &T::Graph, - edit in libpijul/src/pristine/mod.rs at line 780[22.46145]→[22.46145:46183](∅→∅),[22.46183]→[22.613571:613572](∅→∅),[22.613571]→[22.613571:613572](∅→∅)
let channel = channel.r.borrow(); - replacement in libpijul/src/pristine/mod.rs at line 793
) {).unwrap(){let e = e.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 804
let cursor = txn.cursor_graph(&channel.graph, None);let cursor = txn.cursor_graph(&channel, None); - replacement in libpijul/src/pristine/mod.rs at line 810
for (k, v) in cursor {for x in cursor.unwrap() {let (k, v) = x.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 815
reachable_pseudo.push((k0, find_file(txn, &channel, k0, &mut stack, &mut visited)))reachable_pseudo.push((k0,find_file(txn, &channel, k0, &mut stack, &mut visited).unwrap(),)) - replacement in libpijul/src/pristine/mod.rs at line 840
let file = find_file(txn, &channel, k, &mut stack, &mut visited);let file = find_file(txn, &channel, k, &mut stack, &mut visited).unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 845
reachable_pseudo.push((k0, find_file(txn, &channel, k0, &mut stack, &mut visited)));reachable_pseudo.push((k0,find_file(txn, &channel, k0, &mut stack, &mut visited).unwrap(),)); - replacement in libpijul/src/pristine/mod.rs at line 854
fn find_file<T: TxnT>(fn find_file<T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 856
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 860
) -> Option<Vertex<ChangeId>> {) -> Result<Option<Vertex<ChangeId>>, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 869
for e in iter_adjacent(txn, &channel, kk, EdgeFlags::PARENT, EdgeFlags::all()) {for e in iter_adjacent(txn, &channel, kk, EdgeFlags::PARENT, EdgeFlags::all())? {let e = e?; - replacement in libpijul/src/pristine/mod.rs at line 880
fileOk(file) - replacement in libpijul/src/pristine/mod.rs at line 883
pub fn debug_root<W: Write, T: TxnT>(pub fn debug_root<W: Write, T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 885
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 898
for e in iter_adj_all(txn, &channel, v) {for e in iter_adj_all(txn, &channel, v).unwrap() {let e = e.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 928
fn debug_edge<T: TxnT, W: std::io::Write>(fn debug_edge<T: GraphTxnT, W: std::io::Write>( - replacement in libpijul/src/pristine/mod.rs at line 930
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 1035
pub struct Cursor<T: TxnT, RT: std::ops::Deref<Target = T>, Cursor, K, V> {pub struct Cursor<T: Sized, RT: std::ops::Deref<Target = T>, Cursor, K, V> { - replacement in libpijul/src/pristine/mod.rs at line 1041
pub struct RevCursor<T: TxnT, RT: std::ops::Deref<Target = T>, Cursor, K, V> {pub struct RevCursor<T: Sized, RT: std::ops::Deref<Target = T>, Cursor, K, V> { - replacement in libpijul/src/pristine/mod.rs at line 1047
initialized_cursor!(graph, Vertex<ChangeId>, Edge);initialized_cursor!(changeset, ChangeId, u64);initialized_cursor!(revchangeset, u64, (ChangeId, Merkle));initialized_rev_cursor!(revchangeset, u64, (ChangeId, Merkle));initialized_cursor!(tree, OwnedPathId, Inode);initialized_cursor!(revtree, Inode, OwnedPathId);initialized_cursor!(dep, ChangeId, ChangeId);initialized_cursor!(partials, SmallString, Position<ChangeId>);initialized_cursor!(rev_touched_files, ChangeId, Position<ChangeId>);initialized_cursor!(touched_files, Position<ChangeId>, ChangeId);initialized_cursor!(graph, Vertex<ChangeId>, Edge, GraphTxnT, GraphError);initialized_cursor!(changeset, ChangeId, u64, ChannelTxnT, GraphError);initialized_cursor!(revchangeset,u64,(ChangeId, Merkle),ChannelTxnT,GraphError);initialized_rev_cursor!(revchangeset,u64,(ChangeId, Merkle),ChannelTxnT,GraphError);initialized_cursor!(tree, OwnedPathId, Inode, TreeTxnT, TreeError);initialized_cursor!(revtree, Inode, OwnedPathId, TreeTxnT, TreeError);initialized_cursor!(dep, ChangeId, ChangeId, DepsTxnT, DepsError);initialized_cursor!(partials,SmallString,Position<ChangeId>,TreeTxnT,TreeError);initialized_cursor!(rev_touched_files,ChangeId,Position<ChangeId>,DepsTxnT,DepsError);initialized_cursor!(touched_files,Position<ChangeId>,ChangeId,DepsTxnT,DepsError); - replacement in libpijul/src/pristine/mod.rs at line 1089
initialized_cursor!(inodes, Inode, Position<ChangeId>);initialized_cursor!(inodes, Inode, Position<ChangeId>, TreeTxnT, TreeError); - replacement in libpijul/src/pristine/mod.rs at line 1091
initialized_cursor!(revinodes, Position<ChangeId>, Inode);initialized_cursor!(revinodes, Position<ChangeId>, Inode, TreeTxnT, TreeError); - replacement in libpijul/src/pristine/mod.rs at line 1094
pub struct AdjacentIterator<'txn, T: TxnT> {pub struct AdjacentIterator<'txn, T: GraphTxnT> { - replacement in libpijul/src/pristine/mod.rs at line 1102
impl<'txn, T: TxnT> Iterator for AdjacentIterator<'txn, T> {type Item = Edge;impl<'txn, T: GraphTxnT> Iterator for AdjacentIterator<'txn, T> {type Item = Result<Edge, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1106
if let Some((v, e)) = self.it.next() {debug!("adjacent iterator: {:?} {:?}", v, e);if v == self.key {if e.flag >= self.min_flag {if e.flag <= self.max_flag {return Some(e);} else {return None;match self.it.next() {Some(Ok((v, e))) => {debug!("adjacent iterator: {:?} {:?}", v, e);if v == self.key {if e.flag >= self.min_flag {if e.flag <= self.max_flag {return Some(Ok(e));} else {return None;} - edit in libpijul/src/pristine/mod.rs at line 1117
} else if v > self.key {return None; - replacement in libpijul/src/pristine/mod.rs at line 1120
} else if v > self.key {}Some(Err(e)) => return Some(Err(e)),None => {debug!("adjacent iterator: over"); - edit in libpijul/src/pristine/mod.rs at line 1126
} else {debug!("adjacent iterator: over");return None; - replacement in libpijul/src/pristine/mod.rs at line 1131
pub struct PathChangeset<'channel, 'txn: 'channel, T: TxnT> {pub struct PathChangeset<'channel, 'txn: 'channel, T: ChannelTxnT + DepsTxnT> { - replacement in libpijul/src/pristine/mod.rs at line 1138
pub struct RevPathChangeset<'channel, 'txn: 'channel, T: TxnT> {pub struct RevPathChangeset<'channel, 'txn: 'channel, T: ChannelTxnT + DepsTxnT> { - replacement in libpijul/src/pristine/mod.rs at line 1145
impl<'channel, 'txn: 'channel, T: TxnT> Iterator for PathChangeset<'channel, 'txn, T> {type Item = Hash;impl<'channel,'txn: 'channel,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,> Iterator for PathChangeset<'channel, 'txn, T>{type Item = Result<Hash, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1153
while let Some((_, (changeid, _))) = self.iter.next() {for (p, touched) in self.txn.iter_rev_touched_files(changeid, None) {while let Some(x) = self.iter.next() {let (_, (changeid, _)) = match x {Ok(x) => x,Err(e) => return Some(Err(e)),};let iter = match self.txn.iter_rev_touched_files(changeid, None) {Ok(iter) => iter,Err(e) => return Some(Err(e)),};for x in iter {let (p, touched) = match x {Ok(x) => x,Err(e) => return Some(Err(e)),}; - replacement in libpijul/src/pristine/mod.rs at line 1172
if is_ancestor_of(self.txn, self.channel, self.key, touched) {return self.txn.get_external(changeid);match is_ancestor_of(self.txn, &self.channel.graph, self.key, touched) {Ok(true) => return self.txn.get_external(changeid).transpose(),Err(e) => return Some(Err(e)),Ok(false) => {} - replacement in libpijul/src/pristine/mod.rs at line 1183
impl<'channel, 'txn: 'channel, T: TxnT> Iterator for RevPathChangeset<'channel, 'txn, T> {type Item = Hash;impl<'channel,'txn: 'channel,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,> Iterator for RevPathChangeset<'channel, 'txn, T>{type Item = Result<Hash, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1191
while let Some((_, (changeid, _))) = self.iter.next() {for (p, touched) in self.txn.iter_rev_touched_files(changeid, None) {loop {let changeid = match self.iter.next()? {Err(e) => return Some(Err(e)),Ok((_, (changeid, _))) => changeid,};let iter = match self.txn.iter_rev_touched_files(changeid, None) {Ok(iter) => iter,Err(e) => return Some(Err(e)),};for x in iter {let (p, touched) = match x {Ok(x) => x,Err(e) => return Some(Err(e)),}; - replacement in libpijul/src/pristine/mod.rs at line 1210
if is_ancestor_of(self.txn, self.channel, self.key, touched) {return self.txn.get_external(changeid);match is_ancestor_of(self.txn, &self.channel.graph, self.key, touched) {Ok(true) => return self.txn.get_external(changeid).transpose(),Err(e) => return Some(Err(e)),Ok(false) => {} - edit in libpijul/src/pristine/mod.rs at line 1217
None - replacement in libpijul/src/pristine/mod.rs at line 1220
fn is_ancestor_of<T: TxnT>(fn is_ancestor_of<T: GraphTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1222
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 1225
) -> bool {) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 1232
return true;return Ok(true); - replacement in libpijul/src/pristine/mod.rs at line 1243
) {)? {let p = p?; - replacement in libpijul/src/pristine/mod.rs at line 1253
) {)? {let pp = pp?; - replacement in libpijul/src/pristine/mod.rs at line 1256
return true;return Ok(true); - replacement in libpijul/src/pristine/mod.rs at line 1262
falseOk(false) - replacement in libpijul/src/pristine/mod.rs at line 1271
type Item = ChannelRef<T>;type Item = Result<ChannelRef<T>, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1273
let next: Option<(SmallString, (u64, u64, u64, u64, u64, u64))> =self.txn.cursor_channels_next(&mut self.cursor);if let Some((name, _)) = next {self.txn.load_channel(name.as_str())} else {None// Option<(SmallString, (u64, u64, u64, u64, u64, u64))>match self.txn.cursor_channels_next(&mut self.cursor) {Err(e) => Some(Err(e)),Ok(Some((name, _))) => self.txn.load_channel(name.as_str()).transpose(),Ok(None) => None, - replacement in libpijul/src/pristine/mod.rs at line 1288
type Item = RemoteRef<T>;type Item = Result<RemoteRef<T>, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1290
let next: Option<(SmallString, (u64, u64, u64))> =self.txn.cursor_remotes_next(&mut self.cursor);if let Some((name, _)) = next {self.txn.load_remote(name.as_str())} else {Nonematch self.txn.cursor_remotes_next(&mut self.cursor) {Ok(Some((name, _))) => self.txn.load_remote(name.as_str()).transpose(),Ok(None) => None,Err(e) => Some(Err(e)), - replacement in libpijul/src/pristine/mod.rs at line 1298
/// The trait of immutable transactions.pub trait MutTxnT: TxnT {put_del!(internal, Hash, ChangeId);put_del!(external, ChangeId, Hash);pub trait GraphMutTxnT: GraphTxnT {put_del!(internal, Hash, ChangeId, GraphError);put_del!(external, ChangeId, Hash, GraphError); - edit in libpijul/src/pristine/mod.rs at line 1302
put_del!(inodes, Inode, Position<ChangeId>);put_del!(revinodes, Position<ChangeId>, Inode);put_del!(tree, PathId, Inode);put_del!(revtree, Inode, PathId);put_del!(dep, ChangeId, ChangeId);put_del!(revdep, ChangeId, ChangeId);put_del!(touched_files, Position<ChangeId>, ChangeId);put_del!(rev_touched_files, ChangeId, Position<ChangeId>); - replacement in libpijul/src/pristine/mod.rs at line 1308
) -> Result<bool, Self::Error>;) -> Result<bool, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1316
) -> Result<bool, Self::Error>;) -> Result<bool, TxnErr<Self::GraphError>>;} - edit in libpijul/src/pristine/mod.rs at line 1319
pub trait ChannelMutTxnT: ChannelTxnT + GraphMutTxnT { - replacement in libpijul/src/pristine/mod.rs at line 1327
) -> Result<Option<Merkle>, Self::Error>;) -> Result<Option<Merkle>, TxnErr<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1335
) -> Result<bool, Self::Error>;) -> Result<bool, TxnErr<Self::GraphError>>;}pub trait DepsMutTxnT: DepsTxnT {put_del!(dep, ChangeId, ChangeId, DepsError);put_del!(revdep, ChangeId, ChangeId, DepsError);put_del!(touched_files, Position<ChangeId>, ChangeId, DepsError);put_del!(rev_touched_files, ChangeId, Position<ChangeId>, DepsError);}pub trait TreeMutTxnT: TreeTxnT {put_del!(inodes, Inode, Position<ChangeId>, TreeError);put_del!(revinodes, Position<ChangeId>, Inode, TreeError);put_del!(tree, PathId, Inode, TreeError);put_del!(revtree, Inode, PathId, TreeError);fn put_partials(&mut self,k: &str,e: Position<ChangeId>,) -> Result<bool, TxnErr<Self::TreeError>>;fn del_partials(&mut self,k: &str,e: Option<Position<ChangeId>>,) -> Result<bool, TxnErr<Self::TreeError>>;} - edit in libpijul/src/pristine/mod.rs at line 1363
/// The trait of immutable transactions.pub trait MutTxnT:GraphMutTxnT+ ChannelMutTxnT+ DepsMutTxnT<DepsError = <Self as GraphTxnT>::GraphError>+ TreeMutTxnT<TreeError = <Self as GraphTxnT>::GraphError>+ TxnT{ - replacement in libpijul/src/pristine/mod.rs at line 1381
fn open_or_create_channel(&mut self, name: &str) -> Result<ChannelRef<Self>, Self::Error>;fn open_or_create_channel(&mut self, name: &str) -> Result<ChannelRef<Self>, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1387
) -> Result<ChannelRef<Self>, ForkError<Self::Error>>;) -> Result<ChannelRef<Self>, ForkError<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1393
) -> Result<(), ForkError<Self::Error>>;) -> Result<(), ForkError<Self::GraphError>>; - replacement in libpijul/src/pristine/mod.rs at line 1395
fn drop_channel(&mut self, name: &str) -> Result<bool, Self::Error>;fn drop_channel(&mut self, name: &str) -> Result<bool, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1398[22.631530]→[22.18348:18396](∅→∅),[22.18396]→[22.636462:636463](∅→∅),[22.636462]→[22.636462:636463](∅→∅),[22.636463]→[22.18397:18490](∅→∅)
fn commit(self) -> Result<(), Self::Error>;fn put_partials(&mut self, k: &str, e: Position<ChangeId>) -> Result<bool, Self::Error>;fn commit(self) -> Result<(), Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1400
fn del_partials(&mut self, k: &str, e: Option<Position<ChangeId>>)-> Result<bool, Self::Error>;fn open_or_create_remote(&mut self, name: &str) -> Result<RemoteRef<Self>, Self::GraphError>; - edit in libpijul/src/pristine/mod.rs at line 1402[22.638144]→[22.18601:18694](∅→∅),[22.18694]→[22.638239:638240](∅→∅),[22.638239]→[22.638239:638240](∅→∅)
fn open_or_create_remote(&mut self, name: &str) -> Result<RemoteRef<Self>, Self::Error>; - replacement in libpijul/src/pristine/mod.rs at line 1407
) -> Result<bool, Self::Error>;) -> Result<bool, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1409
fn del_remote(&mut self, remote: &mut RemoteRef<Self>, k: u64) -> Result<bool, Self::Error>;fn del_remote(&mut self,remote: &mut RemoteRef<Self>,k: u64,) -> Result<bool, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1415
fn drop_remote(&mut self, remote: RemoteRef<Self>) -> Result<bool, Self::Error>;fn drop_remote(&mut self, remote: RemoteRef<Self>) -> Result<bool, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1417
fn drop_named_remote(&mut self, remote: &str) -> Result<bool, Self::Error>;fn drop_named_remote(&mut self, remote: &str) -> Result<bool, Self::GraphError>; - replacement in libpijul/src/pristine/mod.rs at line 1420
pub(crate) fn put_inodes_with_rev<T: MutTxnT>(pub(crate) fn put_inodes_with_rev<T: TreeMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1424
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::TreeError>> { - replacement in libpijul/src/pristine/mod.rs at line 1430
pub(crate) fn del_inodes_with_rev<T: MutTxnT>(pub(crate) fn del_inodes_with_rev<T: TreeMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1434
) -> Result<bool, T::Error> {) -> Result<bool, TxnErr<T::TreeError>> { - replacement in libpijul/src/pristine/mod.rs at line 1443
pub(crate) fn put_tree_with_rev<T: MutTxnT>(pub(crate) fn put_tree_with_rev<T: TreeMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1447
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::TreeError>> { - replacement in libpijul/src/pristine/mod.rs at line 1453
pub(crate) fn del_tree_with_rev<T: MutTxnT>(pub(crate) fn del_tree_with_rev<T: TreeMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1457
) -> Result<bool, T::Error> {) -> Result<bool, TxnErr<T::TreeError>> { - replacement in libpijul/src/pristine/mod.rs at line 1470
pub(crate) fn split_block<T: MutTxnT>(pub(crate) fn split_block<T: GraphMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1472
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 1475
) -> Result<(), T::Error> {trace!("key = {:?}, pos = {:?}", key, pos);let adjacent: Vec<_> = txn.cursor_graph(&channel.graph, Some((key, None))).take_while(|&(k, _)| k <= key).filter(|&(k, _)| k == key).map(|(_, e)| e).collect();debug!("adjacent {:?}", adjacent);for chi in adjacent {buf: &mut Vec<Edge>,) -> Result<(), TxnErr<T::GraphError>> {for x in txn.cursor_graph(graph, Some((key, None)))? {let (k, v) = x?;if k > key {break;} else if k < key {continue;}buf.push(v)}for chi in buf.drain(..) { - replacement in libpijul/src/pristine/mod.rs at line 1491
channel,graph, - replacement in libpijul/src/pristine/mod.rs at line 1507
txn.del_graph(&mut channel.graph, key, Some(chi))?;txn.del_graph(graph, key, Some(chi))?; - replacement in libpijul/src/pristine/mod.rs at line 1509
&mut channel.graph,graph, - replacement in libpijul/src/pristine/mod.rs at line 1529
pub(crate) fn del_graph_with_rev<T: MutTxnT>(pub(crate) fn del_graph_with_rev<T: GraphMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1531
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 1536
) -> Result<bool, T::Error> {) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 1543
&mut channel.graph,graph, - replacement in libpijul/src/pristine/mod.rs at line 1555
&mut channel.graph,graph, - replacement in libpijul/src/pristine/mod.rs at line 1570
pub(crate) fn put_graph_with_rev<T: MutTxnT>(pub(crate) fn put_graph_with_rev<T: GraphMutTxnT>( - replacement in libpijul/src/pristine/mod.rs at line 1572
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/pristine/mod.rs at line 1577
) -> Result<bool, T::Error> {) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 1587
&mut channel.graph,graph, - replacement in libpijul/src/pristine/mod.rs at line 1599
&mut channel.graph,graph, - replacement in libpijul/src/pristine/mod.rs at line 1614
pub(crate) fn register_change<T: MutTxnT>(pub(crate) fn register_change<T: GraphMutTxnT + DepsMutTxnT<DepsError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/pristine/mod.rs at line 1621
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/mod.rs at line 1627
let dep_internal = txn.get_internal(*dep).unwrap();let dep_internal = txn.get_internal(*dep)?.unwrap(); - edit in libpijul/src/pristine/mod.rs at line 1649
let change = if let Some(c) = inode.change {txn.get_internal(c)?.unwrap_or(internal)} else {internal}; - replacement in libpijul/src/pristine/mod.rs at line 1655
change: inode.change.and_then(|change| txn.get_internal(change)).unwrap_or(internal),change, - replacement in libpijul/src/pristine/mod.rs at line 1676
pub fn check_tree_inodes<T: TxnT>(txn: &T, channel: &Channel<T>) {pub fn check_tree_inodes<T: GraphTxnT + TreeTxnT>(txn: &T, channel: &T::Graph) { - replacement in libpijul/src/pristine/mod.rs at line 1678
for (inode, vertex) in txn.iter_inodes() {for x in txn.iter_inodes().unwrap() {let (inode, vertex) = x.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 1682
if let Some(next) = txn.get_revtree(inode_, None) {if let Some(next) = txn.get_revtree(inode_, None).unwrap() { - replacement in libpijul/src/pristine/mod.rs at line 1688[22.1006]→[22.1006:1067](∅→∅),[22.1067]→[21.7742:7816](∅→∅),[21.7816]→[22.1275:1334](∅→∅),[22.1275]→[22.1275:1334](∅→∅)
if !is_alive(txn, &channel, vertex.inode_vertex()) {for e in iter_adj_all(txn, &channel, vertex.inode_vertex()) {error!("{:?} {:?} {:?}", inode, vertex, e)if !is_alive(txn, &channel, vertex.inode_vertex()).unwrap() {for e in iter_adj_all(txn, channel, vertex.inode_vertex()).unwrap() {error!("{:?} {:?} {:?}", inode, vertex, e.unwrap()) - replacement in libpijul/src/pristine/mod.rs at line 1705
for (id, inode) in txn.iter_tree(id0, None) {for x in txn.iter_tree(id0, None).unwrap() {let (id, inode) = x.unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 1714
pub fn check_alive_debug<T: TxnT, C: crate::changestore::ChangeStore>(pub fn check_alive_debug<T: ChannelTxnT, C: crate::changestore::ChangeStore>( - replacement in libpijul/src/pristine/mod.rs at line 1717
channel: &ChannelRef<T>,channel: &Channel<T>, - replacement in libpijul/src/pristine/mod.rs at line 1720
let (alive, reachable) = crate::pristine::check_alive(txn, &channel);let (alive, reachable) = crate::pristine::check_alive(txn, &channel.graph); - replacement in libpijul/src/pristine/mod.rs at line 1737
let (path, _) = crate::fs::find_path(changes, txn, &channel.borrow(), true, file_).unwrap();let (path, _) = crate::fs::find_path(changes, txn, channel, true, file_).unwrap(); - replacement in libpijul/src/pristine/mod.rs at line 1746
let graph = crate::alive::retrieve::retrieve(txn, &channel.borrow(), file_);graph.debug(changes, txn, &channel.borrow(), false, false, &mut f)?;let graph = crate::alive::retrieve::retrieve(txn, &channel.graph, file_).unwrap();graph.debug(changes, txn, &channel.graph, false, false, &mut f)?; - replacement in libpijul/src/pristine/mod.rs at line 1750
let channel = channel.borrow();debug_root(txn, &channel, file.unwrap(), &mut f, false)?;debug_root(txn, &channel.graph, file.unwrap(), &mut f, false)?; - edit in libpijul/src/pristine/channel_dump.rs at line 10
}impl<T: std::error::Error + 'static> std::convert::From<TxnErr<T>> for ChannelDumpError<T> {fn from(e: TxnErr<T>) -> Self {ChannelDumpError::Txn(e.0)} - replacement in libpijul/src/pristine/channel_dump.rs at line 18
enum DumpChannelState<T: super::TxnT, RT: std::ops::Deref<Target = T>> {enum DumpChannelState<T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,RT: std::ops::Deref<Target = T>,> { - replacement in libpijul/src/pristine/channel_dump.rs at line 35
T: super::TxnT,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>, - replacement in libpijul/src/pristine/channel_dump.rs at line 71
T: super::TxnT,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>, - replacement in libpijul/src/pristine/channel_dump.rs at line 76
type Item = DumpChunk;type Item = Result<DumpChunk, TxnErr<T::GraphError>>; - replacement in libpijul/src/pristine/channel_dump.rs at line 86
while let Some((h, dep)) = deps.next() {while let Some(x) = deps.next() {let (h, dep) = match x {Ok(x) => x,Err(e) => return Some(Err(e)),}; - replacement in libpijul/src/pristine/channel_dump.rs at line 104
return Some(DumpChunk::Dep(msg));return Some(Ok(DumpChunk::Dep(msg))); - replacement in libpijul/src/pristine/channel_dump.rs at line 107
if let Some((_, (h, _))) = log.next() {let deps = Some(T::iter_dep_ref(self.txn.clone(), h));if let Some(x) = log.next() {let (_, (h, _)) = match x {Ok(e) => e,Err(e) => return Some(Err(e)),};let deps = match T::iter_dep_ref(self.txn.clone(), h) {Ok(e) => Some(e),Err(e) => return Some(Err(e)),}; - replacement in libpijul/src/pristine/channel_dump.rs at line 121
let ext = self.txn.get_external(h).unwrap();let ext = match self.txn.get_external(h) {Ok(ext) => ext.unwrap(),Err(e) => return Some(Err(e)),}; - replacement in libpijul/src/pristine/channel_dump.rs at line 129
return Some(DumpChunk::Hash(msg));return Some(Ok(DumpChunk::Hash(msg))); - replacement in libpijul/src/pristine/channel_dump.rs at line 132
graph: iter_graph_ref(graph: match iter_graph_ref( - replacement in libpijul/src/pristine/channel_dump.rs at line 137
),) {Ok(x) => x,Err(e) => return Some(Err(e)),}, - replacement in libpijul/src/pristine/channel_dump.rs at line 151
if let Some((v, e)) = graph.next() {if let Some(x) = graph.next() {let (v, e) = match x {Err(e) => return Some(Err(e)),Ok(x) => x,}; - replacement in libpijul/src/pristine/channel_dump.rs at line 180
return Some(DumpChunk::Edge(buf));return Some(Ok(DumpChunk::Edge(buf))); - replacement in libpijul/src/pristine/channel_dump.rs at line 193
return Some(DumpChunk::End(buf));return Some(Ok(DumpChunk::End(buf))); - replacement in libpijul/src/pristine/channel_dump.rs at line 202
return Some(DumpChunk::End(buf));return Some(Ok(DumpChunk::End(buf))); - replacement in libpijul/src/pristine/channel_dump.rs at line 212
T: super::TxnT,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>, - replacement in libpijul/src/pristine/channel_dump.rs at line 218
) -> DumpChannel<T, RT, C> {DumpChannel {) -> Result<DumpChannel<T, RT, C>, TxnErr<T::GraphError>> {Ok(DumpChannel { - replacement in libpijul/src/pristine/channel_dump.rs at line 221
log: changeid_log_ref(txn.clone(), &channel, 0),log: changeid_log_ref(txn.clone(), &channel, 0)?, - replacement in libpijul/src/pristine/channel_dump.rs at line 227
}}) - replacement in libpijul/src/pristine/channel_dump.rs at line 230
pub struct ChannelFromDump<'a, T: super::MutTxnT> {pub struct ChannelFromDump<'a, T: ChannelMutTxnT> { - replacement in libpijul/src/pristine/channel_dump.rs at line 322
impl<'a, T: super::MutTxnT> ChannelFromDump<'a, T> {impl<'a, T: ChannelMutTxnT + DepsMutTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>>ChannelFromDump<'a, T>{ - replacement in libpijul/src/pristine/channel_dump.rs at line 341
pub fn read(&mut self, bytes: &[u8]) -> Result<bool, T::Error> {pub fn read(&mut self, bytes: &[u8]) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/channel_dump.rs at line 350
if let Some(hh) = self.txn.get_external(p) {if let Some(hh) = self.txn.get_external(p)? { - replacement in libpijul/src/pristine/channel_dump.rs at line 352
let pp = make_changeid(self.txn, &hash);let pp = make_changeid(self.txn, &hash)?; - replacement in libpijul/src/pristine/channel_dump.rs at line 422
fn finish_channel<T: super::MutTxnT>(fn finish_channel<T: super::ChannelMutTxnT>( - replacement in libpijul/src/pristine/channel_dump.rs at line 427
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/pristine/block.rs at line 4
#[error("Block error: {:?}", block)]pub struct BlockError {block: Position<ChangeId>,pub enum BlockError<T: std::error::Error + 'static> {#[error(transparent)]Txn(T),#[error("Block error: {:?}", block)]Block { block: Position<ChangeId> },}impl<T: std::error::Error + 'static> std::convert::From<TxnErr<T>> for BlockError<T> {fn from(e: TxnErr<T>) -> Self {BlockError::Txn(e.0)} - replacement in libpijul/src/pristine/block.rs at line 18
pub(crate) fn find_block<'db, 'txn: 'db, T: TxnT>(pub(crate) fn find_block<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/block.rs at line 20
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/block.rs at line 22
) -> Result<Vertex<ChangeId>, BlockError> {) -> Result<Vertex<ChangeId>, BlockError<T::GraphError>> { - replacement in libpijul/src/pristine/block.rs at line 32
let mut cursor = txn.cursor_graph(&channel.graph, Some((key, None)));let mut k = if let Some((k, _)) = cursor.next() {klet mut cursor = txn.cursor_graph(graph, Some((key, None)))?;let mut k = if let Some(k) = cursor.next() {k?.0 - replacement in libpijul/src/pristine/block.rs at line 36
return Err(BlockError { block: p });return Err(BlockError::Block { block: p }); - replacement in libpijul/src/pristine/block.rs at line 45
if let Some((k_, _)) = cursor.prev() {k = k_if let Some(k_) = cursor.prev() {k = k_?.0 - replacement in libpijul/src/pristine/block.rs at line 58
return Err(BlockError { block: p });return Err(BlockError::Block { block: p }); - replacement in libpijul/src/pristine/block.rs at line 60
if let Some((k_, _)) = cursor.next() {k = k_if let Some(k_) = cursor.next() {k = k_?.0 - replacement in libpijul/src/pristine/block.rs at line 67
Err(BlockError { block: p })Err(BlockError::Block { block: p }) - replacement in libpijul/src/pristine/block.rs at line 71
pub(crate) fn find_block_end<'db, 'txn: 'db, T: TxnT>(pub(crate) fn find_block_end<'db, 'txn: 'db, T: GraphTxnT>( - replacement in libpijul/src/pristine/block.rs at line 73
channel: &'db Channel<T>,graph: &'db T::Graph, - replacement in libpijul/src/pristine/block.rs at line 75
) -> Result<Vertex<ChangeId>, BlockError> {) -> Result<Vertex<ChangeId>, BlockError<T::GraphError>> { - replacement in libpijul/src/pristine/block.rs at line 85
let mut cursor = txn.cursor_graph(&channel.graph, Some((key, None)));let mut k = if let Some((k, _)) = cursor.next() {klet mut cursor = txn.cursor_graph(graph, Some((key, None)))?;let mut k = if let Some(k) = cursor.next() {k?.0 - replacement in libpijul/src/pristine/block.rs at line 89
return Err(BlockError { block: p });return Err(BlockError::Block { block: p }); - replacement in libpijul/src/pristine/block.rs at line 106
if let Some((k_, _)) = cursor.prev() {k = k_if let Some(k_) = cursor.prev() {k = k_?.0 - replacement in libpijul/src/pristine/block.rs at line 116
if let Some((k_, _)) = cursor.next() {k = k_if let Some(k_) = cursor.next() {k = k_?.0 - replacement in libpijul/src/pristine/block.rs at line 126
Err(BlockError { block: p })Err(BlockError::Block { block: p }) - replacement in libpijul/src/output/output.rs at line 37
) -> Result<Vec<Conflict>, OutputError<P::Error, T::Error, R::Error>> {) -> Result<Vec<Conflict>, OutputError<P::Error, T::GraphError, R::Error>> { - replacement in libpijul/src/output/output.rs at line 51
T: MutTxnT,T: TreeMutTxnT + ChannelTxnT + GraphMutTxnT<GraphError = <T as TreeTxnT>::TreeError>, - replacement in libpijul/src/output/output.rs at line 63
) -> Result<Vec<Conflict>, OutputError<P::Error, T::Error, R::Error>> {) -> Result<Vec<Conflict>, OutputError<P::Error, T::TreeError, R::Error>> { - replacement in libpijul/src/output/output.rs at line 71
channel,&channel.graph, - replacement in libpijul/src/output/output.rs at line 80
let dead = collect_dead_files(txn, channel, pending_change_id, Inode::ROOT);let dead = collect_dead_files(txn, &channel.graph, pending_change_id, Inode::ROOT)?; - replacement in libpijul/src/output/output.rs at line 122
if let Some((inode, _)) = output_item.inode {let output_item_inode =if let Some(inode) = txn.get_revinodes(output_item.pos, None)? {Some((inode, txn.get_inodes(inode, None)?.unwrap()))} else {None};if let Some((inode, _)) = output_item_inode { - edit in libpijul/src/output/output.rs at line 159
output_item_inode, - replacement in libpijul/src/output/output.rs at line 165
let dead = collect_dead_files(txn, channel, pending_change_id, inode);let dead = collect_dead_files(txn, &channel.graph, pending_change_id, inode)?; - replacement in libpijul/src/output/output.rs at line 176
channel,&channel.graph, - replacement in libpijul/src/output/output.rs at line 182
)?)?; - replacement in libpijul/src/output/output.rs at line 224
fn move_or_create<T: MutTxnT, R: WorkingCopy, C: ChangeStore>(fn move_or_create<T: TreeMutTxnT, R: WorkingCopy, C: ChangeStore>( - edit in libpijul/src/output/output.rs at line 228
output_item_inode: Option<(Inode, Position<ChangeId>)>, - replacement in libpijul/src/output/output.rs at line 232
) -> Result<Inode, OutputError<C::Error, T::Error, R::Error>> {) -> Result<Inode, OutputError<C::Error, T::TreeError, R::Error>> { - replacement in libpijul/src/output/output.rs at line 240
if let Some((inode, _)) = output_item.inode {if let Some((inode, _)) = output_item_inode { - replacement in libpijul/src/output/output.rs at line 244
if let Some(ref current_name) = inode_filename(txn, inode) {if let Some(ref current_name) = inode_filename(txn, inode)? { - replacement in libpijul/src/output/output.rs at line 247
let parent = txn.get_revtree(inode, None).unwrap().to_owned();let parent = txn.get_revtree(inode, None)?.unwrap().to_owned(); - replacement in libpijul/src/output/output.rs at line 249
del_tree_with_rev(txn, parent.as_file_id(), inode).map_err(PristineOutputError::Txn)?;del_tree_with_rev(txn, parent.as_file_id(), inode)?; - replacement in libpijul/src/output/output.rs at line 267
if let Some(inode) = txn.get_tree(file_id_, None) {if let Some(inode) = txn.get_tree(file_id_, None)? { - replacement in libpijul/src/output/output.rs at line 271
put_inodes_with_rev(txn, inode, output_item.pos).map_err(PristineOutputError::Txn)?;put_tree_with_rev(txn, file_id_, inode).map_err(PristineOutputError::Txn)?;put_inodes_with_rev(txn, inode, output_item.pos)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 276
if let Some(inode) = txn.get_tree(file_id_, None) {if let Some(inode) = txn.get_tree(file_id_, None)? { - replacement in libpijul/src/output/output.rs at line 280
put_inodes_with_rev(txn, inode, output_item.pos).map_err(PristineOutputError::Txn)?;put_tree_with_rev(txn, file_id_, inode).map_err(PristineOutputError::Txn)?;put_inodes_with_rev(txn, inode, output_item.pos)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 285
if let Some(inode) = txn.get_tree(file_id_, None) {if let Some(inode) = txn.get_tree(file_id_, None)? { - replacement in libpijul/src/output/output.rs at line 288
let inode = create_new_inode(txn);let inode = create_new_inode(txn)?; - replacement in libpijul/src/output/output.rs at line 293
put_inodes_with_rev(txn, inode, output_item.pos).map_err(PristineOutputError::Txn)?;put_tree_with_rev(txn, file_id_, inode).map_err(PristineOutputError::Txn)?;put_inodes_with_rev(txn, inode, output_item.pos)?;put_tree_with_rev(txn, file_id_, inode)?; - replacement in libpijul/src/output/output.rs at line 300
txn.put_tree(path_id.as_file_id(), inode).map_err(PristineOutputError::Txn)?;txn.put_tree(path_id.as_file_id(), inode)?; - replacement in libpijul/src/output/output.rs at line 306
fn output_file<T: MutTxnT, P: ChangeStore, W: WorkingCopy>(fn output_file<T: ChannelTxnT + GraphMutTxnT, P: ChangeStore, W: WorkingCopy>( - replacement in libpijul/src/output/output.rs at line 313[22.683171]→[22.22483:22544](∅→∅),[22.22544]→[22.683204:683261](∅→∅),[22.683204]→[22.683204:683261](∅→∅)
) -> Result<(), OutputError<P::Error, T::Error, W::Error>> {let mut l = retrieve(txn, channel, output_item.pos);) -> Result<(), OutputError<P::Error, T::GraphError, W::Error>> {let mut l = retrieve(txn, &channel.graph, output_item.pos)?; - replacement in libpijul/src/output/output.rs at line 321
let dest = find_block(txn, &channel, edge.dest).unwrap();let dest = find_block(txn, &channel.graph, edge.dest).unwrap(); - replacement in libpijul/src/output/output.rs at line 323
del_graph_with_rev(txn, channel, edge.flag, vertex, dest, edge.introduced_by).map_err(PristineOutputError::Txn)?;del_graph_with_rev(txn,&mut channel.graph,edge.flag,vertex,dest,edge.introduced_by,)?; - replacement in libpijul/src/output/output.rs at line 335
fn collect_dead_files<T: MutTxnT>(fn collect_dead_files<T: TreeMutTxnT + GraphTxnT<GraphError = <T as TreeTxnT>::TreeError>>( - replacement in libpijul/src/output/output.rs at line 337
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/output/output.rs at line 340
) -> HashMap<OwnedPathId, (Inode, Option<String>)> {) -> Result<HashMap<OwnedPathId, (Inode, Option<String>)>, TxnErr<T::GraphError>> { - replacement in libpijul/src/output/output.rs at line 346
for (id, inode_) in txn.iter_tree(for x in txn.iter_tree( - replacement in libpijul/src/output/output.rs at line 352
) {)? {let (id, inode_) = x?; - replacement in libpijul/src/output/output.rs at line 360
if let Some(vertex) = txn.get_inodes(inode_, None) {if let Some(vertex) = txn.get_inodes(inode_, None)? { - replacement in libpijul/src/output/output.rs at line 362
&& !is_alive(txn, channel, vertex.inode_vertex())&& !is_alive(txn, channel, vertex.inode_vertex())? - replacement in libpijul/src/output/output.rs at line 368
dead.insert(id.to_owned(), (inode_, inode_filename(txn, inode_)));dead.insert(id.to_owned(), (inode_, inode_filename(txn, inode_)?)); - replacement in libpijul/src/output/output.rs at line 377
deadOk(dead) - replacement in libpijul/src/output/output.rs at line 380
fn kill_dead_files<T: MutTxnT, W: WorkingCopy, C: ChangeStore>(fn kill_dead_files<T: TreeMutTxnT, W: WorkingCopy, C: ChangeStore>( - replacement in libpijul/src/output/output.rs at line 384
) -> Result<(), OutputError<C::Error, T::Error, W::Error>> {) -> Result<(), OutputError<C::Error, T::TreeError, W::Error>> { - replacement in libpijul/src/output/output.rs at line 387[22.685693]→[22.22935:23031](∅→∅),[22.2703]→[22.685885:685946](∅→∅),[22.23031]→[22.685885:685946](∅→∅),[22.685885]→[22.685885:685946](∅→∅)
del_tree_with_rev(txn, fileid.as_file_id(), *inode).map_err(PristineOutputError::Txn)?;if let Some(vertex) = txn.get_inodes(*inode, None) {del_tree_with_rev(txn, fileid.as_file_id(), *inode)?;if let Some(vertex) = txn.get_inodes(*inode, None)? { - replacement in libpijul/src/output/output.rs at line 390
del_inodes_with_rev(txn, *inode, vertex).map_err(PristineOutputError::Txn)?;del_inodes_with_rev(txn, *inode, vertex)?; - edit in libpijul/src/output/mod.rs at line 46
}}impl<C: std::error::Error, T: std::error::Error + 'static> From<TxnErr<T>>for PristineOutputError<C, T>{fn from(e: TxnErr<T>) -> Self {PristineOutputError::Txn(e.0)}}impl<C: std::error::Error, T: std::error::Error + 'static, W: std::error::Error> From<TxnErr<T>>for OutputError<C, T, W>{fn from(e: TxnErr<T>) -> Self {OutputError::Pristine(e.into()) - replacement in libpijul/src/output/mod.rs at line 66
pub enum FileError<ChangestoreError: std::error::Error + 'static> {pub enum FileError<ChangestoreError: std::error::Error + 'static, T: std::error::Error + 'static> { - edit in libpijul/src/output/mod.rs at line 69
#[error(transparent)]Txn(T), - replacement in libpijul/src/output/mod.rs at line 75
impl<C: std::error::Error, T: std::error::Error + 'static> From<FileError<C>>impl<C: std::error::Error, T: std::error::Error + 'static> From<FileError<C, T>> - replacement in libpijul/src/output/mod.rs at line 78
fn from(e: FileError<C>) -> Self {fn from(e: FileError<C, T>) -> Self { - edit in libpijul/src/output/mod.rs at line 82
FileError::Txn(t) => PristineOutputError::Txn(t), - edit in libpijul/src/output/mod.rs at line 87
impl<C: std::error::Error, T: std::error::Error + 'static> From<TxnErr<T>> for FileError<C, T> {fn from(e: TxnErr<T>) -> Self {FileError::Txn(e.0)}} - edit in libpijul/src/output/mod.rs at line 99
inode: Option<(Inode, Position<ChangeId>)>, - replacement in libpijul/src/output/mod.rs at line 102
fn collect_children<T: TxnT, P: ChangeStore>(fn collect_children<T: GraphTxnT, P: ChangeStore>( - replacement in libpijul/src/output/mod.rs at line 105
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/output/mod.rs at line 111
) -> Result<(), PristineOutputError<P::Error, T::Error>> {) -> Result<(), PristineOutputError<P::Error, T::GraphError>> { - replacement in libpijul/src/output/mod.rs at line 115
&channel,channel, - edit in libpijul/src/output/mod.rs at line 117[22.686992]→[22.686992:687102](∅→∅),[22.687102]→[22.56050:56091](∅→∅),[22.56091]→[22.687134:687186](∅→∅),[22.687134]→[22.687134:687186](∅→∅)
EdgeFlags::empty(),EdgeFlags::all(),) {debug!("inode_pos, e = {:?}", e);}for e in iter_adjacent(txn,&channel,inode_pos.inode_vertex(), - replacement in libpijul/src/output/mod.rs at line 119[22.687279]→[22.687279:687287](∅→∅),[22.687350]→[22.687350:687411](∅→∅),[22.687411]→[22.56092:56162](∅→∅)
) {// This unwrap is ok since e.dest is in the channel.let name_vertex = find_block(txn, &channel, e.dest).unwrap();)? {let e = e?;let name_vertex = find_block(txn, channel, e.dest).unwrap(); - replacement in libpijul/src/output/mod.rs at line 124
.get_contents(|h| txn.get_external(h), name_vertex, &mut name_buf).map_err(|e| PristineOutputError::Changestore(e))?;.get_contents(|h| txn.get_external(h).unwrap(), name_vertex, &mut name_buf).map_err(PristineOutputError::Changestore)?; - edit in libpijul/src/output/mod.rs at line 140[22.688203]→[22.56163:56333](∅→∅),[22.56333]→[22.688301:688346](∅→∅),[22.688301]→[22.688301:688346](∅→∅)
for e in iter_adjacent(txn,&channel,name_vertex,EdgeFlags::empty(),EdgeFlags::all(),) {debug!("e = {:?}", e);} - replacement in libpijul/src/output/mod.rs at line 142
&channel,channel, - replacement in libpijul/src/output/mod.rs at line 146
))? - replacement in libpijul/src/output/mod.rs at line 149
childchild? - replacement in libpijul/src/output/mod.rs at line 151
let child = iter_adjacent(let mut edge = None;for e in iter_adjacent( - replacement in libpijul/src/output/mod.rs at line 154
&channel,channel, - replacement in libpijul/src/output/mod.rs at line 158[22.56721]→[22.688583:688597](∅→∅),[22.688583]→[22.688583:688597](∅→∅),[22.688597]→[22.4898:4957](∅→∅),[22.4957]→[22.56784:56807](∅→∅),[22.688617]→[22.56784:56807](∅→∅),[22.56807]→[22.688897:688898](∅→∅),[22.688897]→[22.688897:688898](∅→∅)
).find(|e| !e.flag.contains(EdgeFlags::PARENT)).unwrap();)? {let e = e?;if !e.flag.contains(EdgeFlags::PARENT) {edge = Some(e);break;}}let e = edge.unwrap(); - replacement in libpijul/src/output/mod.rs at line 167
debug_root(txn, channel, child.dest.inode_vertex(), &mut f, false).unwrap();debug_root(txn, channel, e.dest.inode_vertex(), &mut f, false).unwrap(); - edit in libpijul/src/output/mod.rs at line 172
let child_inode = txn.get_revinodes(child.dest, None).map(|inode| (inode, txn.get_inodes(inode, None).unwrap()));debug!("child_inode: {:?}", child_inode); - replacement in libpijul/src/output/mod.rs at line 180
inode: child_inode,is_zombie: is_zombie(txn, channel, child.dest),is_zombie: is_zombie(txn, channel, child.dest)?, - replacement in libpijul/src/output/mod.rs at line 187
fn is_zombie<T: TxnT>(txn: &T, channel: &Channel<T>, pos: Position<ChangeId>) -> bool {fn is_zombie<T: GraphTxnT>(txn: &T,channel: &T::Graph,pos: Position<ChangeId>,) -> Result<bool, TxnErr<T::GraphError>> { - replacement in libpijul/src/output/mod.rs at line 193[22.689916]→[22.56895:56973](∅→∅),[22.56973]→[22.689993:690028](∅→∅),[22.689993]→[22.689993:690028](∅→∅)
iter_adjacent(txn, &channel, pos.inode_vertex(), f, f | EdgeFlags::BLOCK).next().is_some()if let Some(n) =iter_adjacent(txn, channel, pos.inode_vertex(), f, f | EdgeFlags::BLOCK)?.next(){n?;Ok(true)} else {Ok(false)} - edit in libpijul/src/output/archive.rs at line 86
#[error(transparent)]P(P), - replacement in libpijul/src/output/archive.rs at line 97
File(#[from] crate::output::FileError<P>),File(#[from] crate::output::FileError<P, T>), - replacement in libpijul/src/output/archive.rs at line 102
pub(crate) fn archive<'a, T: TxnT, P: ChangeStore, I: Iterator<Item = &'a str>, A: Archive>(impl<P: std::error::Error + 'static,T: std::error::Error + 'static,A: std::error::Error + 'static,> std::convert::From<TxnErr<T>> for ArchiveError<P, T, A>{fn from(e: TxnErr<T>) -> Self {ArchiveError::Txn(e.0)}}pub(crate) fn archive<'a,T: ChannelTxnT,P: ChangeStore,I: Iterator<Item = &'a str>,A: Archive,>( - replacement in libpijul/src/output/archive.rs at line 125
) -> Result<Vec<Conflict>, ArchiveError<P::Error, T::Error, A::Error>> {) -> Result<Vec<Conflict>, ArchiveError<P::Error, T::GraphError, A::Error>> { - replacement in libpijul/src/output/archive.rs at line 134
&channel,&channel.graph, - replacement in libpijul/src/output/archive.rs at line 175
if let Some((inode, _)) = output_item.inode {if !done_inodes.insert(inode) {debug!("inode already visited: {:?} {:?}", a, inode);continue;}if !done_inodes.insert(output_item.pos) {debug!("inode already visited: {:?} {:?}", a, output_item.pos);continue; - replacement in libpijul/src/output/archive.rs at line 195
&channel,&channel.graph, - replacement in libpijul/src/output/archive.rs at line 201
)?)?; - replacement in libpijul/src/output/archive.rs at line 203
let mut l = crate::alive::retrieve(txn, &channel, output_item.pos);let mut l = crate::alive::retrieve(txn, &channel.graph, output_item.pos)?; - replacement in libpijul/src/missing_context.rs at line 13
Block(#[from] BlockError),Block(#[from] BlockError<TxnError>), - replacement in libpijul/src/missing_context.rs at line 15
Inconsistent(#[from] InconsistentChange),Inconsistent(#[from] InconsistentChange<TxnError>),}impl<T: std::error::Error + 'static> std::convert::From<TxnErr<T>> for MissingError<T> {fn from(e: TxnErr<T>) -> Self {MissingError::Txn(e.0)} - replacement in libpijul/src/missing_context.rs at line 25
pub(crate) fn load_graph<T: TxnT>(pub(crate) fn load_graph<T: GraphTxnT>( - replacement in libpijul/src/missing_context.rs at line 28
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/missing_context.rs at line 30
) -> Result<Option<&(Graph, HashMap<Vertex<ChangeId>, VertexId>)>, InconsistentChange> {) -> Result<Option<&(Graph, HashMap<Vertex<ChangeId>, VertexId>)>,InconsistentChange<T::GraphError>,> { - replacement in libpijul/src/missing_context.rs at line 39
change: if let Some(i) = txn.get_internal(change) {change: if let Some(i) = txn.get_internal(change)? { - replacement in libpijul/src/missing_context.rs at line 42
return Err(InconsistentChange {});return Err(InconsistentChange::UndeclaredDep); - replacement in libpijul/src/missing_context.rs at line 46
let mut graph = crate::alive::retrieve(txn, channel, pos);let mut graph = crate::alive::retrieve(txn, channel, pos)?; - replacement in libpijul/src/missing_context.rs at line 63
T: MutTxnT,T: GraphMutTxnT, - replacement in libpijul/src/missing_context.rs at line 67
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 73
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 90
repair_regular_up(txn, channel, &alive, d, EdgeFlags::PSEUDO).map_err(MissingError::Txn)?;repair_regular_up(txn, channel, &alive, d, EdgeFlags::PSEUDO)?; - replacement in libpijul/src/missing_context.rs at line 95
fn repair_regular_up<T: MutTxnT>(fn repair_regular_up<T: GraphMutTxnT>( - replacement in libpijul/src/missing_context.rs at line 97
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 101
) -> Result<(), T::Error> {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 119
T: MutTxnT,T: GraphMutTxnT, - replacement in libpijul/src/missing_context.rs at line 123
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 128
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 148
put_graph_with_rev(txn, channel, EdgeFlags::PSEUDO, d, desc, ChangeId::ROOT).map_err(MissingError::Txn)?;put_graph_with_rev(txn, channel, EdgeFlags::PSEUDO, d, desc, ChangeId::ROOT)?; - replacement in libpijul/src/missing_context.rs at line 154
pub(crate) fn repair_context_nondeleted<T: MutTxnT, K>(pub(crate) fn repair_context_nondeleted<T: GraphMutTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 156
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 162
) -> Result<(), MissingError<T::Error>>) -> Result<(), MissingError<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 175
if deleted_by_unknown(txn, channel, source, change_id, &mut known) {if deleted_by_unknown(txn, channel, source, change_id, &mut known)? { - replacement in libpijul/src/missing_context.rs at line 183
fn reconnect_target_up<T: MutTxnT>(fn reconnect_target_up<T: GraphMutTxnT>( - replacement in libpijul/src/missing_context.rs at line 185
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 190
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 192
for v in iter_deleted_parents(txn, channel, target) {for v in iter_deleted_parents(txn, channel, target)? {let v = v?; - replacement in libpijul/src/missing_context.rs at line 211
fn reconnect_target_down<T: MutTxnT, K>(fn reconnect_target_down<T: GraphMutTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 213
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 219
) -> Result<(), MissingError<T::Error>>) -> Result<(), MissingError<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 225
for v in iter_adj_all(txn, channel, target) {for v in iter_adj_all(txn, channel, target)? {let v = v?; - replacement in libpijul/src/missing_context.rs at line 237
let intro = txn.get_external(v.introduced_by).unwrap();let intro = txn.get_external(v.introduced_by)?.unwrap(); - replacement in libpijul/src/missing_context.rs at line 249
fn deleted_by_unknown<T: TxnT, K>(fn deleted_by_unknown<T: GraphTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 251
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/missing_context.rs at line 255
) -> bool) -> Result<bool, TxnErr<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 260
for v in iter_deleted_parents(txn, channel, source) {for v in iter_deleted_parents(txn, channel, source)? {let v = v?; - replacement in libpijul/src/missing_context.rs at line 265
if v.introduced_by == change_id || known(txn.get_external(v.introduced_by).unwrap()) {if v.introduced_by == change_id || known(txn.get_external(v.introduced_by)?.unwrap()) { - replacement in libpijul/src/missing_context.rs at line 267
return false;return Ok(false); - replacement in libpijul/src/missing_context.rs at line 274
deleted_by_unknownOk(deleted_by_unknown) - replacement in libpijul/src/missing_context.rs at line 277
pub(crate) fn repair_context_deleted<T: MutTxnT, K>(pub(crate) fn repair_context_deleted<T: GraphMutTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 279
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 285
) -> Result<(), MissingError<T::Error>>) -> Result<(), MissingError<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 332
) -> Result<&(Graph, HashMap<Vertex<ChangeId>, VertexId>), InconsistentChange> {if let Some(n) = self.0.get(&inode) {Ok(n)} else {Err(InconsistentChange {})}) -> Option<&(Graph, HashMap<Vertex<ChangeId>, VertexId>)> {self.0.get(&inode) - replacement in libpijul/src/missing_context.rs at line 378
fn collect_unknown_children<T: TxnT, K>(fn collect_unknown_children<T: GraphTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 380
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/missing_context.rs at line 385
) where) -> Result<(), TxnErr<T::GraphError>>where - replacement in libpijul/src/missing_context.rs at line 389
for v in iter_alive_children(txn, channel, dest_vertex) {for v in iter_alive_children(txn, channel, dest_vertex)? {let v = v?; - replacement in libpijul/src/missing_context.rs at line 402
if !iter_adjacent(let mut not_del_by_change = true;for e in iter_adjacent( - replacement in libpijul/src/missing_context.rs at line 409[22.58495]→[22.58495:58558](∅→∅),[22.58558]→[22.709088:709098](∅→∅),[22.709088]→[22.709088:709098](∅→∅),[22.709161]→[22.709161:709229](∅→∅)
).any(|e| e.introduced_by == v.introduced_by){let intro = txn.get_external(v.introduced_by).unwrap();)? {let e = e?;if e.introduced_by == v.introduced_by {not_del_by_change = false;break;}}if not_del_by_change {let intro = txn.get_external(v.introduced_by)?.unwrap(); - edit in libpijul/src/missing_context.rs at line 423
Ok(()) - replacement in libpijul/src/missing_context.rs at line 426
fn repair_children_of_deleted<T: MutTxnT, K>(fn repair_children_of_deleted<T: GraphMutTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 428
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 434
) -> Result<(), MissingError<T::Error>>) -> Result<(), MissingError<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 439
collect_unknown_children(txn, channel, ws, dest_vertex, change_id, &mut known);collect_unknown_children(txn, channel, ws, dest_vertex, change_id, &mut known)?; - replacement in libpijul/src/missing_context.rs at line 446
put_graph_with_rev(txn, channel, EdgeFlags::db(), dest_vertex, p, change_id).map_err(MissingError::Txn)?;put_graph_with_rev(txn, channel, EdgeFlags::db(), dest_vertex, p, change_id)?; - replacement in libpijul/src/missing_context.rs at line 451
put_graph_with_rev(txn, channel, EdgeFlags::db(), u, v, change_id).map_err(MissingError::Txn)?;put_graph_with_rev(txn, channel, EdgeFlags::db(), u, v, change_id)?; - replacement in libpijul/src/missing_context.rs at line 457
if is_alive(txn, channel, p) {if is_alive(txn, channel, p)? { - replacement in libpijul/src/missing_context.rs at line 468
pub(crate) fn delete_pseudo_edges<T: MutTxnT>(pub(crate) fn delete_pseudo_edges<T: GraphMutTxnT>( - replacement in libpijul/src/missing_context.rs at line 470
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 472
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 478
if !is_alive(txn, channel, dest_vertex) && !ws.repaired.contains(&dest_vertex) {if !is_alive(txn, channel, dest_vertex)? && !ws.repaired.contains(&dest_vertex) { - replacement in libpijul/src/missing_context.rs at line 481
if !is_alive(txn, channel, p) {if !is_alive(txn, channel, p)? { - replacement in libpijul/src/missing_context.rs at line 484
del_graph_with_rev(txn, channel, e.flag, p, dest_vertex, e.introduced_by).map_err(MissingError::Txn)?;del_graph_with_rev(txn, channel, e.flag, p, dest_vertex, e.introduced_by)?; - replacement in libpijul/src/missing_context.rs at line 488
if !is_alive(txn, channel, p) {if !is_alive(txn, channel, p)? { - replacement in libpijul/src/missing_context.rs at line 490
del_graph_with_rev(txn, channel, e.flag, dest_vertex, p, e.introduced_by).map_err(MissingError::Txn)?;del_graph_with_rev(txn, channel, e.flag, dest_vertex, p, e.introduced_by)?; - replacement in libpijul/src/missing_context.rs at line 498
pub(crate) fn collect_zombie_context<T: MutTxnT, K>(pub(crate) fn collect_zombie_context<T: GraphMutTxnT, K>( - replacement in libpijul/src/missing_context.rs at line 500
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 506
) -> Result<(), MissingError<T::Error>>) -> Result<(), MissingError<T::GraphError>> - replacement in libpijul/src/missing_context.rs at line 524
) {)? {let v = v?; - replacement in libpijul/src/missing_context.rs at line 535
let intro = txn.get_external(v.introduced_by).unwrap();let intro = txn.get_external(v.introduced_by)?.unwrap(); - replacement in libpijul/src/missing_context.rs at line 552
fn zombify<T: MutTxnT>(fn zombify<T: GraphMutTxnT>( - replacement in libpijul/src/missing_context.rs at line 554
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 560
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/missing_context.rs at line 577
).map_err(MissingError::Txn)?;)?; - replacement in libpijul/src/missing_context.rs at line 590
) {)? {let parent = parent?; - replacement in libpijul/src/missing_context.rs at line 603
put_graph_with_rev(txn, channel, flag, parent_dest, v, change_id).map_err(MissingError::Txn)?;put_graph_with_rev(txn, channel, flag, parent_dest, v, change_id)?; - replacement in libpijul/src/missing_context.rs at line 609
pub(crate) fn repair_parents_of_deleted<T: MutTxnT>(pub(crate) fn repair_parents_of_deleted<T: GraphMutTxnT>( - replacement in libpijul/src/missing_context.rs at line 611
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/missing_context.rs at line 613
) -> Result<(), MissingError<T::Error>> {) -> Result<(), MissingError<T::GraphError>> { - replacement in libpijul/src/lib.rs at line 98
Base32, ChangeId, Channel, ChannelRef, EdgeFlags, Hash, Inode, Merkle, MutTxnT, OwnedPathId,RemoteRef, TxnT, Vertex,Base32, ChangeId, Channel, ChannelRef, ChannelTxnT, DepsTxnT, EdgeFlags, GraphTxnT, Hash,Inode, Merkle, MutTxnT, OwnedPathId, RemoteRef, TreeTxnT, TxnT, Vertex, - replacement in libpijul/src/lib.rs at line 116
) -> Result<(u64, pristine::Merkle), crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<(u64, pristine::Merkle), crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 126
) -> Result<(), crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<(), crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 135
) -> Result<(u64, pristine::Merkle), crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<(u64, pristine::Merkle), crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 144
) -> Result<(), crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<(), crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 153
) -> Result<(), crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<(), crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 164
) -> Result<(u64, pristine::Merkle), crate::apply::LocalApplyError<Self::Error>> {) -> Result<(u64, pristine::Merkle), crate::apply::LocalApplyError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 174
) -> Result<(u64, pristine::Merkle), crate::apply::LocalApplyError<Self::Error>> {) -> Result<(u64, pristine::Merkle), crate::apply::LocalApplyError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 186[22.723283]→[22.28319:28402](∅→∅),[22.28402]→[22.723320:723405](∅→∅),[22.723320]→[22.723320:723405](∅→∅)
) -> Result<(), crate::record::RecordError<C::Error, W::Error, Self::Error>> {builder.record(self, diff_algorithm, channel, working_copy, changes, prefix)) -> Result<(), crate::record::RecordError<C::Error, W::Error, Self::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{builder.record(self,diff_algorithm,&mut channel.borrow_mut(),working_copy,changes,prefix,) - replacement in libpijul/src/lib.rs at line 207
) -> Result<record::Recorded, crate::record::RecordError<C::Error, W::Error, Self::Error>> {) -> Result<record::Recorded, crate::record::RecordError<C::Error, W::Error, Self::GraphError>>where<W as crate::working_copy::WorkingCopy>::Error: 'static,{ - replacement in libpijul/src/lib.rs at line 212
builder.record(self, diff_algorithm, channel, working_copy, changes, prefix)?;builder.record(self,diff_algorithm,&mut channel.borrow_mut(),working_copy,changes,prefix,)?; - replacement in libpijul/src/lib.rs at line 228
) -> Result<pristine::Hash, crate::apply::ApplyError<C::Error, Self::Error>> {) -> Result<pristine::Hash, crate::apply::ApplyError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 242
.map(|rec| rec.globalize(self)).map(|rec| rec.globalize(self).unwrap()) - replacement in libpijul/src/lib.rs at line 264
) -> Result<bool, unrecord::UnrecordError<C::Error, Self::Error>> {) -> Result<bool, unrecord::UnrecordError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 275
) -> Result<Vec<output::Conflict>, output::OutputError<C::Error, Self::Error, R::Error>> {) -> Result<Vec<output::Conflict>, output::OutputError<C::Error, Self::GraphError, R::Error>>{ - replacement in libpijul/src/lib.rs at line 290
fn add_file(&mut self, path: &str) -> Result<(), fs::FsError<Self::Error>> {fn add_file(&mut self, path: &str) -> Result<(), fs::FsError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 298
fn add_dir(&mut self, path: &str) -> Result<(), fs::FsError<Self::Error>> {fn add_dir(&mut self, path: &str) -> Result<(), fs::FsError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 305
fn add(&mut self, path: &str, is_dir: bool) -> Result<(), fs::FsError<Self::Error>> {fn add(&mut self, path: &str, is_dir: bool) -> Result<(), fs::FsError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 309
fn move_file(&mut self, a: &str, b: &str) -> Result<(), fs::FsError<Self::Error>> {fn move_file(&mut self, a: &str, b: &str) -> Result<(), fs::FsError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 313
fn remove_file(&mut self, a: &str) -> Result<(), fs::FsError<Self::Error>> {fn remove_file(&mut self, a: &str) -> Result<(), fs::FsError<Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 323
pristine::channel_dump::ChannelDumpError<Self::Error>,pristine::channel_dump::ChannelDumpError<Self::GraphError>, - replacement in libpijul/src/lib.rs at line 326
if self.load_channel(name).is_none() {if self.load_channel(name)?.is_none() { - replacement in libpijul/src/lib.rs at line 342
) -> Result<Vec<output::Conflict>, output::ArchiveError<P::Error, Self::Error, A::Error>> {) -> Result<Vec<output::Conflict>, output::ArchiveError<P::Error, Self::GraphError, A::Error>>{ - replacement in libpijul/src/lib.rs at line 370
) -> Result<Vec<output::Conflict>, output::ArchiveError<P::Error, Self::Error, A::Error>> {) -> Result<Vec<output::Conflict>, output::ArchiveError<P::Error, Self::GraphError, A::Error>>{ - replacement in libpijul/src/lib.rs at line 374
for (_, (h, m)) in pristine::changeid_rev_log(self, &channel.borrow(), None) {for x in pristine::changeid_rev_log(self, &channel.borrow(), None)? {let (_, (h, m)) = x?; - replacement in libpijul/src/lib.rs at line 386
let h = self.get_external(h).unwrap();let h = self.get_external(h)?.unwrap(); - replacement in libpijul/src/lib.rs at line 400
fn is_directory(&self, inode: pristine::Inode) -> bool {fs::is_directory(self, inode)fn is_directory(&self, inode: pristine::Inode) -> Result<bool, Self::TreeError> {fs::is_directory(self, inode).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 404
fn is_tracked(&self, path: &str) -> bool {fs::is_tracked(self, path)fn is_tracked(&self, path: &str) -> Result<bool, Self::TreeError> {fs::is_tracked(self, path).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 416[22.730108]→[22.730108:730131](∅→∅),[22.730131]→[22.5019:5080](∅→∅),[22.5080]→[22.730259:730324](∅→∅),[22.730259]→[22.730259:730324](∅→∅)
) -> Option<u64> {let cid = pristine::TxnT::get_internal(self, hash)?;self.get_changeset(&channel.borrow().changes, cid, None)) -> Result<Option<u64>, Self::GraphError> {if let Some(cid) = pristine::GraphTxnT::get_internal(self, hash).map_err(|e| e.0)? {self.get_changeset(&channel.borrow().changes, cid, None).map_err(|e| e.0)} else {Ok(None)} - replacement in libpijul/src/lib.rs at line 429
) -> bool {pristine::is_alive(self, channel, a)) -> Result<bool, Self::GraphError> {pristine::is_alive(self, &channel.graph, a).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 433
fn current_state(&self, channel: &pristine::Channel<Self>) -> pristine::Merkle {pristine::current_state(self, channel)fn current_state(&self,channel: &pristine::Channel<Self>,) -> Result<pristine::Merkle, Self::GraphError> {pristine::current_state(self, channel).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 444
) -> Log<'txn, Self> {Log {) -> Result<Log<'txn, Self>, Self::GraphError> {Ok(Log { - replacement in libpijul/src/lib.rs at line 447[22.730514]→[22.60953:61016](∅→∅),[22.61016]→[22.730566:730576](∅→∅),[22.730566]→[22.730566:730576](∅→∅)
iter: pristine::changeid_log(self, channel, from),}iter: pristine::changeid_log(self, channel, from).map_err(|e| e.0)?,}) - replacement in libpijul/src/lib.rs at line 456
) -> pristine::PathChangeset<'channel, 'txn, Self> {pristine::log_for_path(self, channel, pos, from)) -> Result<pristine::PathChangeset<'channel, 'txn, Self>, Self::GraphError> {pristine::log_for_path(self, channel, pos, from).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 465
) -> pristine::RevPathChangeset<'channel, 'txn, Self> {pristine::rev_log_for_path(self, channel, pos, from)) -> Result<pristine::RevPathChangeset<'channel, 'txn, Self>, Self::DepsError> {pristine::rev_log_for_path(self, channel, pos, from).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 473
) -> RevLog<'txn, Self> {RevLog {) -> Result<RevLog<'txn, Self>, Self::GraphError> {Ok(RevLog { - replacement in libpijul/src/lib.rs at line 476[22.730788]→[22.61633:61700](∅→∅),[22.61700]→[22.730844:730854](∅→∅),[22.730844]→[22.730844:730854](∅→∅)
iter: pristine::changeid_rev_log(self, channel, from),}iter: pristine::changeid_rev_log(self, channel, from).map_err(|e| e.0)?,}) - replacement in libpijul/src/lib.rs at line 484
) -> pristine::RevCursor<Self,&'txn Self,Self::RevchangesetCursor,u64,(pristine::ChangeId, pristine::Merkle),) -> Result<pristine::RevCursor<Self,&'txn Self,Self::RevchangesetCursor,u64,(pristine::ChangeId, pristine::Merkle),>,Self::GraphError, - replacement in libpijul/src/lib.rs at line 494
pristine::changeid_rev_log(self, channel, from)pristine::changeid_rev_log(self, channel, from).map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 501
) -> Option<(pristine::Hash, pristine::Merkle)> {self.get_revchangeset(&channel.borrow().revchanges, n, None).map(|(h, m)| (self.get_external(h).unwrap(), m))) -> Result<Option<(pristine::Hash, pristine::Merkle)>, Self::GraphError> {if let Some((h, m)) = self.get_revchangeset(&channel.borrow().revchanges, n, None).map_err(|e| e.0)?{Ok(Some((self.get_external(h).map_err(|e| e.0)?.unwrap(), m)))} else {Ok(None)} - replacement in libpijul/src/lib.rs at line 516
) -> Option<u64> {if let Some(h) = pristine::TxnT::get_internal(self, h) {) -> Result<Option<u64>, Self::GraphError> {if let Some(h) = pristine::GraphTxnT::get_internal(self, h).map_err(|e| e.0)? { - edit in libpijul/src/lib.rs at line 519
.map_err(|e| e.0) - replacement in libpijul/src/lib.rs at line 521
NoneOk(None) - replacement in libpijul/src/lib.rs at line 525[22.731450]→[22.3034:3108](∅→∅),[22.3108]→[22.62123:62189](∅→∅),[22.731541]→[22.62123:62189](∅→∅),[22.62189]→[22.731590:731617](∅→∅),[22.731590]→[22.731590:731617](∅→∅)
fn touched_files(&self, h: pristine::Hash) -> Option<Touched<Self>> {if let Some(id) = pristine::TxnT::get_internal(self, h) {Some(Touched {fn touched_files(&self, h: pristine::Hash) -> Result<Option<Touched<Self>>, Self::DepsError> {if let Some(id) = pristine::GraphTxnT::get_internal(self, h).map_err(|e| e.0)? {Ok(Some(Touched { - replacement in libpijul/src/lib.rs at line 529
iter: self.iter_rev_touched_files(id, None),iter: self.iter_rev_touched_files(id, None).map_err(|e| e.0)?, - replacement in libpijul/src/lib.rs at line 531
})})) - replacement in libpijul/src/lib.rs at line 533
NoneOk(None) - replacement in libpijul/src/lib.rs at line 542
) -> Result<(String, bool), C::Error> {) -> Result<(String, bool), output::FileError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 544
change: pristine::TxnT::get_internal(self, position.change).unwrap(),change: pristine::GraphTxnT::get_internal(self, position.change)?.unwrap(), - replacement in libpijul/src/lib.rs at line 555
) -> Result<(String, bool), C::Error> {) -> Result<(String, bool), output::FileError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 557
change: pristine::TxnT::get_internal(self, position.change).unwrap(),change: pristine::GraphTxnT::get_internal(self, position.change)?.unwrap(), - replacement in libpijul/src/lib.rs at line 568[22.732890]→[22.30090:30179](∅→∅),[22.30179]→[22.732971:733032](∅→∅),[22.732971]→[22.732971:733032](∅→∅)
) -> Result<(pristine::Position<pristine::ChangeId>, bool), fs::FsError<C::Error>> {fs::follow_oldest_path(changes, self, channel, path)) -> Result<(pristine::Position<pristine::ChangeId>, bool),fs::FsErrorC<C::Error, Self::GraphError>,> {fs::follow_oldest_path(changes, self, &channel.borrow(), path) - replacement in libpijul/src/lib.rs at line 581
) -> Result<(), output::FileError<C::Error>> {) -> Result<(), output::FileError<C::Error, Self::GraphError>> { - replacement in libpijul/src/lib.rs at line 584
let mut graph = alive::retrieve(self, &channel, v0);let mut graph = alive::retrieve(self, &channel.graph, v0)?; - replacement in libpijul/src/lib.rs at line 594
) -> Result<Vec<output::Conflict>, output::ArchiveError<C::Error, Self::Error, A::Error>> {) -> Result<Vec<output::Conflict>, output::ArchiveError<C::Error, Self::GraphError, A::Error>>{ - replacement in libpijul/src/lib.rs at line 605
) -> Result<Vec<output::Conflict>, output::ArchiveError<C::Error, Self::Error, A::Error>> {) -> Result<Vec<output::Conflict>, output::ArchiveError<C::Error, Self::GraphError, A::Error>>{ - replacement in libpijul/src/lib.rs at line 612
channel: &'db pristine::Channel<Self>,graph: &'db pristine::Channel<Self>, - replacement in libpijul/src/lib.rs at line 616
) -> pristine::AdjacentIterator<'txn, Self> {pristine::iter_adjacent(self, channel, key, min_flag, max_flag)) -> Result<pristine::AdjacentIterator<'txn, Self>, pristine::TxnErr<Self::GraphError>> {pristine::iter_adjacent(self, &graph.graph, key, min_flag, max_flag) - replacement in libpijul/src/lib.rs at line 621
pub struct Log<'txn, T: pristine::TxnT> {pub struct Log<'txn, T: pristine::ChannelTxnT> { - replacement in libpijul/src/lib.rs at line 632
impl<'txn, T: pristine::TxnT> Iterator for Log<'txn, T> {type Item = (u64, (pristine::Hash, pristine::Merkle));impl<'txn, T: pristine::ChannelTxnT> Iterator for Log<'txn, T> {type Item = Result<(u64, (pristine::Hash, pristine::Merkle)), T::GraphError>; - replacement in libpijul/src/lib.rs at line 635
self.iter.next().map(|(n, (c, m))| (n, (self.txn.get_external(c).unwrap(), m)))match self.iter.next() {Some(Ok((n, (c, m)))) => {let ext = match self.txn.get_external(c) {Err(pristine::TxnErr(e)) => return Some(Err(e)),Ok(Some(ext)) => ext,Ok(None) => panic!("Unknown change {:?}", c),};Some(Ok((n, (ext, m))))}None => None,Some(Err(e)) => Some(Err(e.0)),} - replacement in libpijul/src/lib.rs at line 650
pub struct RevLog<'txn, T: pristine::TxnT> {pub struct RevLog<'txn, T: pristine::ChannelTxnT> { - replacement in libpijul/src/lib.rs at line 661
impl<'txn, T: pristine::TxnT> Iterator for RevLog<'txn, T> {type Item = (u64, (pristine::Hash, pristine::Merkle));impl<'txn, T: pristine::ChannelTxnT> Iterator for RevLog<'txn, T> {type Item = Result<(u64, (pristine::Hash, pristine::Merkle)), T::GraphError>; - replacement in libpijul/src/lib.rs at line 664
self.iter.next().map(|(n, (c, m))| (n, (self.txn.get_external(c).unwrap(), m)))match self.iter.next() {Some(Ok((n, (c, m)))) => match self.txn.get_external(c) {Ok(Some(ext)) => Some(Ok((n, (ext, m)))),Err(e) => Some(Err(e.0)),Ok(None) => panic!("Unknown change {:?}", c),},None => None,Some(Err(e)) => Some(Err(e.0)),} - replacement in libpijul/src/lib.rs at line 676
pub struct Touched<'txn, T: pristine::TxnT> {pub struct Touched<'txn, T: pristine::DepsTxnT> { - replacement in libpijul/src/lib.rs at line 688
impl<'txn, T: pristine::TxnT> Iterator for Touched<'txn, T> {type Item = pristine::Position<pristine::Hash>;impl<'txn,T: pristine::DepsTxnT + pristine::GraphTxnT<GraphError = <T as pristine::DepsTxnT>::DepsError>,> Iterator for Touched<'txn, T>{type Item = Result<pristine::Position<pristine::Hash>, T::DepsError>; - replacement in libpijul/src/lib.rs at line 695
while let Some((cid, file)) = self.iter.next() {while let Some(x) = self.iter.next() {let (cid, file) = match x {Ok(x) => x,Err(e) => return Some(Err(e.0)),}; - replacement in libpijul/src/lib.rs at line 703
let change = self.txn.get_external(file.change).unwrap();return Some(pristine::Position {let change = match self.txn.get_external(file.change) {Ok(ext) => ext.unwrap(),Err(e) => return Some(Err(e.0)),};return Some(Ok(pristine::Position { - replacement in libpijul/src/lib.rs at line 710
});})); - replacement in libpijul/src/fs.rs at line 25
#[error("Path not found: {0}")]NotFound(String),#[error(transparent)]NotFound(#[from] FsNotFound), - edit in libpijul/src/fs.rs at line 29
#[error(transparent)]Txn(T),}#[derive(Debug, Error)]pub enum FsErrorC<C: std::error::Error + 'static, T: std::error::Error + 'static> { - edit in libpijul/src/fs.rs at line 37
#[error(transparent)]Changestore(C),#[error(transparent)]NotFound(#[from] FsNotFound),}#[derive(Debug, Error)]#[error("Path not found: {0}")]pub struct FsNotFound(String);impl<T: std::error::Error + 'static> std::convert::From<TxnErr<T>> for FsError<T> {fn from(e: TxnErr<T>) -> Self {FsError::Txn(e.0)}}impl<C: std::error::Error + 'static, T: std::error::Error + 'static> std::convert::From<TxnErr<T>>for FsErrorC<C, T>{fn from(e: TxnErr<T>) -> Self {FsErrorC::Txn(e.0)} - replacement in libpijul/src/fs.rs at line 61[22.1]→[22.738541:738608](∅→∅),[22.30675]→[22.738541:738608](∅→∅),[22.738541]→[22.738541:738608](∅→∅)
pub(crate) fn create_new_inode<T: MutTxnT>(txn: &mut T) -> Inode {pub(crate) fn create_new_inode<T: TreeMutTxnT>(txn: &mut T) -> Result<Inode, TxnErr<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 66
already_taken = txn.get_revtree(inode, None).is_some();already_taken = txn.get_revtree(inode, None)?.is_some(); - replacement in libpijul/src/fs.rs at line 68
inodeOk(inode) - replacement in libpijul/src/fs.rs at line 73
pub fn is_directory<T: TxnT>(txn: &T, inode: Inode) -> bool {pub fn is_directory<T: TreeTxnT>(txn: &T, inode: Inode) -> Result<bool, TxnErr<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 75
return true;return Ok(true); - replacement in libpijul/src/fs.rs at line 81
for (pid, _) in txn.iter_tree(pathid.clone(), None) {for x in txn.iter_tree(pathid.clone(), None)? {let (pid, _) = x?; - replacement in libpijul/src/fs.rs at line 88
return true;return Ok(true); - replacement in libpijul/src/fs.rs at line 90
falseOk(false) - replacement in libpijul/src/fs.rs at line 93
fn closest_in_repo_ancestor<'a, T: TxnT>(fn closest_in_repo_ancestor<'a, T: TreeTxnT>( - replacement in libpijul/src/fs.rs at line 96
) -> (Inode, std::iter::Peekable<crate::path::Components<'a>>) {) -> Result<(Inode, std::iter::Peekable<crate::path::Components<'a>>), TxnErr<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 107
for (id, inode) in txn.iter_tree(fileid.clone(), None) {for x in txn.iter_tree(fileid.clone(), None)? {let (id, inode) = x?; - replacement in libpijul/src/fs.rs at line 130
(fileid.parent_inode, components)Ok((fileid.parent_inode, components)) - replacement in libpijul/src/fs.rs at line 134
pub fn find_inode<T: TxnT>(txn: &T, path: &str) -> Result<Inode, FsError<T::Error>> {pub fn find_inode<T: TreeTxnT>(txn: &T, path: &str) -> Result<Inode, FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 136
let (inode, mut remaining_path_components) = closest_in_repo_ancestor(txn, path);let (inode, mut remaining_path_components) = closest_in_repo_ancestor(txn, path)?; - replacement in libpijul/src/fs.rs at line 140
Err(FsError::NotFound(path.to_string()))Err(FsNotFound(path.to_string()).into()) - replacement in libpijul/src/fs.rs at line 147
pub fn is_tracked<T: TxnT>(txn: &T, path: &str) -> bool {pub fn is_tracked<T: TreeTxnT>(txn: &T, path: &str) -> Result<bool, TxnErr<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 149
let (_, mut remaining_path_components) = closest_in_repo_ancestor(txn, path);let (_, mut remaining_path_components) = closest_in_repo_ancestor(txn, path)?; - replacement in libpijul/src/fs.rs at line 151
remaining_path_components.next().is_none()Ok(remaining_path_components.next().is_none()) - replacement in libpijul/src/fs.rs at line 155
pub fn inode_filename<T: TxnT>(txn: &T, inode: Inode) -> Option<String> {pub fn inode_filename<T: TreeTxnT>(txn: &T,inode: Inode,) -> Result<Option<String>, TxnErr<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 162
match txn.get_revtree(current, None) {match txn.get_revtree(current, None)? { - replacement in libpijul/src/fs.rs at line 172
return None;return Ok(None); - replacement in libpijul/src/fs.rs at line 184
Some(path)Ok(Some(path)) - replacement in libpijul/src/fs.rs at line 189
fn make_new_child<T: MutTxnT>(fn make_new_child<T: TreeMutTxnT>( - replacement in libpijul/src/fs.rs at line 195
) -> Result<Inode, FsError<T::Error>> {) -> Result<Inode, FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 201
if let Some(inode) = txn.get_tree(parent_id.as_file_id(), None) {if let Some(inode) = txn.get_tree(parent_id.as_file_id(), None)? { - replacement in libpijul/src/fs.rs at line 208[22.743256]→[22.30915:31009](∅→∅),[22.2896]→[22.743414:743482](∅→∅),[22.31009]→[22.743414:743482](∅→∅),[22.743414]→[22.743414:743482](∅→∅),[22.743482]→[22.31010:31094](∅→∅)
del_tree_with_rev(txn, parent_id.as_file_id(), inode).map_err(FsError::Txn)?;if let Some(vertex) = txn.get_inodes(inode, None) {del_inodes_with_rev(txn, inode, vertex).map_err(FsError::Txn)?;del_tree_with_rev(txn, parent_id.as_file_id(), inode)?;if let Some(vertex) = txn.get_inodes(inode, None)? {del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/fs.rs at line 212
put_tree_with_rev(txn, parent_id.as_file_id(), child).map_err(FsError::Txn)?;put_tree_with_rev(txn, parent_id.as_file_id(), child)?; - replacement in libpijul/src/fs.rs at line 220
None => create_new_inode(txn),None => create_new_inode(txn)?, - replacement in libpijul/src/fs.rs at line 224
put_tree_with_rev(txn, parent_id.as_file_id(), child_inode).map_err(FsError::Txn)?;put_tree_with_rev(txn, parent_id.as_file_id(), child_inode)?; - replacement in libpijul/src/fs.rs at line 231
txn.put_tree(dir_id.as_file_id(), child_inode).map_err(FsError::Txn)?;txn.put_tree(dir_id.as_file_id(), child_inode)?; - replacement in libpijul/src/fs.rs at line 237
pub(crate) fn add_inode<T: MutTxnT>(pub(crate) fn add_inode<T: TreeMutTxnT>( - replacement in libpijul/src/fs.rs at line 242
) -> Result<(), FsError<T::Error>> {) -> Result<(), FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 245
let (current_inode, unrecorded_path) = closest_in_repo_ancestor(txn, parent);let (current_inode, unrecorded_path) = closest_in_repo_ancestor(txn, parent)?; - replacement in libpijul/src/fs.rs at line 264
pub fn move_file<T: MutTxnT>(pub fn move_file<T: TreeMutTxnT>( - replacement in libpijul/src/fs.rs at line 268
) -> Result<(), FsError<T::Error>> {) -> Result<(), FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 274
pub fn move_file_by_inode<T: MutTxnT>(pub fn move_file_by_inode<T: TreeMutTxnT>( - replacement in libpijul/src/fs.rs at line 278[22.746112]→[22.31523:31560](∅→∅),[22.31560]→[22.746145:746213](∅→∅),[22.746145]→[22.746145:746213](∅→∅)
) -> Result<(), FsError<T::Error>> {let fileref = txn.get_revtree(inode, None).unwrap().to_owned();) -> Result<(), FsError<T::TreeError>> {let fileref = txn.get_revtree(inode, None)?.unwrap().to_owned(); - replacement in libpijul/src/fs.rs at line 281
del_tree_with_rev(txn, fileref.as_file_id(), inode).map_err(FsError::Txn)?;del_tree_with_rev(txn, fileref.as_file_id(), inode)?; - replacement in libpijul/src/fs.rs at line 291
))? - replacement in libpijul/src/fs.rs at line 297
pub(crate) fn rec_delete<T: MutTxnT>(pub(crate) fn rec_delete<T: TreeMutTxnT>( - replacement in libpijul/src/fs.rs at line 301
) -> Result<(), FsError<T::Error>> {) -> Result<(), FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 308
for (k, inode) in txn.iter_tree(file_id.clone(), None) {for x in txn.iter_tree(file_id.clone(), None)? {let (k, inode) = x?; - replacement in libpijul/src/fs.rs at line 330
assert!(inode.is_root()|| txn.del_tree(file_id.as_file_id(), Some(inode)).map_err(FsError::Txn)?);assert!(inode.is_root() || txn.del_tree(file_id.as_file_id(), Some(inode))?); - replacement in libpijul/src/fs.rs at line 332[22.748183]→[10.189:304](∅→∅),[10.304]→[22.3292:3352](∅→∅),[22.31879]→[22.3292:3352](∅→∅),[22.3292]→[22.3292:3352](∅→∅),[22.3352]→[22.31880:31956](∅→∅)
if !inode.is_root()&& del_tree_with_rev(txn, parent.as_file_id(), inode).map_err(FsError::Txn)?{if let Some(vertex) = txn.get_inodes(inode, None) {del_inodes_with_rev(txn, inode, vertex).map_err(FsError::Txn)?;if !inode.is_root() && del_tree_with_rev(txn, parent.as_file_id(), inode)? {if let Some(vertex) = txn.get_inodes(inode, None)? {del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/fs.rs at line 347
pub fn remove_file<T: MutTxnT>(txn: &mut T, path: &str) -> Result<(), FsError<T::Error>> {pub fn remove_file<T: TreeMutTxnT>(txn: &mut T, path: &str) -> Result<(), FsError<T::TreeError>> { - replacement in libpijul/src/fs.rs at line 356
txn.get_revtree(inode, None).unwrap().to_owned()txn.get_revtree(inode, None)?.unwrap().to_owned() - replacement in libpijul/src/fs.rs at line 368
pub struct WorkingCopyChildren<'txn, T: TxnT> {pub struct WorkingCopyChildren<'txn, T: TreeTxnT> { - replacement in libpijul/src/fs.rs at line 373
impl<'txn, T: TxnT> Iterator for WorkingCopyChildren<'txn, T> {type Item = (SmallString, Inode);impl<'txn, T: TreeTxnT> Iterator for WorkingCopyChildren<'txn, T> {type Item = Result<(SmallString, Inode), T::TreeError>; - replacement in libpijul/src/fs.rs at line 377
if let Some((k, v)) = self.iter.next() {if k.parent_inode == self.inode {if k.basename.len() > 0 {return Some((k.basename, v));match self.iter.next() {Some(Ok((k, v))) => {if k.parent_inode == self.inode {if k.basename.len() > 0 {return Some(Ok((k.basename, v)));}} else if k.parent_inode > self.inode {return None; - edit in libpijul/src/fs.rs at line 386
} else if k.parent_inode > self.inode {return None; - replacement in libpijul/src/fs.rs at line 387
} else {return None;None => return None,Some(Err(e)) => return Some(Err(e.0)), - replacement in libpijul/src/fs.rs at line 395[22.750130]→[22.3167:3256](∅→∅),[22.3256]→[22.750247:750455](∅→∅),[22.750247]→[22.750247:750455](∅→∅)
pub fn working_copy_children<T: TxnT>(txn: &T, inode: Inode) -> WorkingCopyChildren<T> {WorkingCopyChildren {iter: txn.iter_tree(OwnedPathId {parent_inode: inode,basename: SmallString::new(),},None,),pub fn working_copy_children<T: TreeTxnT>(txn: &T,inode: Inode,) -> Result<WorkingCopyChildren<T>, T::TreeError> {Ok(WorkingCopyChildren {iter: txn.iter_tree(OwnedPathId {parent_inode: inode,basename: SmallString::new(),},None,).map_err(|e| e.0)?, - replacement in libpijul/src/fs.rs at line 410
}}) - replacement in libpijul/src/fs.rs at line 416
pub struct WorkingCopyIterator<'txn, T: TxnT> {pub struct WorkingCopyIterator<'txn, T: TreeTxnT> { - replacement in libpijul/src/fs.rs at line 421
impl<'txn, T: TxnT> Iterator for WorkingCopyIterator<'txn, T> {type Item = (Inode, String);impl<'txn, T: TreeTxnT> Iterator for WorkingCopyIterator<'txn, T> {type Item = Result<(Inode, String), T::TreeError>; - replacement in libpijul/src/fs.rs at line 431
for (k, v) in self.txn.iter_tree(fileid, None) {let iter = match self.txn.iter_tree(fileid, None) {Ok(iter) => iter,Err(e) => return Some(Err(e.0)),};for x in iter {let (k, v) = match x {Ok(x) => x,Err(e) => return Some(Err(e.0)),}; - replacement in libpijul/src/fs.rs at line 453
return Some((inode, name));return Some(Ok((inode, name))); - replacement in libpijul/src/fs.rs at line 463
pub fn iter_working_copy<T: TxnT>(txn: &T, root: Inode) -> WorkingCopyIterator<T> {pub fn iter_working_copy<T: TreeTxnT>(txn: &T, root: Inode) -> WorkingCopyIterator<T> { - replacement in libpijul/src/fs.rs at line 475
pub struct GraphDescendants<'txn, 'channel, T: TxnT> {pub struct GraphDescendants<'txn, 'channel, T: GraphTxnT> { - replacement in libpijul/src/fs.rs at line 477
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 482
impl<'txn, 'channel, T: TxnT> Iterator for GraphDescendants<'txn, 'channel, T> {type Item = Position<ChangeId>;impl<'txn, 'channel, T: GraphTxnT> Iterator for GraphDescendants<'txn, 'channel, T> {type Item = Result<Position<ChangeId>, T::GraphError>; - replacement in libpijul/src/fs.rs at line 486
if let Some(child) = adj.next() {self.stack.push(adj);let dest = find_block(self.txn, &self.channel, child.dest).unwrap();let grandchild = iter_adjacent(self.txn,&self.channel,dest,EdgeFlags::FOLDER,EdgeFlags::FOLDER | EdgeFlags::PSEUDO | EdgeFlags::BLOCK,).next().unwrap();if self.visited.insert(grandchild.dest) {self.stack.push(iter_adjacent(match adj.next() {Some(Ok(child)) => {self.stack.push(adj);let dest = match find_block(self.txn, self.channel, child.dest) {Ok(dest) => dest,Err(BlockError::Txn(t)) => return Some(Err(t)),Err(e) => panic!("{}", e),};let grandchild = match iter_adjacent( - replacement in libpijul/src/fs.rs at line 496
&self.channel,grandchild.dest.inode_vertex(),self.channel,dest, - replacement in libpijul/src/fs.rs at line 500
))) {Ok(mut x) => match x.next().unwrap() {Ok(x) => x,Err(e) => return Some(Err(e.0)),},Err(e) => return Some(Err(e.0)),};if self.visited.insert(grandchild.dest) {match iter_adjacent(self.txn,self.channel,grandchild.dest.inode_vertex(),EdgeFlags::FOLDER,EdgeFlags::FOLDER | EdgeFlags::PSEUDO | EdgeFlags::BLOCK,) {Ok(adj) => self.stack.push(adj),Err(e) => return Some(Err(e.0)),}}return Some(Ok(grandchild.dest)); - replacement in libpijul/src/fs.rs at line 522
return Some(grandchild.dest);} else {// No child left, actually pop.Some(Err(e)) => return Some(Err(e.0)),None => {// No child left, actually pop.} - replacement in libpijul/src/fs.rs at line 534
pub fn iter_graph_descendants<'txn, 'channel, T: TxnT>(pub fn iter_graph_descendants<'txn, 'channel, T: GraphTxnT>( - replacement in libpijul/src/fs.rs at line 536
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 538
) -> GraphDescendants<'txn, 'channel, T> {GraphDescendants {) -> Result<GraphDescendants<'txn, 'channel, T>, T::GraphError> {Ok(GraphDescendants { - replacement in libpijul/src/fs.rs at line 546
)],).map_err(|e| e.0)?], - replacement in libpijul/src/fs.rs at line 551
}}) - replacement in libpijul/src/fs.rs at line 559
pub struct GraphChildren<'txn, 'channel, 'changes, T: TxnT, P: ChangeStore + 'changes> {pub struct GraphChildren<'txn, 'channel, 'changes, T: GraphTxnT, P: ChangeStore + 'changes> { - replacement in libpijul/src/fs.rs at line 561
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 567
impl<'txn, 'channel, 'changes, T: TxnT, P: ChangeStore + 'changes> Iteratorimpl<'txn, 'channel, 'changes, T: GraphTxnT, P: ChangeStore + 'changes> Iterator - replacement in libpijul/src/fs.rs at line 570
type Item = (Position<ChangeId>, InodeMetadata, String);type Item = Result<(Position<ChangeId>, InodeMetadata, String), T::GraphError>; - replacement in libpijul/src/fs.rs at line 572[22.752809]→[22.752809:752852](∅→∅),[22.752852]→[22.62710:62791](∅→∅),[22.62791]→[22.752932:753346](∅→∅),[22.752932]→[22.752932:753346](∅→∅)
self.adj.next().map(move |child| {let dest = find_block(self.txn, &self.channel, child.dest).unwrap();let mut buf = std::mem::replace(&mut self.buf, Vec::new());self.changes.get_contents(|p| self.txn.get_external(p), dest, &mut buf).unwrap();self.buf = buf;let (perms, basename) = self.buf.split_at(2);let perms = InodeMetadata::from_basename(perms);let basename = std::str::from_utf8(basename).unwrap();let child = match self.adj.next()? {Ok(child) => child,Err(e) => return Some(Err(e.0)),};let dest = find_block(self.txn, self.channel, child.dest).unwrap();let mut buf = std::mem::replace(&mut self.buf, Vec::new());self.changes.get_contents(|p| self.txn.get_external(p).unwrap(), dest, &mut buf).unwrap();self.buf = buf;let (perms, basename) = self.buf.split_at(2);let perms = InodeMetadata::from_basename(perms);let basename = std::str::from_utf8(basename).unwrap(); - replacement in libpijul/src/fs.rs at line 586[22.753347]→[22.62792:62950](∅→∅),[22.62950]→[22.62950:63024](∅→∅),[22.63024]→[22.63024:63081](∅→∅),[22.63081]→[22.753681:753751](∅→∅),[22.753681]→[22.753681:753751](∅→∅)
let grandchild = iter_adjacent(self.txn,&self.channel,dest,EdgeFlags::FOLDER,EdgeFlags::FOLDER | EdgeFlags::PSEUDO | EdgeFlags::BLOCK,).next().unwrap();(grandchild.dest, perms, basename.to_string())})let grandchild = match iter_adjacent(self.txn,self.channel,dest,EdgeFlags::FOLDER,EdgeFlags::FOLDER | EdgeFlags::PSEUDO | EdgeFlags::BLOCK,) {Ok(mut adj) => match adj.next() {Some(Ok(n)) => n,None => unreachable!(),Some(Err(e)) => return Some(Err(e.0)),},Err(e) => return Some(Err(e.0)),};Some(Ok((grandchild.dest, perms, basename.to_string()))) - replacement in libpijul/src/fs.rs at line 609
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 611
) -> GraphChildren<'txn, 'channel, 'changes, T, P>) -> Result<GraphChildren<'txn, 'channel, 'changes, T, P>, T::GraphError> - replacement in libpijul/src/fs.rs at line 613
T: TxnT,T: GraphTxnT, - replacement in libpijul/src/fs.rs at line 616
GraphChildren {Ok(GraphChildren { - replacement in libpijul/src/fs.rs at line 620
&channel,channel, - replacement in libpijul/src/fs.rs at line 624
),).map_err(|e| e.0)?, - replacement in libpijul/src/fs.rs at line 629
}}) - replacement in libpijul/src/fs.rs at line 635
pub struct GraphBasenames<'txn, 'channel, 'changes, T: TxnT, P: ChangeStore + 'changes> {pub struct GraphBasenames<'txn, 'channel, 'changes, T: GraphTxnT, P: ChangeStore + 'changes> { - replacement in libpijul/src/fs.rs at line 637
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 643
impl<'txn, 'channel, 'changes, T: TxnT, P: ChangeStore + 'changes> Iteratorimpl<'txn, 'channel, 'changes, T: GraphTxnT, P: ChangeStore + 'changes> Iterator - replacement in libpijul/src/fs.rs at line 646
type Item = (Position<ChangeId>, InodeMetadata, String);type Item = Result<(Position<ChangeId>, InodeMetadata, String), T::GraphError>; - replacement in libpijul/src/fs.rs at line 648
while let Some(parent) = self.adj.next() {loop {let parent = match self.adj.next() {Some(Ok(n)) => n,Some(Err(e)) => return Some(Err(e.0)),None => return None,}; - replacement in libpijul/src/fs.rs at line 657
.get_contents(|p| self.txn.get_external(p), dest, &mut buf).get_contents(|p| self.txn.get_external(p).unwrap(), dest, &mut buf) - replacement in libpijul/src/fs.rs at line 663
if let Some(grandparent) = iter_adjacent(match iter_adjacent( - replacement in libpijul/src/fs.rs at line 669
).next(){return Some((grandparent.dest, perms, basename));) {Ok(mut adj) => match adj.next() {Some(Ok(grandparent)) => return Some(Ok((grandparent.dest, perms, basename))),Some(Err(e)) => return Some(Err(e.0)),None => {}},Err(e) => return Some(Err(e.0)), - edit in libpijul/src/fs.rs at line 678
None - replacement in libpijul/src/fs.rs at line 688
channel: &'channel Channel<T>,channel: &'channel T::Graph, - replacement in libpijul/src/fs.rs at line 690
) -> GraphBasenames<'txn, 'channel, 'changes, T, P>) -> Result<GraphBasenames<'txn, 'channel, 'changes, T, P>, T::GraphError> - replacement in libpijul/src/fs.rs at line 692
T: TxnT,T: GraphTxnT, - replacement in libpijul/src/fs.rs at line 695
GraphBasenames {Ok(GraphBasenames { - replacement in libpijul/src/fs.rs at line 699
&channel,channel, - replacement in libpijul/src/fs.rs at line 703
),).map_err(|e| e.0)?, - replacement in libpijul/src/fs.rs at line 708
}}) - replacement in libpijul/src/fs.rs at line 720
pub fn iter_paths<T: TxnT, F: FnMut(&mut dyn Iterator<Item = Position<ChangeId>>) -> bool>(pub fn iter_paths<T: GraphTxnT, F: FnMut(&mut dyn Iterator<Item = Position<ChangeId>>) -> bool>( - replacement in libpijul/src/fs.rs at line 722
channel: &ChannelRef<T>,graph: &T::Graph, - replacement in libpijul/src/fs.rs at line 725
) {let channel = channel.r.borrow();) -> Result<(), T::GraphError> { - replacement in libpijul/src/fs.rs at line 743[22.758177]→[22.63592:63688](∅→∅),[22.63688]→[22.758289:758464](∅→∅),[22.758289]→[22.758289:758464](∅→∅),[22.758464]→[22.63689:63870](∅→∅),[22.63870]→[22.758664:758898](∅→∅),[22.758664]→[22.758664:758898](∅→∅)
for (_, parent) in iter_graph(txn, &channel.graph, cur_key.inode_vertex(), Some(e)).take_while(|&(k, _)| k == cur_key.inode_vertex()).filter(|&(_, ref v)| v.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)){let parent_dest = find_block_end(txn, &channel, parent.dest).unwrap();for (_, grandparent) in iter_graph(txn, &channel.graph, parent_dest, Some(e)).take_while(|&(k, _)| k == parent_dest).filter(|&(_, ref v)| v.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT)){stack.push((grandparent.dest, false))for x in iter_graph(txn, &graph, cur_key.inode_vertex(), Some(e)).map_err(|e| e.0)? {let (k, parent) = x.map_err(|e| e.0)?;if k != cur_key.inode_vertex() {break;} else if !parent.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT) {continue;}let parent_dest = find_block_end(txn, &graph, parent.dest).unwrap();for x in iter_graph(txn, &graph, parent_dest, Some(e)).map_err(|e| e.0)? {let (k, grandparent) = x.map_err(|e| e.0)?;if k != parent_dest {break;}if grandparent.flag.contains(EdgeFlags::FOLDER | EdgeFlags::PARENT){stack.push((grandparent.dest, false))} - edit in libpijul/src/fs.rs at line 769
Ok(()) - replacement in libpijul/src/fs.rs at line 772
pub(crate) fn follow_oldest_path<T: TxnT, C: ChangeStore>(pub(crate) fn follow_oldest_path<T: ChannelTxnT, C: ChangeStore>( - replacement in libpijul/src/fs.rs at line 775
channel: &ChannelRef<T>,channel: &Channel<T>, - replacement in libpijul/src/fs.rs at line 777
) -> Result<(Position<ChangeId>, bool), FsError<C::Error>> {) -> Result<(Position<ChangeId>, bool), FsErrorC<C::Error, T::GraphError>> { - edit in libpijul/src/fs.rs at line 779
let channel = channel.borrow(); - replacement in libpijul/src/fs.rs at line 787
for name in iter_adjacent(txn, &channel, current.inode_vertex(), flag0, flag1) {let name_dest = find_block(txn, &channel, name.dest).unwrap();for name in iter_adjacent(txn, &channel.graph, current.inode_vertex(), flag0, flag1)? {let name = name?;let name_dest = find_block(txn, &channel.graph, name.dest).unwrap(); - replacement in libpijul/src/fs.rs at line 793
.get_contents(|h| txn.get_external(h), name_dest, &mut name_buf).map_err(FsError::Txn)?;.get_contents(|h| txn.get_external(h).unwrap(), name_dest, &mut name_buf).map_err(FsErrorC::Changestore)?; - replacement in libpijul/src/fs.rs at line 812
current = iter_adjacent(txn, &channel, next, flag0, flag1)current = iter_adjacent(txn, &channel.graph, next, flag0, flag1)? - replacement in libpijul/src/fs.rs at line 814
.unwrap().unwrap()? - replacement in libpijul/src/fs.rs at line 817
return Err(FsError::NotFound(path.to_string()));return Err(FsErrorC::NotFound(FsNotFound(path.to_string()))); - replacement in libpijul/src/fs.rs at line 823
pub fn find_path<T: TxnT, C: ChangeStore>(pub fn find_path<T: ChannelTxnT, C: ChangeStore>( - replacement in libpijul/src/fs.rs at line 829
) -> Result<(String, bool), C::Error> {) -> Result<(String, bool), crate::output::FileError<C::Error, T::GraphError>> { - replacement in libpijul/src/fs.rs at line 839
let inode_vertex = find_block_end(txn, &channel, v).unwrap();let inode_vertex = find_block_end(txn, &channel.graph, v).unwrap(); - replacement in libpijul/src/fs.rs at line 841
for name in iter_adjacent(txn, channel, v.inode_vertex(), flag0, flag1) {for name in iter_adjacent(txn, &channel.graph, v.inode_vertex(), flag0, flag1)? {let name = name?; - replacement in libpijul/src/fs.rs at line 848
.get_changeset(&channel.changes, name.dest.change, None).get_changeset(&channel.changes, name.dest.change, None)? - replacement in libpijul/src/fs.rs at line 851
let name_dest = find_block_end(txn, &channel, name.dest).unwrap();let name_dest = find_block_end(txn, &channel.graph, name.dest).unwrap(); - replacement in libpijul/src/fs.rs at line 853[22.762071]→[22.64342:64427](∅→∅),[22.64427]→[22.641:723](∅→∅),[22.723]→[22.762280:762294](∅→∅),[22.762280]→[22.762280:762294](∅→∅)
if let Some(next) = iter_adjacent(txn, channel, name_dest, flag0, flag1).find(|e| e.flag.contains(EdgeFlags::PARENT | EdgeFlags::FOLDER)){let mut next = None;for e in iter_adjacent(txn, &channel.graph, name_dest, flag0, flag1)? {let e = e?;if e.flag.contains(EdgeFlags::PARENT | EdgeFlags::FOLDER) {next = Some(e);break;}}if let Some(next) = next { - replacement in libpijul/src/fs.rs at line 882
changes.get_contents(|h| txn.get_external(h), name, &mut name_buf)?;changes.get_contents(|h| txn.get_external(h).unwrap(), name, &mut name_buf).map_err(crate::output::FileError::Changestore)?; - replacement in libpijul/src/find_alive.rs at line 4
pub(crate) fn find_alive_down<T: TxnT>(pub(crate) fn find_alive_down<T: GraphTxnT>( - replacement in libpijul/src/find_alive.rs at line 6
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/find_alive.rs at line 8
) -> Result<HashSet<Vertex<ChangeId>>, BlockError> {) -> Result<HashSet<Vertex<ChangeId>>, BlockError<T::GraphError>> { - replacement in libpijul/src/find_alive.rs at line 23
for v in iter_adj_all(txn, &channel, vertex) {for v in iter_adj_all(txn, &channel, vertex)? {let v = v?; - replacement in libpijul/src/find_alive.rs at line 48
pub(crate) fn find_alive_up<T: TxnT>(pub(crate) fn find_alive_up<T: GraphTxnT>( - replacement in libpijul/src/find_alive.rs at line 50
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/find_alive.rs at line 54
) -> Result<HashSet<Vertex<ChangeId>>, BlockError> {) -> Result<HashSet<Vertex<ChangeId>>, BlockError<T::GraphError>> { - replacement in libpijul/src/find_alive.rs at line 73
let mut it = iter_adj_all(txn, &channel, vertex);let mut it = iter_adj_all(txn, &channel, vertex)?; - edit in libpijul/src/find_alive.rs at line 75
let v = v?; - replacement in libpijul/src/find_alive.rs at line 86
is_file |= it.any(|e| !e.flag.intersects(EdgeFlags::parent_folder()));for e in it {let e = e?;is_file |= !e.flag.intersects(EdgeFlags::parent_folder())} - replacement in libpijul/src/diff/mod.rs at line 34
pub enum DiffError<P: std::error::Error + 'static> {pub enum DiffError<P: std::error::Error + 'static, T: std::error::Error + 'static> {#[error(transparent)]Output(#[from] crate::output::FileError<P, T>), - replacement in libpijul/src/diff/mod.rs at line 38
Output(#[from] crate::output::FileError<P>),Txn(T),}impl<T: std::error::Error + 'static, C: std::error::Error + 'static> std::convert::From<TxnErr<T>>for DiffError<C, T>{fn from(e: TxnErr<T>) -> Self {DiffError::Txn(e.0)} - replacement in libpijul/src/diff/mod.rs at line 50
pub(crate) fn diff<T: TxnT, P: ChangeStore>(pub(crate) fn diff<T: ChannelTxnT, P: ChangeStore>( - replacement in libpijul/src/diff/mod.rs at line 60
) -> Result<(), DiffError<P::Error>> {) -> Result<(), DiffError<P::Error, T::GraphError>> { - replacement in libpijul/src/diff/mod.rs at line 67
self.diff_binary(changes, txn, channel, path, inode, a, &b);self.diff_binary(changes, txn, &channel.graph, path, inode, a, &b)?; - replacement in libpijul/src/diff/mod.rs at line 122
channel,&channel.graph, - replacement in libpijul/src/diff/mod.rs at line 129
);)?; - replacement in libpijul/src/diff/mod.rs at line 139
fn diff_binary<T: TxnT, C: ChangeStore>(fn diff_binary<T: GraphTxnT, C: ChangeStore>( - replacement in libpijul/src/diff/mod.rs at line 143
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/mod.rs at line 148
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/diff/mod.rs at line 162
for e in iter_adjacent(txn, channel, v.vertex, EdgeFlags::PARENT, EdgeFlags::all()) {for e in iter_adjacent(txn, channel, v.vertex, EdgeFlags::PARENT, EdgeFlags::all())? {let e = e?; - replacement in libpijul/src/diff/mod.rs at line 220
})});Ok(()) - replacement in libpijul/src/diff/delete.rs at line 11
pub(super) fn delete<T: TxnT>(pub(super) fn delete<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 14
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 21
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/diff/delete.rs at line 23
self.delete_lines(txn, channel, diff, d, lines_a, r);self.delete_lines(txn, channel, diff, d, lines_a, r)?; - edit in libpijul/src/diff/delete.rs at line 37
Ok(()) - replacement in libpijul/src/diff/delete.rs at line 47
fn delete_lines<T: TxnT>(fn delete_lines<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 50
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 55
) {let deletion = delete_lines(txn, channel, diff, d, lines_a, r);) -> Result<(), TxnErr<T::GraphError>> {let deletion = delete_lines(txn, channel, diff, d, lines_a, r)?; - edit in libpijul/src/diff/delete.rs at line 81
Ok(()) - replacement in libpijul/src/diff/delete.rs at line 85
fn delete_lines<T: TxnT>(fn delete_lines<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 87
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 92
) -> Deletion {) -> Result<Deletion, TxnErr<T::GraphError>> { - replacement in libpijul/src/diff/delete.rs at line 116
))? - replacement in libpijul/src/diff/delete.rs at line 148
))? - replacement in libpijul/src/diff/delete.rs at line 150
deletionOk(deletion) - replacement in libpijul/src/diff/delete.rs at line 153
fn delete_parents<T: TxnT>(fn delete_parents<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 155
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 159
) {for v in iter_adjacent() -> Result<(), TxnErr<T::GraphError>> {for e in iter_adjacent( - replacement in libpijul/src/diff/delete.rs at line 166[22.65866]→[22.65866:65963](∅→∅),[22.65963]→[22.810627:810684](∅→∅),[22.810627]→[22.810627:810684](∅→∅)
).filter(|e| e.flag.contains(EdgeFlags::PARENT) && !e.flag.contains(EdgeFlags::PSEUDO)){let previous = v.flag - EdgeFlags::PARENT;)? {let e = e?;if !e.flag.contains(EdgeFlags::PARENT) || e.flag.contains(EdgeFlags::PSEUDO) {continue;}let previous = e.flag - EdgeFlags::PARENT; - replacement in libpijul/src/diff/delete.rs at line 174
&& !v.flag.contains(EdgeFlags::BLOCK)&& !e.flag.contains(EdgeFlags::BLOCK) - replacement in libpijul/src/diff/delete.rs at line 182
v.dest.to_option()e.dest.to_option() - replacement in libpijul/src/diff/delete.rs at line 187
introduced_by: Some(v.introduced_by),introduced_by: Some(e.introduced_by), - edit in libpijul/src/diff/delete.rs at line 190
Ok(()) - replacement in libpijul/src/diff/delete.rs at line 265
fn resurrect_zombies<T: TxnT>(fn resurrect_zombies<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 267
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 276
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/diff/delete.rs at line 312
);)?; - edit in libpijul/src/diff/delete.rs at line 321
Ok(()) - replacement in libpijul/src/diff/delete.rs at line 324
fn resurrect_zombie<T: TxnT>(fn resurrect_zombie<T: GraphTxnT>( - replacement in libpijul/src/diff/delete.rs at line 326
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/diff/delete.rs at line 330
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/diff/delete.rs at line 338
) {)? {let e = e?; - edit in libpijul/src/diff/delete.rs at line 357
Ok(()) - replacement in libpijul/src/change.rs at line 195
pub fn dependencies<'a, Local: 'a, I: Iterator<Item = &'a Record<Option<Hash>, Local>>, T: TxnT>(pub fn dependencies<'a,Local: 'a,I: Iterator<Item = &'a Record<Option<Hash>, Local>>,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/change.rs at line 202
channel: &ChannelRef<T>,channel: &Channel<T>, - replacement in libpijul/src/change.rs at line 204
) -> (Vec<Hash>, Vec<Hash>) {) -> Result<(Vec<Hash>, Vec<Hash>), TxnErr<T::DepsError>> { - edit in libpijul/src/change.rs at line 207
let channel = channel.r.borrow(); - replacement in libpijul/src/change.rs at line 236
add_zombie_deps_from(txn, &channel, &mut zombie_deps, e.from);add_zombie_deps_to(txn, &channel, &mut zombie_deps, e.to)add_zombie_deps_from(txn, &channel.graph, &mut zombie_deps, e.from)?;add_zombie_deps_to(txn, &channel.graph, &mut zombie_deps, e.to)? - replacement in libpijul/src/change.rs at line 242
let deps = minimize_deps(txn, &channel, &deps);let deps = minimize_deps(txn, &channel, &deps)?; - replacement in libpijul/src/change.rs at line 248
let a = txn.get_internal(*a).unwrap();let b = txn.get_internal(*b).unwrap();let a = txn.get_internal(*a).unwrap().unwrap();let b = txn.get_internal(*b).unwrap().unwrap(); - replacement in libpijul/src/change.rs at line 251
.cmp(&txn.get_changeset(&channel.changes, b, None)).unwrap().cmp(&txn.get_changeset(&channel.changes, b, None).unwrap()) - replacement in libpijul/src/change.rs at line 256
let a = txn.get_internal(*a).unwrap();let b = txn.get_internal(*b).unwrap();let a = txn.get_internal(*a).unwrap().unwrap();let b = txn.get_internal(*b).unwrap().unwrap(); - replacement in libpijul/src/change.rs at line 259
.cmp(&txn.get_changeset(&channel.changes, b, None)).unwrap().cmp(&txn.get_changeset(&channel.changes, b, None).unwrap()) - replacement in libpijul/src/change.rs at line 262
(deps, zombie_deps)Ok((deps, zombie_deps)) - replacement in libpijul/src/change.rs at line 265
pub fn full_dependencies<T: TxnT>(txn: &T, channel: &ChannelRef<T>) -> (Vec<Hash>, Vec<Hash>) {pub fn full_dependencies<T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>>(txn: &T,channel: &ChannelRef<T>,) -> Result<(Vec<Hash>, Vec<Hash>), TxnErr<T::DepsError>> { - replacement in libpijul/src/change.rs at line 271[22.837994]→[22.66394:66451](∅→∅),[22.66451]→[22.838050:838097](∅→∅),[22.838050]→[22.838050:838097](∅→∅)
for (_, (ch, _)) in changeid_log(txn, &channel, 0) {let h = txn.get_external(ch).unwrap();for x in changeid_log(txn, &channel, 0)? {let (_, (ch, _)) = x?;let h = txn.get_external(ch)?.unwrap(); - replacement in libpijul/src/change.rs at line 276
let deps = minimize_deps(txn, &channel, &deps);(deps, Vec::new())let deps = minimize_deps(txn, &channel, &deps)?;Ok((deps, Vec::new())) - replacement in libpijul/src/change.rs at line 280
fn add_zombie_deps_from<T: TxnT>(fn add_zombie_deps_from<T: GraphTxnT>( - replacement in libpijul/src/change.rs at line 282
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/change.rs at line 285
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/change.rs at line 288
change: txn.get_internal(p).unwrap(),change: txn.get_internal(p)?.unwrap(), - replacement in libpijul/src/change.rs at line 292
return;return Ok(()); - replacement in libpijul/src/change.rs at line 295[22.66514]→[21.17040:17091](∅→∅),[22.66604]→[22.838760:838826](∅→∅),[21.17091]→[22.838760:838826](∅→∅),[22.838760]→[22.838760:838826](∅→∅)
for edge in iter_adj_all(txn, channel, from) {if let Some(ext) = txn.get_external(edge.introduced_by) {for edge in iter_adj_all(txn, channel, from)? {let edge = edge?;if let Some(ext) = txn.get_external(edge.introduced_by)? { - replacement in libpijul/src/change.rs at line 303
if let Some(ext) = txn.get_external(edge.dest.change) {if let Some(ext) = txn.get_external(edge.dest.change)? { - edit in libpijul/src/change.rs at line 310
Ok(()) - replacement in libpijul/src/change.rs at line 313
fn add_zombie_deps_to<T: TxnT>(fn add_zombie_deps_to<T: GraphTxnT>( - replacement in libpijul/src/change.rs at line 315
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/change.rs at line 318
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/change.rs at line 321
change: txn.get_internal(p).unwrap(),change: txn.get_internal(p)?.unwrap(), - replacement in libpijul/src/change.rs at line 325
return;return Ok(()); - replacement in libpijul/src/change.rs at line 329[22.839576]→[21.17092:17145](∅→∅),[22.66758]→[22.839667:839737](∅→∅),[21.17145]→[22.839667:839737](∅→∅),[22.839667]→[22.839667:839737](∅→∅)
for edge in iter_adj_all(txn, channel, to) {if let Some(ext) = txn.get_external(edge.introduced_by) {for edge in iter_adj_all(txn, channel, to)? {let edge = edge?;if let Some(ext) = txn.get_external(edge.introduced_by)? { - replacement in libpijul/src/change.rs at line 337
if let Some(ext) = txn.get_external(edge.dest.change) {if let Some(ext) = txn.get_external(edge.dest.change)? { - edit in libpijul/src/change.rs at line 349
Ok(()) - replacement in libpijul/src/change.rs at line 351
fn minimize_deps<T: TxnT>(txn: &T, channel: &Channel<T>, deps: &BTreeSet<Hash>) -> Vec<Hash> {fn minimize_deps<T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>>(txn: &T,channel: &Channel<T>,deps: &BTreeSet<Hash>,) -> Result<Vec<Hash>, TxnErr<T::DepsError>> { - replacement in libpijul/src/change.rs at line 365
let id = txn.get_internal(*h).unwrap();let id = txn.get_internal(*h)?.unwrap(); - replacement in libpijul/src/change.rs at line 367
let time = txn.get_changeset(&channel.changes, id, None).unwrap();let time = txn.get_changeset(&channel.changes, id, None)?.unwrap(); - replacement in libpijul/src/change.rs at line 386
let mut cursor = txn.iter_dep(id);while let Some((id0, dep)) = txn.cursor_dep_next(&mut cursor.cursor) {let mut cursor = txn.iter_dep(id)?;while let Some(x) = txn.cursor_dep_next(&mut cursor.cursor)? {let (id0, dep) = x; - replacement in libpijul/src/change.rs at line 395
let time = if let Some(time) = txn.get_changeset(&channel.changes, dep, None) {let time = if let Some(time) = txn.get_changeset(&channel.changes, dep, None)? { - replacement in libpijul/src/change.rs at line 411
internal_deps_Ok(internal_deps_ - replacement in libpijul/src/change.rs at line 413
.map(|id| txn.get_external(id).unwrap()).collect().map(|id| txn.get_external(id).unwrap().unwrap()).collect()) - replacement in libpijul/src/change.rs at line 949
fn globalize<T: TxnT>(&self, txn: &T) -> Atom<Option<Hash>> {fn globalize<T: GraphTxnT>(&self, txn: &T) -> Result<Atom<Option<Hash>>, T::GraphError> { - replacement in libpijul/src/change.rs at line 958
}) => Atom::NewVertex(NewVertex {}) => Ok(Atom::NewVertex(NewVertex { - replacement in libpijul/src/change.rs at line 962
change: up.change.and_then(|a| txn.get_external(a)),change: up.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 969
change: down.change.and_then(|a| txn.get_external(a)),change: down.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 977
change: inode.change.and_then(|a| txn.get_external(a)),change: inode.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 980
}),Atom::EdgeMap(EdgeMap { edges, inode }) => Atom::EdgeMap(EdgeMap {})),Atom::EdgeMap(EdgeMap { edges, inode }) => Ok(Atom::EdgeMap(EdgeMap { - replacement in libpijul/src/change.rs at line 988
change: edge.from.change.and_then(|a| txn.get_external(a)),change: edge.from.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 992
change: edge.to.change.and_then(|a| txn.get_external(a)),change: edge.to.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 997
if let Some(a) = txn.get_external(a) {if let Some(a) = txn.get_external(a).unwrap() { - replacement in libpijul/src/change.rs at line 1006
change: inode.change.and_then(|a| txn.get_external(a)),change: inode.change.and_then(|a| txn.get_external(a).unwrap()), - replacement in libpijul/src/change.rs at line 1009
}),})), - replacement in libpijul/src/change.rs at line 1049
pub fn globalize<T: TxnT>(self, txn: &T) -> Record<Option<Hash>, Local> {match self {pub fn globalize<T: GraphTxnT>(self,txn: &T,) -> Result<Record<Option<Hash>, Local>, T::GraphError> {Ok(match self { - replacement in libpijul/src/change.rs at line 1055
del: del.globalize(txn),add: add.globalize(txn),del: del.globalize(txn)?,add: add.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1064
del: del.globalize(txn),contents: contents.as_ref().map(|del| del.globalize(txn)),del: del.globalize(txn)?,contents: contents.as_ref().map(|del| del.globalize(txn).unwrap()), - replacement in libpijul/src/change.rs at line 1073
undel: undel.globalize(txn),contents: contents.as_ref().map(|del| del.globalize(txn)),undel: undel.globalize(txn)?,contents: contents.as_ref().map(|del| del.globalize(txn).unwrap()), - replacement in libpijul/src/change.rs at line 1078
name: name.globalize(txn),name: name.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1082
name: name.globalize(txn),name: name.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1091
add_name: add_name.globalize(txn),add_inode: add_inode.globalize(txn),contents: contents.as_ref().map(|add| add.globalize(txn)),add_name: add_name.globalize(txn)?,add_inode: add_inode.globalize(txn)?,contents: contents.as_ref().map(|add| add.globalize(txn).unwrap()), - replacement in libpijul/src/change.rs at line 1097
change: change.globalize(txn),change: change.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1105
change: change.globalize(txn),replacement: replacement.globalize(txn),change: change.globalize(txn)?,replacement: replacement.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1110
change: change.globalize(txn),change: change.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1114
change: change.globalize(txn),change: change.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1118
change: change.globalize(txn),change: change.globalize(txn)?, - replacement in libpijul/src/change.rs at line 1121
}}) - replacement in libpijul/src/change.rs at line 1142
pub fn make_change<T: TxnT>(pub fn make_change<T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>>( - replacement in libpijul/src/change.rs at line 1149
) -> Self {let (dependencies, extra_known) = dependencies(txn, channel, changes.iter());) -> Result<Self, TxnErr<T::DepsError>> {let (dependencies, extra_known) = dependencies(txn, &channel.borrow(), changes.iter())?; - replacement in libpijul/src/change.rs at line 1158
LocalChange {Ok(LocalChange { - replacement in libpijul/src/change.rs at line 1171
}}) - replacement in libpijul/src/change/text_changes.rs at line 155
pub fn read_and_deps<R: BufRead, T: TxnT>(pub fn read_and_deps<R: BufRead,T: ChannelTxnT + DepsTxnT<DepsError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/change/text_changes.rs at line 165
let (mut deps, extra) = dependencies(txn, channel, change.hashed.changes.iter());let (mut deps, extra) =dependencies(txn, &channel.borrow(), change.hashed.changes.iter()).unwrap(); - replacement in libpijul/src/apply.rs at line 22
pub enum LocalApplyError<TxnError: std::error::Error> {pub enum LocalApplyError<TxnError: std::error::Error + 'static> { - replacement in libpijul/src/apply.rs at line 29
#[error(transparent)]Block(#[from] crate::pristine::BlockError),#[error(transparent)]InconsistentChange(#[from] crate::pristine::InconsistentChange),#[error("Block error: {:?}", block)]Block { block: Position<ChangeId> },#[error("Invalid change")]InvalidChange, - edit in libpijul/src/apply.rs at line 35
impl<E: std::error::Error> LocalApplyError<E> {const INCONSISTENT: Self =LocalApplyError::InconsistentChange(crate::pristine::InconsistentChange {});} - replacement in libpijul/src/apply.rs at line 39
MissingError::Block(e) => LocalApplyError::Block(e),MissingError::Inconsistent(e) => LocalApplyError::InconsistentChange(e),MissingError::Block(e) => e.into(),MissingError::Inconsistent(_) => LocalApplyError::InvalidChange,}}}impl<T: std::error::Error> From<crate::pristine::InconsistentChange<T>> for LocalApplyError<T> {fn from(err: crate::pristine::InconsistentChange<T>) -> Self {match err {InconsistentChange::Txn(e) => LocalApplyError::Txn(e),_ => LocalApplyError::InvalidChange,}}}impl<T: std::error::Error> From<crate::pristine::TxnErr<T>> for LocalApplyError<T> {fn from(err: crate::pristine::TxnErr<T>) -> Self {LocalApplyError::Txn(err.0)}}impl<C: std::error::Error, T: std::error::Error> From<crate::pristine::TxnErr<T>>for ApplyError<C, T>{fn from(err: crate::pristine::TxnErr<T>) -> Self {LocalApplyError::Txn(err.0).into()}}impl<T: std::error::Error> From<crate::pristine::BlockError<T>> for LocalApplyError<T> {fn from(err: crate::pristine::BlockError<T>) -> Self {match err {BlockError::Txn(e) => LocalApplyError::Txn(e),BlockError::Block { block } => LocalApplyError::Block { block }, - replacement in libpijul/src/apply.rs at line 87
) -> Result<(u64, Merkle), ApplyError<P::Error, T::Error>> {) -> Result<(u64, Merkle), ApplyError<P::Error, T::GraphError>> { - replacement in libpijul/src/apply.rs at line 97
if let Some(int) = txn.get_internal(hash) {if txn.get_changeset(&channel.changes, int, None).is_some() {if let Some(int) = txn.get_internal(hash)? {if txn.get_changeset(&channel.changes, int, None)?.is_some() { - replacement in libpijul/src/apply.rs at line 105
let internal = if let Some(p) = txn.get_internal(hash) {let internal = if let Some(p) = txn.get_internal(hash)? { - replacement in libpijul/src/apply.rs at line 108
let internal: ChangeId = make_changeid(txn, &hash);register_change(txn, internal, hash, &change).map_err(LocalApplyError::Txn)?;let internal: ChangeId = make_changeid(txn, &hash)?;register_change(txn, internal, hash, &change)?; - replacement in libpijul/src/apply.rs at line 130
) -> Result<(), ApplyError<P::Error, T::Error>> {) -> Result<(), ApplyError<P::Error, T::GraphError>> { - replacement in libpijul/src/apply.rs at line 143
if let Some(change_id) = txn.get_internal(hash) {if let Some(change_id) = txn.get_internal(hash)? { - replacement in libpijul/src/apply.rs at line 145
.get_changeset(&channel.changes, change_id, None).get_changeset(&channel.changes, change_id, None)? - replacement in libpijul/src/apply.rs at line 160
let applied = if let Some(int) = txn.get_internal(hash) {txn.get_changeset(&channel.changes, int, None).is_some()let applied = if let Some(int) = txn.get_internal(hash)? {txn.get_changeset(&channel.changes, int, None)?.is_some() - replacement in libpijul/src/apply.rs at line 166
let internal = if let Some(p) = txn.get_internal(hash) {let internal = if let Some(p) = txn.get_internal(hash)? { - replacement in libpijul/src/apply.rs at line 169
let internal: ChangeId = make_changeid(txn, &hash);register_change(txn, internal, hash, &change).map_err(LocalApplyError::Txn)?;let internal: ChangeId = make_changeid(txn, &hash)?;register_change(txn, internal, hash, &change)?; - replacement in libpijul/src/apply.rs at line 188
) -> Result<(u64, Merkle), ApplyError<P::Error, T::Error>> {) -> Result<(u64, Merkle), ApplyError<P::Error, T::GraphError>> { - replacement in libpijul/src/apply.rs at line 199
) -> Result<(), ApplyError<P::Error, T::Error>> {) -> Result<(), ApplyError<P::Error, T::GraphError>> { - replacement in libpijul/src/apply.rs at line 210
fn apply_change_to_channel<T: MutTxnT>(fn apply_change_to_channel<T: ChannelMutTxnT>( - replacement in libpijul/src/apply.rs at line 217
) -> Result<(u64, Merkle), LocalApplyError<T::Error>> {) -> Result<(u64, Merkle), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 220
let merkle = if let Some(m) = txn.put_changes(channel, change_id, channel.apply_counter, hash).map_err(LocalApplyError::Txn)?{m} else {return Err(LocalApplyError::ChangeAlreadyOnChannel { hash: *hash });};let merkle =if let Some(m) = txn.put_changes(channel, change_id, channel.apply_counter, hash)? {m} else {return Err(LocalApplyError::ChangeAlreadyOnChannel { hash: *hash });}; - replacement in libpijul/src/apply.rs at line 232
Atom::NewVertex(ref n) => put_newvertex(txn, channel, change, ws, change_id, n)?,Atom::NewVertex(ref n) => {put_newvertex(txn, &mut channel.graph, change, ws, change_id, n)?} - replacement in libpijul/src/apply.rs at line 240
channel,&mut channel.graph, - replacement in libpijul/src/apply.rs at line 245
|_, _, _, _| Ok::<bool, LocalApplyError<T::Error>>(true),|_, _, _, _| Ok::<bool, LocalApplyError<T::GraphError>>(true), - replacement in libpijul/src/apply.rs at line 259[22.886]→[22.886:981](∅→∅),[22.981]→[22.95842:95914](∅→∅),[22.95914]→[22.1018:1047](∅→∅),[22.1018]→[22.1018:1047](∅→∅)
put_newedge(txn, channel, ws, change_id, n.inode, edge, |_, _, _, _| {Ok::<bool, LocalApplyError<T::Error>>(true)})?;put_newedge(txn,&mut channel.graph,ws,change_id,n.inode,edge,|_, _, _, _| Ok::<bool, LocalApplyError<T::GraphError>>(true),)?; - replacement in libpijul/src/apply.rs at line 270
channel,&mut channel.graph, - replacement in libpijul/src/apply.rs at line 285
clean_obsolete_pseudo_edges(txn, channel, ws, change_id)?;clean_obsolete_pseudo_edges(txn, &mut channel.graph, ws, change_id)?; - replacement in libpijul/src/apply.rs at line 288
repair_missing_contexts(txn, channel, ws, change_id, change)?;repair_cyclic_paths(txn, channel, ws)?;repair_missing_contexts(txn, &mut channel.graph, ws, change_id, change)?;repair_cyclic_paths(txn, &mut channel.graph, ws)?; - replacement in libpijul/src/apply.rs at line 300
pub fn apply_local_change_ws<T: MutTxnT>(pub fn apply_local_change_ws<T: ChannelMutTxnT+ DepsMutTxnT<DepsError = <T as GraphTxnT>::GraphError>+ TreeMutTxnT<TreeError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/apply.rs at line 311
) -> Result<(u64, Merkle), LocalApplyError<T::Error>> {) -> Result<(u64, Merkle), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 313
let internal: ChangeId = make_changeid(txn, &hash);let internal: ChangeId = make_changeid(txn, &hash)?; - replacement in libpijul/src/apply.rs at line 319
if let Some(int) = txn.get_internal(hash) {if txn.get_changeset(&channel.changes, int, None).is_some() {if let Some(int) = txn.get_internal(hash)? {if txn.get_changeset(&channel.changes, int, None)?.is_some() { - replacement in libpijul/src/apply.rs at line 327
register_change(txn, internal, hash, &change).map_err(LocalApplyError::Txn)?;register_change(txn, internal, hash, &change)?; - replacement in libpijul/src/apply.rs at line 331
update_inode(txn, &channel, internal, update)?;update_inode(txn, &channel.graph, internal, update)?; - replacement in libpijul/src/apply.rs at line 337
pub fn apply_local_change<T: MutTxnT>(pub fn apply_local_change<T: ChannelMutTxnT+ DepsMutTxnT<DepsError = <T as GraphTxnT>::GraphError>+ TreeMutTxnT<TreeError = <T as GraphTxnT>::GraphError>,>( - replacement in libpijul/src/apply.rs at line 347
) -> Result<(u64, Merkle), LocalApplyError<T::Error>> {) -> Result<(u64, Merkle), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 358
fn update_inode<T: MutTxnT>(fn update_inode<T: GraphTxnT + TreeMutTxnT<TreeError = <T as GraphTxnT>::GraphError>>( - replacement in libpijul/src/apply.rs at line 360
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/apply.rs at line 363
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::TreeError>> { - replacement in libpijul/src/apply.rs at line 372
.get_graph(&channel.graph, vertex.inode_vertex(), None).get_graph(&channel, vertex.inode_vertex(), None)? - replacement in libpijul/src/apply.rs at line 376
put_inodes_with_rev(txn, inode, vertex).map_err(LocalApplyError::Txn)?;put_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/apply.rs at line 382
if let Some(parent) = txn.get_revtree(inode, None).map(|x| x.to_owned()) {del_tree_with_rev(txn, parent.as_file_id(), inode).map_err(LocalApplyError::Txn)?;if let Some(parent) = txn.get_revtree(inode, None)?.map(|x| x.to_owned()) {del_tree_with_rev(txn, parent.as_file_id(), inode)?; - replacement in libpijul/src/apply.rs at line 393[22.955259]→[22.96692:96751](∅→∅),[22.96751]→[22.955275:955339](∅→∅),[22.955275]→[22.955275:955339](∅→∅),[22.955339]→[22.96752:96840](∅→∅)
).map_err(LocalApplyError::Txn)?;if let Some(vertex) = txn.get_inodes(inode, None) {del_inodes_with_rev(txn, inode, vertex).map_err(LocalApplyError::Txn)?;)?;if let Some(vertex) = txn.get_inodes(inode, None)? {del_inodes_with_rev(txn, inode, vertex)?; - replacement in libpijul/src/apply.rs at line 402
fn put_newvertex<T: MutTxnT>(fn put_newvertex<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 404
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 409
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 422
if put_up_context(txn, channel, ch, ws, up)? && n.flag.contains(EdgeFlags::FOLDER) {return Err(LocalApplyError::INCONSISTENT);if put_up_context(txn, graph, ch, ws, up)? && n.flag.contains(EdgeFlags::FOLDER) {return Err(LocalApplyError::InvalidChange); - replacement in libpijul/src/apply.rs at line 429
return Err((InconsistentChange {}).into());return Err(LocalApplyError::InvalidChange); - replacement in libpijul/src/apply.rs at line 431
if put_down_context(txn, channel, ch, ws, down)? && !n.flag.contains(EdgeFlags::FOLDER) {return Err(LocalApplyError::INCONSISTENT);if put_down_context(txn, graph, ch, ws, down)? && !n.flag.contains(EdgeFlags::FOLDER) {return Err(LocalApplyError::InvalidChange); - replacement in libpijul/src/apply.rs at line 442
put_graph_with_rev(txn, channel, up_flag, up, vertex, *change).map_err(LocalApplyError::Txn)?;put_graph_with_rev(txn, graph, up_flag, up, vertex, *change)?; - replacement in libpijul/src/apply.rs at line 445
put_graph_with_rev(txn, channel, n.flag | EdgeFlags::BLOCK, up, vertex, change).map_err(LocalApplyError::Txn)?;put_graph_with_rev(txn, graph, n.flag | EdgeFlags::BLOCK, up, vertex, change)?; - replacement in libpijul/src/apply.rs at line 454
put_graph_with_rev(txn, channel, down_flag, vertex, down, change).map_err(LocalApplyError::Txn)?;put_graph_with_rev(txn, graph, down_flag, vertex, down, change)?; - replacement in libpijul/src/apply.rs at line 463
fn put_up_context<T: MutTxnT>(fn put_up_context<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 465
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 469
) -> Result<bool, LocalApplyError<T::Error>> {) -> Result<bool, LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 474
let k = find_block_end(txn, channel, up)?;let k = find_block_end(txn, graph, up)?; - replacement in libpijul/src/apply.rs at line 482
split_block(txn, channel, k, up.pos).map_err(LocalApplyError::Txn)?split_block(txn, graph, k, up.pos, &mut ws.adjbuf)? - replacement in libpijul/src/apply.rs at line 494
for parent in iter_adjacent(txn, &channel, up_vertex, flag0, flag1) {for parent in iter_adjacent(txn, graph, up_vertex, flag0, flag1)? {let parent = parent?; - replacement in libpijul/src/apply.rs at line 501
let introduced_by = txn.get_external(parent.introduced_by).unwrap();let introduced_by = txn.get_external(parent.introduced_by)?.unwrap(); - replacement in libpijul/src/apply.rs at line 511
fn put_down_context<T: MutTxnT>(fn put_down_context<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 513
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 517[22.959448]→[21.19058:19105](∅→∅),[21.19105]→[22.69263:69309](∅→∅),[22.97423]→[22.69263:69309](∅→∅),[22.959495]→[22.69263:69309](∅→∅)
) -> Result<bool, LocalApplyError<T::Error>> {let k = find_block(txn, &channel, down)?;) -> Result<bool, LocalApplyError<T::GraphError>> {let k = find_block(txn, &graph, down)?; - replacement in libpijul/src/apply.rs at line 525
split_block(txn, channel, k, down.pos).map_err(LocalApplyError::Txn)?split_block(txn, graph, k, down.pos, &mut ws.adjbuf)? - replacement in libpijul/src/apply.rs at line 537
for parent in iter_adjacent(txn, &channel, down_vertex, flag0, flag1) {for parent in iter_adjacent(txn, &graph, down_vertex, flag0, flag1)? {let parent = parent?; - replacement in libpijul/src/apply.rs at line 542
let introduced_by = txn.get_external(parent.introduced_by).unwrap();let introduced_by = txn.get_external(parent.introduced_by)?.unwrap(); - edit in libpijul/src/apply.rs at line 563
adjbuf: Vec<Edge>, - edit in libpijul/src/apply.rs at line 579
self.adjbuf.clear(); - replacement in libpijul/src/apply.rs at line 589
assert!(self.rooted.is_empty())assert!(self.rooted.is_empty());assert!(self.adjbuf.is_empty()); - replacement in libpijul/src/apply.rs at line 596
channel: &mut Channel<T>,graph: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 604
T: MutTxnT,E: From<LocalApplyError<T::Error>>,F: Fn(&mut T, &mut Channel<T>, Vertex<ChangeId>, Vertex<ChangeId>) -> Result<bool, E>,T: GraphMutTxnT,E: From<LocalApplyError<T::GraphError>> + From<TxnErr<T::GraphError>>,F: Fn(&mut T, &mut T::Graph, Vertex<ChangeId>, Vertex<ChangeId>) -> Result<bool, E>, - replacement in libpijul/src/apply.rs at line 611
.load_graph(txn, channel, inode).map_err(LocalApplyError::InconsistentChange)?;.load_graph(txn, graph, inode).map_err(|_| LocalApplyError::InvalidChange)?; - replacement in libpijul/src/apply.rs at line 617
return Err(LocalApplyError::INCONSISTENT.into());return Err(LocalApplyError::InvalidChange.into()); - replacement in libpijul/src/apply.rs at line 622
let n_introduced_by = if let Some(n) = internal(txn, &n.introduced_by, change) {let n_introduced_by = if let Some(n) = internal(txn, &n.introduced_by, change)? { - replacement in libpijul/src/apply.rs at line 625
return Err(LocalApplyError::INCONSISTENT.into());return Err(LocalApplyError::InvalidChange.into()); - replacement in libpijul/src/apply.rs at line 628
let mut source = find_source_vertex(txn, channel, &n.from, change, inode, n.flag, ws)?;let mut target = find_target_vertex(txn, channel, &n.to, change, inode, n.flag, ws)?;let mut source = find_source_vertex(txn, graph, &n.from, change, inode, n.flag, ws)?;let mut target = find_target_vertex(txn, graph, &n.to, change, inode, n.flag, ws)?; - replacement in libpijul/src/apply.rs at line 639
split_block(txn, channel, target, n.to.end).map_err(LocalApplyError::Txn)?;split_block(txn, graph, target, n.to.end, &mut ws.adjbuf).map_err(LocalApplyError::from)?; - replacement in libpijul/src/apply.rs at line 645
collect_pseudo_edges(txn, channel, ws, inode, target)?;collect_pseudo_edges(txn, graph, ws, inode, target).map_err(LocalApplyError::from)?; - replacement in libpijul/src/apply.rs at line 647
reconnect_pseudo_edges(txn, channel, inode, ws, target)?;reconnect_pseudo_edges(txn, graph, inode, ws, target)?; - replacement in libpijul/src/apply.rs at line 653[22.965043]→[21.20079:20165](∅→∅),[21.20165]→[22.98139:98184](∅→∅),[22.98139]→[22.98139:98184](∅→∅),[22.965742]→[22.965742:965798](∅→∅),[22.965798]→[22.98185:98262](∅→∅),[22.98262]→[22.98262:98311](∅→∅)
del_graph_with_rev(txn, channel, n.previous, source, target, n_introduced_by).map_err(LocalApplyError::Txn)?;if apply_check(txn, channel, source, target)? {put_graph_with_rev(txn, channel, n.flag, source, target, change).map_err(LocalApplyError::Txn)?;del_graph_with_rev(txn, graph, n.previous, source, target, n_introduced_by)?;if apply_check(txn, graph, source, target)? {put_graph_with_rev(txn, graph, n.flag, source, target, change)?; - replacement in libpijul/src/apply.rs at line 665
target = find_block(txn, channel, target.end_pos()).map_err(LocalApplyError::Block)?;target = find_block(txn, graph, target.end_pos()).map_err(LocalApplyError::from)?; - replacement in libpijul/src/apply.rs at line 671
fn find_source_vertex<T: MutTxnT>(fn find_source_vertex<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 673
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 679
) -> Result<Vertex<ChangeId>, LocalApplyError<T::Error>> {) -> Result<Vertex<ChangeId>, LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 686
split_block(txn, channel, source, from.pos).map_err(LocalApplyError::Txn)?;split_block(txn, channel, source, from.pos, &mut ws.adjbuf)?; - replacement in libpijul/src/apply.rs at line 692
fn find_target_vertex<T: MutTxnT>(fn find_target_vertex<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 694
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 700
) -> Result<Vertex<ChangeId>, LocalApplyError<T::Error>> {) -> Result<Vertex<ChangeId>, LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 708
split_block(txn, channel, target, to.start).map_err(LocalApplyError::Txn)?;split_block(txn, channel, target, to.start, &mut ws.adjbuf)?; - replacement in libpijul/src/apply.rs at line 714
fn collect_pseudo_edges<T: MutTxnT>(fn collect_pseudo_edges<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 716
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 720
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 727
) {)? {let e = e?; - replacement in libpijul/src/apply.rs at line 733
if is_alive(txn, channel, p) {if is_alive(txn, channel, p)? { - replacement in libpijul/src/apply.rs at line 748
fn reconnect_pseudo_edges<T: MutTxnT>(fn reconnect_pseudo_edges<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 750
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 754
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 759
let (graph, vids) = ws.missing_context.graphs.get(inode)?;let (graph, vids) = if let Some(x) = ws.missing_context.graphs.get(inode) {x} else {return Err(LocalApplyError::InvalidChange.into());}; - replacement in libpijul/src/apply.rs at line 779
debug_assert!(is_alive(txn, channel, p));debug_assert!(is_alive(txn, channel, p).unwrap()); - replacement in libpijul/src/apply.rs at line 782
debug_assert!(is_alive(txn, channel, c));put_graph_with_rev(txn, channel, EdgeFlags::PSEUDO, p, c, ChangeId::ROOT).map_err(LocalApplyError::Txn)?;debug_assert!(is_alive(txn, channel, c).unwrap());put_graph_with_rev(txn, channel, EdgeFlags::PSEUDO, p, c, ChangeId::ROOT)?; - replacement in libpijul/src/apply.rs at line 790
pub(crate) fn clean_obsolete_pseudo_edges<T: MutTxnT>(pub(crate) fn clean_obsolete_pseudo_edges<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 792
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 795
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 808
let a_is_alive = is_alive(txn, channel, a);let b_is_alive = is_alive(txn, channel, b);let a_is_alive = is_alive(txn, channel, a)?;let b_is_alive = is_alive(txn, channel, b)?; - replacement in libpijul/src/apply.rs at line 820
).map_err(LocalApplyError::Txn)?;)?; - replacement in libpijul/src/apply.rs at line 848
fn repair_missing_contexts<T: MutTxnT>(fn repair_missing_contexts<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 850
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 854
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 881
fn repair_new_vertex_context_up<T: MutTxnT>(fn repair_new_vertex_context_up<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 883
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 888
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 891
if !is_alive(txn, channel, up) {if !is_alive(txn, channel, up)? { - replacement in libpijul/src/apply.rs at line 908
fn repair_new_vertex_context_down<T: MutTxnT>(fn repair_new_vertex_context_down<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 910
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 915
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 920
for down in n.down_context.iter() {'outer: for down in n.down_context.iter() { - replacement in libpijul/src/apply.rs at line 922
if iter_adjacent(for e in iter_adjacent( - replacement in libpijul/src/apply.rs at line 928
).any(|e| e.introduced_by != change_id){continue;)? {let e = e?;if e.introduced_by != change_id {continue 'outer;} - replacement in libpijul/src/apply.rs at line 948
fn repair_edge_context<T: MutTxnT>(fn repair_edge_context<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 950
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 955
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 987
pub(crate) fn repair_cyclic_paths<T: MutTxnT>(pub(crate) fn repair_cyclic_paths<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 989
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 991
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 1002
if let Some(ee) = iter_adjacent(txn, channel, file, f0, f1).next() {let mut iter = iter_adjacent(txn, channel, file, f0, f1)?;if let Some(ee) = iter.next() {let ee = ee?; - replacement in libpijul/src/apply.rs at line 1017
fn repair_edge<T: MutTxnT>(fn repair_edge<T: GraphMutTxnT>( - replacement in libpijul/src/apply.rs at line 1019
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/apply.rs at line 1022
) -> Result<(), LocalApplyError<T::Error>> {) -> Result<(), LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 1044
for parent in iter_adjacent(txn, channel, current, f, EdgeFlags::all()) {for parent in iter_adjacent(txn, channel, current, f, EdgeFlags::all())? {let parent = parent?; - replacement in libpijul/src/apply.rs at line 1049
let al = iter_adjacent(let al = if let Some(e) = iter_adjacent( - replacement in libpijul/src/apply.rs at line 1055
))? - replacement in libpijul/src/apply.rs at line 1057
.is_some();{e?;true} else {false}; - replacement in libpijul/src/apply.rs at line 1084
).map_err(LocalApplyError::Txn)?;)?; - replacement in libpijul/src/apply.rs at line 1092
fn is_rooted<T: TxnT>(fn is_rooted<T: GraphTxnT>( - replacement in libpijul/src/apply.rs at line 1094
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/apply.rs at line 1097
) -> Result<bool, LocalApplyError<T::Error>> {) -> Result<bool, LocalApplyError<T::GraphError>> { - replacement in libpijul/src/apply.rs at line 1100
for e in iter_adjacent(txn, channel, v, EdgeFlags::empty(), EdgeFlags::all()) {for e in iter_adjacent(txn, channel, v, EdgeFlags::empty(), EdgeFlags::all())? {let e = e?; - replacement in libpijul/src/apply.rs at line 1153
) {)? {let parent = parent?; - replacement in libpijul/src/alive/retrieve.rs at line 6
pub fn retrieve<T: TxnT>(txn: &T, channel: &Channel<T>, pos0: Position<ChangeId>) -> Graph {pub fn retrieve<T: GraphTxnT>(txn: &T,channel: &T::Graph,pos0: Position<ChangeId>,) -> Result<Graph, TxnErr<T::GraphError>> { - replacement in libpijul/src/alive/retrieve.rs at line 41
) {)? {let e = e?; - replacement in libpijul/src/alive/retrieve.rs at line 45
if let Some(alive) = new_vertex(txn, channel, e.dest) {if let Some(alive) = new_vertex(txn, channel, e.dest)? { - replacement in libpijul/src/alive/retrieve.rs at line 67
graphOk(graph) - replacement in libpijul/src/alive/retrieve.rs at line 70
fn new_vertex<T: TxnT>(fn new_vertex<T: GraphTxnT>( - replacement in libpijul/src/alive/retrieve.rs at line 72
channel: &Channel<T>,graph: &T::Graph, - replacement in libpijul/src/alive/retrieve.rs at line 74
) -> Option<AliveVertex> {let vertex = crate::pristine::find_block(txn, &channel, pos).unwrap();if !is_alive(txn, &channel, vertex) {return None;) -> Result<Option<AliveVertex>, TxnErr<T::GraphError>> {let vertex = crate::pristine::find_block(txn, graph, pos).unwrap();if !is_alive(txn, graph, vertex)? {return Ok(None);}let mut flags = Flags::empty();for e in crate::pristine::iter_adjacent(txn,graph,vertex,EdgeFlags::PARENT | EdgeFlags::DELETED | EdgeFlags::BLOCK,EdgeFlags::all(),)? {if e?.flag.contains(EdgeFlags::PARENT | EdgeFlags::DELETED | EdgeFlags::BLOCK){flags = Flags::ZOMBIE;break;} - replacement in libpijul/src/alive/retrieve.rs at line 95
Some(AliveVertex {Ok(Some(AliveVertex { - replacement in libpijul/src/alive/retrieve.rs at line 97[22.73581]→[22.73581:73801](∅→∅),[22.73801]→[22.7870:7889](∅→∅),[22.7889]→[22.73823:73927](∅→∅),[22.73823]→[22.73823:73927](∅→∅),[22.73927]→[22.7890:7903](∅→∅),[22.7903]→[22.987415:987496](∅→∅),[22.987415]→[22.987415:987496](∅→∅)
flags: if crate::pristine::iter_adjacent(txn,&channel,vertex,EdgeFlags::PARENT | EdgeFlags::DELETED | EdgeFlags::BLOCK,EdgeFlags::all(),).any(|e| {e.flag.contains(EdgeFlags::PARENT | EdgeFlags::DELETED | EdgeFlags::BLOCK)}) {Flags::ZOMBIE} else {Flags::empty()},flags, - replacement in libpijul/src/alive/retrieve.rs at line 103
})})) - replacement in libpijul/src/alive/retrieve.rs at line 106
pub(crate) fn remove_forward_edges<T: MutTxnT>(pub(crate) fn remove_forward_edges<T: GraphMutTxnT>( - replacement in libpijul/src/alive/retrieve.rs at line 108
channel: &mut Channel<T>,channel: &mut T::Graph, - replacement in libpijul/src/alive/retrieve.rs at line 110[22.987781]→[22.100373:100401](∅→∅),[22.100401]→[22.987814:987863](∅→∅),[22.987814]→[22.987814:987863](∅→∅)
) -> Result<(), T::Error> {let mut graph = retrieve(txn, channel, pos);) -> Result<(), TxnErr<T::GraphError>> {let mut graph = retrieve(txn, channel, pos)?; - replacement in libpijul/src/alive/retrieve.rs at line 115
graph.collect_forward_edges(txn, channel, &scc, &forward_scc, &mut forward);graph.collect_forward_edges(txn, channel, &scc, &forward_scc, &mut forward)?; - replacement in libpijul/src/alive/retrieve.rs at line 117
let dest = crate::pristine::find_block(txn, &channel, edge.dest).unwrap();let dest = crate::pristine::find_block(txn, channel, edge.dest).unwrap(); - replacement in libpijul/src/alive/output.rs at line 16
fn output_conflict<T: TxnT, B: VertexBuffer, P: ChangeStore>(fn output_conflict<T: ChannelTxnT, B: VertexBuffer, P: ChangeStore>( - replacement in libpijul/src/alive/output.rs at line 24
) -> Result<(), FileError<P::Error>> {) -> Result<(), FileError<P::Error, T::GraphError>> { - replacement in libpijul/src/alive/output.rs at line 38
.map(|a| a.oldest_vertex(changes, txn, channel, graph, sccs)).map(|a| a.oldest_vertex(changes, txn, channel, graph, sccs).unwrap()) - replacement in libpijul/src/alive/output.rs at line 44
.map(|b| b.oldest_vertex(changes, txn, channel, graph, sccs)).map(|b| b.oldest_vertex(changes, txn, channel, graph, sccs).unwrap()) - replacement in libpijul/src/alive/output.rs at line 91
fn oldest_vertex<T: TxnT, C: ChangeStore>(fn oldest_vertex<T: ChannelTxnT, C: ChangeStore>( - replacement in libpijul/src/alive/output.rs at line 98
) -> u64 {) -> Result<u64, TxnErr<T::GraphError>> { - replacement in libpijul/src/alive/output.rs at line 100
PathElement::Scc { ref scc } => sccs[*scc].iter().map(|x| {PathElement::Scc { ref scc } => {let mut min: Option<u64> = None;for x in sccs[*scc].iter() { - replacement in libpijul/src/alive/output.rs at line 104
txn.get_changeset(&channel.changes, graph[*x].vertex.change, None)txn.get_changeset(&channel.changes, graph[*x].vertex.change, None)? - replacement in libpijul/src/alive/output.rs at line 106
tif let Some(ref mut m) = min {*m = (*m).min(t)} else {min = Some(t)} - replacement in libpijul/src/alive/output.rs at line 114
graph.debug(changes, txn, channel, false, true, f).unwrap();graph.debug(changes, txn, &channel.graph, false, true, f).unwrap(); - replacement in libpijul/src/alive/output.rs at line 120
}).min().unwrap(),PathElement::Conflict { ref sides } => sides.iter().map(|x| {x.path.iter().map(|x| x.oldest_vertex(changes, txn, channel, graph, sccs)).min().unwrap()}).min().unwrap(),}Ok(min.unwrap())}PathElement::Conflict { ref sides } => {let mut min: Option<u64> = None;for x in sides.iter() {for y in x.path.iter() {let t = y.oldest_vertex(changes, txn, channel, graph, sccs)?;if let Some(ref mut m) = min {*m = (*m).min(t)} else {min = Some(t)}}}Ok(min.unwrap())} - replacement in libpijul/src/alive/output.rs at line 141
fn output_scc<T: TxnT, B: VertexBuffer, P: ChangeStore>(fn output_scc<T: GraphTxnT, B: VertexBuffer, P: ChangeStore>( - replacement in libpijul/src/alive/output.rs at line 147
) -> Result<(), FileError<P::Error>> {) -> Result<(), FileError<P::Error, T::GraphError>> { - replacement in libpijul/src/alive/output.rs at line 163
.get_contents(|p| txn.get_external(p), vertex, buf).get_contents(|p| txn.get_external(p).unwrap(), vertex, buf) - replacement in libpijul/src/alive/output.rs at line 186
pub fn output_graph<T: TxnT, B: VertexBuffer, P: ChangeStore>(pub fn output_graph<T: ChannelTxnT, B: VertexBuffer, P: ChangeStore>( - replacement in libpijul/src/alive/output.rs at line 193
) -> Result<(), crate::output::FileError<P::Error>> {) -> Result<(), crate::output::FileError<P::Error, T::GraphError>> { - replacement in libpijul/src/alive/output.rs at line 200
graph.collect_forward_edges(txn, channel, &scc, &forward_scc, forward);graph.collect_forward_edges(txn, &channel.graph, &scc, &forward_scc, forward)?; - replacement in libpijul/src/alive/dfs.rs at line 359
pub(super) fn collect_forward_edges<T: TxnT>(pub(super) fn collect_forward_edges<T: GraphTxnT>( - replacement in libpijul/src/alive/dfs.rs at line 362
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/alive/dfs.rs at line 366
) {) -> Result<(), TxnErr<T::GraphError>> { - replacement in libpijul/src/alive/dfs.rs at line 385
))? - edit in libpijul/src/alive/dfs.rs at line 393
Ok(()) - replacement in libpijul/src/alive/debug.rs at line 3
use crate::pristine::{Base32, Channel, Position, TxnT};use crate::pristine::{Base32, GraphTxnT, Position}; - replacement in libpijul/src/alive/debug.rs at line 10
pub fn debug<W: Write, T: TxnT, P: ChangeStore>(pub fn debug<W: Write, T: GraphTxnT, P: ChangeStore>( - replacement in libpijul/src/alive/debug.rs at line 14
channel: &Channel<T>,channel: &T::Graph, - replacement in libpijul/src/alive/debug.rs at line 36
.get_contents(|h| txn.get_external(h), line.vertex, &mut buf).get_contents(|h| txn.get_external(h).unwrap(), line.vertex, &mut buf) - replacement in libpijul/src/alive/debug.rs at line 63[22.1016628]→[22.74253:74351](∅→∅),[22.74351]→[22.1016729:1016807](∅→∅),[22.1016729]→[22.1016729:1016807](∅→∅)
for (_, v) in crate::pristine::iter_graph(txn, &channel.graph, line.vertex, None).take_while(|&(k, _)| k == line.vertex){for x in crate::pristine::iter_graph(txn, &channel, line.vertex, None).unwrap() {let (k, v) = x.unwrap();if k != line.vertex {break;} - replacement in libpijul/Cargo.toml at line 4
version = "1.0.0-alpha.22"version = "1.0.0-alpha.23" - replacement in libpijul/Cargo.toml at line 86
ondisk-repos = [ "mmap", "zstd", "ignore", "canonical-path" ]ondisk-repos = [ "mmap", "zstd", "ignore", "canonical-path", "lru-cache", "tempfile" ] - replacement in libpijul/Cargo.toml at line 95
sanakirja = "0.14.5"sanakirja = "0.15.2" - replacement in libpijul/Cargo.toml at line 105
pijul-macros = "0.2.0"pijul-macros = "0.3.0" - edit in libpijul/Cargo.toml at line 108
lru-cache = "0.1" - edit in libpijul/Cargo.toml at line 109
tempfile = "3.1" - edit in libpijul/Cargo.toml at line 119
lru-cache = { version = "0.1", optional = true }tempfile = { version = "3.1", optional = true } - replacement in Cargo.nix at line 85
version = "0.14.0";version = "0.14.1"; - replacement in Cargo.nix at line 87
sha256 = "08x42676mp3wa4amhgnlwlsjxsyarfgr2sc283srppbqkvb2j2bw";sha256 = "1xs5bsi40zpyxbbylyaysya5h36ykcbg91i82415sxw5wk7q4px5"; - replacement in Cargo.nix at line 146
version = "1.0.36";version = "1.0.37"; - replacement in Cargo.nix at line 148
sha256 = "0yclpf28nrck31p7zwwckqjhvdl2fdlg4xmb3cclfgmilwjk5038";sha256 = "11kaqp25lchr2ckyc46zm6blzndnw0w2w8qv0sp8z4xcxqgw2rzf"; - replacement in Cargo.nix at line 703
version = "0.13.0";version = "0.14.0"; - replacement in Cargo.nix at line 705
sha256 = "022ai0jbbawngrx396qppwgzk4pk3v2fdwckzamvz6h154jsn2m5";sha256 = "1ajnr0rga4vya0fza12ighf3ffkm86w1rv8p5wf443s8nd30kj3w"; - edit in Cargo.nix at line 744
}{name = "winapi-util";packageId = "winapi-util";optional = true;target = { target, features }: target."windows"; - replacement in Cargo.nix at line 748
"default" = [ "unicode-width" "ansi-parsing" "windows-console-colors" ];"default" = [ "unicode-width" "ansi-parsing" ]; - replacement in Cargo.nix at line 751
resolvedDefaultFeatures = [ "ansi-parsing" "default" "regex" "unicode-width" "winapi-util" "windows-console-colors" ];resolvedDefaultFeatures = [ "ansi-parsing" "default" "regex" "unicode-width" ]; - replacement in Cargo.nix at line 1792
"getrandom 0.1.15" = rec {"getrandom 0.1.16" = rec { - replacement in Cargo.nix at line 1794
version = "0.1.15";version = "0.1.16"; - replacement in Cargo.nix at line 1796
sha256 = "1rj7psnlrnmsgyj6x2ag4c6367laq4g8kfd6pzamac99xk07nn7w";sha256 = "1kjzmz60qx9mn615ks1akjbf36n3lkv27zfwbcam0fzmj56wphwg"; - replacement in Cargo.nix at line 1803
packageId = "cfg-if 0.1.10";packageId = "cfg-if 1.0.0"; - edit in Cargo.nix at line 1820
"wasm-bindgen" = [ "bindgen" "js-sys" ]; - replacement in Cargo.nix at line 1875
version = "0.13.14";version = "0.13.15"; - replacement in Cargo.nix at line 1877
sha256 = "0q420j5lw7qchp5f6pgq938dkfi7pfllyqdd8j1yaxkmqyfdjv8q";sha256 = "0na3vsa44nn1sr6pzscn93w69wbmdih277mm2p3f6kcavb4ngwj4"; - replacement in Cargo.nix at line 2551
version = "0.4.6";version = "0.4.7"; - replacement in Cargo.nix at line 2553
sha256 = "1rnpb7rr8df76gnlk07b9086cn7fc0dxxy1ghh00q6nip7bklvyw";sha256 = "0di7fggbknwfjcw8cgzm1dnm3ik32l2m1f7nmyh8ipmh45h069fx"; - replacement in Cargo.nix at line 2647
version = "0.12.16+1.1.0";version = "0.12.17+1.1.0"; - replacement in Cargo.nix at line 2649
sha256 = "083hr4d1if61pb997myp57hfh0idv26bx5ai2nc5m5zf67wv54cz";sha256 = "0hc89v7kp2b3rbc64cxq024shd85m8vqcs14i3gjclblr9jxzszl"; - replacement in Cargo.nix at line 2699
version = "1.0.0-alpha.22";version = "1.0.0-alpha.23"; - edit in Cargo.nix at line 2766
optional = true; - edit in Cargo.nix at line 2801
optional = true; - replacement in Cargo.nix at line 2837
"ondisk-repos" = [ "mmap" "zstd" "ignore" "canonical-path" ];"ondisk-repos" = [ "mmap" "zstd" "ignore" "canonical-path" "lru-cache" "tempfile" ]; - replacement in Cargo.nix at line 2842
resolvedDefaultFeatures = [ "canonical-path" "default" "dump" "flate2" "ignore" "mmap" "ondisk-repos" "regex" "tar" "tarball" "text-changes" "tokio" "zstd" "zstd-seekable" ];resolvedDefaultFeatures = [ "canonical-path" "default" "dump" "flate2" "ignore" "lru-cache" "mmap" "ondisk-repos" "regex" "tar" "tarball" "tempfile" "text-changes" "tokio" "zstd" "zstd-seekable" ]; - replacement in Cargo.nix at line 3272
version = "0.2.6";version = "0.2.7"; - replacement in Cargo.nix at line 3274
sha256 = "0grsinsgq1pd70c6k9mif7wambwq2jxh8jhvdgwf9i7dnlwpkk3g";sha256 = "1m6v16xl8h4pm32pw6yhrvgwznf60bqhj2qhb1yrb8wd3hp6pndq"; - edit in Cargo.nix at line 3328
}];devDependencies = [{name = "tempfile";packageId = "tempfile"; - edit in Cargo.nix at line 3337
"alpn" = [ "security-framework/alpn" ]; - edit in Cargo.nix at line 3873
}{name = "thiserror";packageId = "thiserror"; - replacement in Cargo.nix at line 3908
version = "0.2.0";version = "0.3.0"; - replacement in Cargo.nix at line 4215
packageId = "getrandom 0.1.15";packageId = "getrandom 0.1.16"; - replacement in Cargo.nix at line 4381
packageId = "getrandom 0.1.15";packageId = "getrandom 0.1.16"; - replacement in Cargo.nix at line 4468
packageId = "getrandom 0.1.15";packageId = "getrandom 0.1.16"; - replacement in Cargo.nix at line 4857
version = "0.14.5";version = "0.15.2"; - replacement in Cargo.nix at line 4859
sha256 = "1231wkv5dv08k9sv85isaa8ra8j0nd8jjxirlzz7196fws5v4zhf";sha256 = "0bsym4q8zm0q7zk5jj5ik02ip3yjr3p5y27mrsg1p03jazz7jw6y"; - edit in Cargo.nix at line 4866
name = "crc32fast";packageId = "crc32fast";optional = true;}{ - replacement in Cargo.nix at line 4898
"mmap" = [ "memmap" ];"crc32" = [ "crc32fast" ];"mmap" = [ "memmap" "crc32" ]; - replacement in Cargo.nix at line 4901
resolvedDefaultFeatures = [ "default" "git2" "memmap" "mmap" ];resolvedDefaultFeatures = [ "crc32" "crc32fast" "default" "git2" "memmap" "mmap" ]; - replacement in Cargo.nix at line 5066
version = "1.0.60";version = "1.0.61"; - replacement in Cargo.nix at line 5068
sha256 = "0yapc7xxk8dx12691yj0l13008rgvknmc6krvk8jwj7y4x6yh00m";sha256 = "0nijvxvgcncvd1wbn73zx7q14bdxah0gf2789qd8kdjpa1cv5kjg"; - replacement in Cargo.nix at line 5202
version = "1.0.55";version = "1.0.56"; - replacement in Cargo.nix at line 5204
sha256 = "0ypk6j1p1akpd016rh0ksl4rpic7zqbip3k2rjf022fxvl8sfwd5";sha256 = "0wlvjgxhqvcp36zg20q4jzx5khfrk2vhal7fxs3d2w21x7fjv059"; - replacement in Cargo.nix at line 5369
version = "1.0.22";version = "1.0.23"; - replacement in Cargo.nix at line 5371
sha256 = "0gp5wp7izpv9rdvq035ajbxcl3g0vck61pg9y6mfsvk1hi5y76hf";sha256 = "0imiv97kdlba0r0ld6mlizfmw5rpmfzhvk7xw8l8k35zd9n63k3n"; - replacement in Cargo.nix at line 5385
version = "1.0.22";version = "1.0.23"; - replacement in Cargo.nix at line 5387
sha256 = "0mnx51374c69l1w7gh98prn2wzm2yvmlll4ms567a42vx0ihz8lv";sha256 = "1law4wqpc36hxs4vcgc1pjjniy4l6xn7kwvf0k886xf2mqn3mrwv"; - replacement in Cargo.nix at line 5558
packageId = "whoami 1.0.1";packageId = "whoami 1.0.3"; - replacement in Cargo.nix at line 7033
"whoami 1.0.1" = rec {"whoami 1.0.3" = rec { - replacement in Cargo.nix at line 7035
version = "1.0.1";version = "1.0.3"; - replacement in Cargo.nix at line 7037
sha256 = "0d90722ay0dlbgakxghmx5wpiibsqgcjb5wf382mgiplzbkram73";sha256 = "0dmlxqq6758wysx46zr64b4q9g72d0ax9f4hlpb86qgk8vhv55fm"; - replacement in Cargo.lock at line 5
version = "0.14.0"version = "0.14.1" - replacement in Cargo.lock at line 7
checksum = "7c0929d69e78dd9bf5408269919fcbcaeb2e35e5d43e5815517cdc6a8e11a423"checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" - replacement in Cargo.lock at line 29
version = "1.0.36"version = "1.0.37" - replacement in Cargo.lock at line 31
checksum = "68803225a7b13e47191bab76f2687382b60d259e8cf37f6e1893658b84bb9479"checksum = "ee67c11feeac938fae061b232e38e0b6d94f97a9df10e6271319325ac4c56a86" - replacement in Cargo.lock at line 232
version = "0.13.0"version = "0.14.0" - replacement in Cargo.lock at line 234
checksum = "a50aab2529019abfabfa93f1e6c41ef392f91fbf179b347a7e96abb524884a08"checksum = "7cc80946b3480f421c2f17ed1cb841753a371c7c5104f51d507e13f532c856aa" - edit in Cargo.lock at line 243
"winapi-util", - replacement in Cargo.lock at line 637
version = "0.1.15"version = "0.1.16" - replacement in Cargo.lock at line 639
checksum = "fc587bc0ec293155d5bfa6b9891ec18a1e330c234f896ea47fbada4cadbe47e6"checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" - replacement in Cargo.lock at line 641
"cfg-if 0.1.10","cfg-if 1.0.0", - replacement in Cargo.lock at line 665
version = "0.13.14"version = "0.13.15" - replacement in Cargo.lock at line 667
checksum = "186dd99cc77576e58344ad614fa9bb27bad9d048f85de3ca850c1f4e8b048260"checksum = "44f267c9da8a4de3c615b59e23606c75f164f84896e97f4dd6c15a4294de4359" - replacement in Cargo.lock at line 903
version = "0.4.6"version = "0.4.7" - replacement in Cargo.lock at line 905
checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" - replacement in Cargo.lock at line 949
version = "0.12.16+1.1.0"version = "0.12.17+1.1.0" - replacement in Cargo.lock at line 951
checksum = "9f91b2f931ee975a98155195be8cd82d02e8e029d7d793d2bac1b8181ac97020"checksum = "f4ebdf65ca745126df8824688637aa0535a88900b83362d8ca63893bcf4e8841" - replacement in Cargo.lock at line 963
version = "1.0.0-alpha.22"version = "1.0.0-alpha.23" - replacement in Cargo.lock at line 1157
version = "0.2.6"version = "0.2.7" - replacement in Cargo.lock at line 1159
checksum = "6fcc7939b5edc4e4f86b1b4a04bb1498afaaf871b1a6691838ed06fcb48d3a3f"checksum = "b8d96b2e1c8da3957d58100b09f102c6d9cfdfced01b7ec5a8974044bb09dbd4" - replacement in Cargo.lock at line 1333
version = "1.0.0-alpha.26"version = "1.0.0-alpha.27" - edit in Cargo.lock at line 1364
"thiserror", - replacement in Cargo.lock at line 1374
version = "0.2.0"version = "0.3.0" - replacement in Cargo.lock at line 1512
"getrandom 0.1.15","getrandom 0.1.16", - replacement in Cargo.lock at line 1557
"getrandom 0.1.15","getrandom 0.1.16", - replacement in Cargo.lock at line 1599
"getrandom 0.1.15","getrandom 0.1.16", - replacement in Cargo.lock at line 1711
version = "0.14.5"version = "0.15.2" - replacement in Cargo.lock at line 1713
checksum = "0e7eb28be6cea470fea739762951b340229591523a16b4759a08ec56f6e46188"checksum = "de7079fe5772801b9ecef5085feec8d28f1b0598b14859e63f18d48f30a95e2f" - edit in Cargo.lock at line 1715
"crc32fast", - replacement in Cargo.lock at line 1785
version = "1.0.60"version = "1.0.61" - replacement in Cargo.lock at line 1787
checksum = "1500e84d27fe482ed1dc791a56eddc2f230046a040fa908c08bda1d9fb615779"checksum = "4fceb2595057b6891a4ee808f70054bd2d12f0e97f1cbb78689b59f676df325a" - replacement in Cargo.lock at line 1843
version = "1.0.55"version = "1.0.56" - replacement in Cargo.lock at line 1845
checksum = "a571a711dddd09019ccc628e1b17fe87c59b09d513c06c026877aa708334f37a"checksum = "a9802ddde94170d186eeee5005b798d9c159fa970403f1be19976d0cfb939b72" - replacement in Cargo.lock at line 1908
version = "1.0.22"version = "1.0.23" - replacement in Cargo.lock at line 1910
checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e"checksum = "76cc616c6abf8c8928e2fdcc0dbfab37175edd8fb49a4641066ad1364fdab146" - replacement in Cargo.lock at line 1917
version = "1.0.22"version = "1.0.23" - replacement in Cargo.lock at line 1919
checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56"checksum = "9be73a2caec27583d0046ef3796c3794f868a5bc813db689eed00c7631275cd1" - replacement in Cargo.lock at line 1978
"whoami 1.0.1","whoami 1.0.3", - replacement in Cargo.lock at line 2371
version = "1.0.1"version = "1.0.3" - replacement in Cargo.lock at line 2373
checksum = "e35495e7faf4c657051a8e9725d9c37ac57879e915be3ed55bb401af84382035"checksum = "d595b2e146f36183d6a590b8d41568e2bc84c922267f43baf61c956330eeb436"