TKEVOH7HXON7SOBGXTUDHAHO2U2GPTQRNESP6ERKUQAS526OZIRAC
TZ42DX3BML5C3O5Z6OBVNBCHSIIHT6AOJPD6ICOLOP4LPYFXQN2QC
I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC
L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
YN63NUZO4LVJ7XPMURDULTXBVJKW5MVCTZ24R7Z52QMHO3HPDUVQC
UDHP4ZVBQZT2VBURB2MDCU2IZDNMCAFSIUKWRBDQ5BWMFKSN2LYQC
WLUID7NANDWTN5GOECNEKFTLZF3MUVS7K26YWLYLSGJ56G63NV4QC
SZWBLWZ4LUJZHTSYOIGJMXM7KPCGWJFPKLHYA5MHY7UTPNLZV5KQC
Q45QHPO4HDTEZF2W4UDZSYYQ46BPEIWSW4GJILZR5HTJNLKXJABQC
K6GWUOD55G377RVEEMMRPZ4EUAHCM2BGXNRJTE5UZJFFMJGFCEZQC
5QTMRUXNE2XNJCMLN6MQN24UEZ55EFC3LIR4PO6OPNTT5KEL7WXQC
X6YFD4WVMUYJCR5IYPJH6UKYVWSA7DKBRVJ6XQFXHOE2TRYUTAHAC
HXEIH4UQ6EX3MAY33JK4WQUE5GUSZ673OX57JKNFXC2N2QLTXKXAC
CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC
LGEJSLTYI7Y2CYC3AN6ECMT3D3MTWCAKZPVQEG5MPM2OBW5FQ46AC
76PCXGML77EZWTRI5E6KHLVRAFTJ2AB5YRN5EKOYNAPKTWY2KCGAC
FBXYP7QM7SG6P2JDJVQPPCRKJE3GVYXNQ5GVV4GRDUNG6Q4ZRDJQC
IQ4FCHPZYGTZHCQHUIRCMUI5LCHIDSJCM2AZXGRJARWLCPPLXZOQC
GHO6DWPILBBTL6CVZKERJBTFL3EY6ZT4YM4E5R4S6YPGVFKFHCVAC
VO5OQW4W2656DIYYRNZ3PO7TQ4JOKQ3GVWE5ALUTYVMX3WMXJOYQC
6YMDOZIB5LVYLFIDGN2WNT5JTHEAMS4TFPVDEZ3OWXWOKJOC5QDAC
let mut self_ = std::mem::replace(self, RemoteRepo::None);
let (hash_send, mut hash_recv) = tokio::sync::mpsc::channel(100);
let mut change_path_ = repo.path.clone();
change_path_.push(DOT_DIR);
change_path_.push("changes");
let t = tokio::spawn(async move {
self_
.download_changes(&mut hash_recv, &mut send, &mut change_path_, false)
.await?;
Ok::<_, anyhow::Error>(self_)
});
let mut self_ = std::mem::replace(self, RemoteRepo::None);
let t = tokio::spawn(async move {
self_
.download_changes(&to_download_, &mut send, &mut change_path_, false)
.await?;
Ok::<_, anyhow::Error>(self_)
});
while let Some(hash) = recv_hash.recv().await {
self_
.download_changes(&[hash], &mut send_signal, &mut change_path_, false)
.await?;
}
self_
.download_changes(&mut recv_hash, &mut send_signal, &mut change_path_, false)
.await?;
while let Some(h) = recv_hash.recv().await {
debug!("downloading full patch: {:?}", h);
self_
.download_changes(&[h], &mut send_sig, &mut changes_dir, true)
.await?;
}
let result: Result<_, anyhow::Error> = Ok(self_);
result
self_
.download_changes(&mut recv_hash, &mut send_sig, &mut changes_dir, true)
.await?;
Ok::<_, anyhow::Error>(self_)
if txn.is_alive(&channel, &v)? {
send_hash.send(*c).await?;
let graph = txn.graph(&channel);
let mut it = txn.iter_graph(graph, Some(&v))?;
while let Some(x) = txn.next_graph(&graph, &mut it) {
let (v, e) = x?;
if v.change > change {
break;
} else if e.flag().is_alive_parent() {
send_hash.send(*c).await?;
break;
}
for c in c {
libpijul::changestore::filesystem::push_filename(&mut self.changes_dir, c);
libpijul::changestore::filesystem::push_filename(&mut path, c);
while let Some(c) = hashes.recv().await {
libpijul::changestore::filesystem::push_filename(&mut self.changes_dir, &c);
libpijul::changestore::filesystem::push_filename(&mut path, &c);
fn iter_graph(&self, g: &Self::Graph) -> Result<Self::GraphCursor, TxnErr<Self::GraphError>> {
Ok(::sanakirja::btree::cursor::Cursor::new(&self.txn, &g)?)
fn iter_graph(
&self,
g: &Self::Graph,
s: Option<&Vertex<ChangeId>>,
) -> Result<Self::GraphCursor, TxnErr<Self::GraphError>> {
let mut c = ::sanakirja::btree::cursor::Cursor::new(&self.txn, &g)?;
if let Some(s) = s {
c.set(&self.txn, s, None)?;
}
Ok(c)