EUZFFJSOWV4PXDFFPDAFBHFUUMOFEU6ST7JH57YYRRR2SEOXLN6QC
NHO3QO3WZTJBRPGIQVLNPHUYAB6YMTDOPHNGGTYVPSTP47TBQJ2AC
WQQJLPTXGJGK2LPRV633QTPLDXE4E5N7GQ4Y7FOLSFTJBWF6GHRQC
NEJOYVJB4VXJJPFBWD2YK7PK6KKHQGRHIJHLEJ53HLQ3ZQRE5EPQC
L2VH4BYK3IULLGBHXMZJWKRKDQY43QEMQRTXFJCNRDE7PODLXWTAC
DX2FO4HZDTTBU436YRPQW3MIIVFB3ZFSZ3SI5GYLTIWCIGRTQ6DAC
HQ2C4VT5O2IOUAQQTEAF7VIFNJFOZWBW2R5ACLK3TD4YZUXNZ77QC
RG4YZPKLWZXRNROBZQD4OLWMF46JPZC4WAM3Q6DBLDQYLL4QNQBQC
SXEYMYF7P4RZMZ46WPL4IZUTSQ2ATBWYZX7QNVMS3SGOYXYOHAGQC
I24UEJQLCH2SOXA4UHIYWTRDCHSOPU7AFTRUOTX7HZIAV4AZKYEQC
YN63NUZO4LVJ7XPMURDULTXBVJKW5MVCTZ24R7Z52QMHO3HPDUVQC
CCLLB7OIFNFYJZTG3UCI7536TOCWSCSXR67VELSB466R24WLJSDAC
A3RM526Y7LUXNYW4TL56YKQ5GVOK2R5D7JJVTSQ6TT5MEXIR6YAAC
76PCXGML77EZWTRI5E6KHLVRAFTJ2AB5YRN5EKOYNAPKTWY2KCGAC
BNPSVXIC72C3WT33YKCH766OBLLNCS7POX6U6JXZSQQPJF2M22MQC
5SLOJYHGPMZVCOE3IS7ICNMJJYX3RBT6CDG5MAV6T4CJIOW7YZ6QC
TKEVOH7HXON7SOBGXTUDHAHO2U2GPTQRNESP6ERKUQAS526OZIRAC
MU5GSJAW65PEG3BRYUKZ7O37BPHW3MOX3S5E2RFOXKGUOJEEDQ5AC
UDHP4ZVBQZT2VBURB2MDCU2IZDNMCAFSIUKWRBDQ5BWMFKSN2LYQC
L4JXJHWXYNCL4QGJXNKKTOKKTAXKKXBJUUY7HFZGEUZ5A2V5H34QC
ZBNKSYA6PW4DSPC3NCRUZLVHW2GNXMCSDSAGEIKHGHDGGZRBH7ZQC
VMPAOJS2ZFOLNXALHWSVM5AFENWX6ZUACB45EJV3HXI7DQNAZPHQC
Y6EVFMTA6FOH3OQH6QCSWMI3F6SYZT2FSHO6GF4M3ICENDCWFM4QC
5OGOE4VWS5AIG4U2UYLLIGA3HY6UB7SNQOSESHNXBLET3VQXFBZAC
SLJ3OHD4F6GJGZ3SV2D7DMR3PXYHPSI64X77KZ3RJ24EGEX6ZNQAC
K7JPP64SNKZNMB6XJAYYHDC2464I3BQDLVA3IX4YCQZ4P5TXZXRAC
GUL4M5FIE7JYXJHR7MCTQS3543HIQXGPLBWZKASBAWWEA4SZ75CAC
QL6K2ZM35B3NIXEMMCJWUSFXOBQHAGXRDMO7ID5DCKTJH4QJVY7QC
AAXP2534BWX2ZUDZZHUMLYDBMGFGUH32CNRA3KOLER3JKOIJUZLAC
Y7YAFMFFJY3SQ3GYN3SS4V3FZWMH3B5L65AXQBXOR5XARSMF5JJQC
V435QOJRFHNKW3NKJHMVMFOGO3KGAZVSURLSGFUHVKOMHMF4Q2ZQC
NLGQAH4H35XC5XTH26BRXVFWGPPAMA4MDN3MHMGCOYE6ZZQMQ4AAC
ZHABNS3S6FSINO74FOI5KHYXYDTBPO4FQTTYTUS7NNKEVVNLYC4AC
PGERZ3KJIQIREXAYLKLZR4526X5RPKIA6LSVZL2DGYQ5UVPIIBUQC
KWAGWB73AMLJFK2Z7SBKHHKKHFRX7AQKXCWDN2MBX72RYCNMB36QC
MF3WAHBIH6Q2F7ZOKWPEJF6VGSKJITWLR3Z64GTD6YQZNA5EATWQC
3MHUNYERBYLR5FOB7YJZINOFKXSXMLGBF5F6UR2MKNYYODIJIFGQC
OU243LABJJZ3MQHYW2A2MYKW7KZLTZGHJJXDR2BIIIHXT5BSYN3AC
EEBKW7VTILH6AGGV57ZIJ3DJGYHDSYBWGU3C7Q4WWAKSVNUGIYMQC
F6V27C3M7GZHBHXMGAZMYO5XGWDYYNNIF2HLDE2VPNHTEVDSYGVQC
MFTN7GBWZNQAFHKER57MLZAJGVEAHV2GYAQN2QTDHTPCEURDVIGQC
3AMEP2Y5J6GA4AWQONF4JVA3XSR3ASLHHKMYG44R72SOUY3UQCDAC
5HF7C67M4DZMYTCIG32XEQQ662AHQMIHTHUK7TAVSO52XLMFBZPAC
M5FK3ABTKBDG6HHW32G7UKRJEJQKD2U7BPXNZ3HVHBKULWVV6CTQC
BE7GUCI2N6TX3P2HRMFSH7XLJKILDPOKOXKA7HWOABBFNKCKMZLAC
I52XSRUH5RVHQBFWVMAQPTUSPAJ4KNVID2RMI3UGCVKFLYUO6WZAC
JL4WKA5PBKXRNAMETYO4I52QKASQ3COYHH2JKGA7W5YLIRZZH53AC
HSVGP2G4D2F56DS3YKZLSYPS4A5BNGH4NTAXAOZ57OCXFM3E5AYAC
XSRTXUAS3DXJA42TZESMETFVTKU2OBUDGDE4N5F2CVWI4CLOUJ4AC
44BN7FWSIXKG75IJUTCXLJE7VANNQFPRHQXTPLQHFU7AKGLSPQRAC
3KRGVQFUWFHPOGZOXVTJYNCM4XBRVYITAEOVPKBSAZ5GZIUO5KVQC
2RXOCWUWOGHEKHT5W73LAHJSOZVRTOGS7BWLSIGEEEBJGMCZBXQAC
6RVT5X4LTRP5XHVDESXMIC2DHMT5MUQ24ZDWEBJ4XYTF6LJXK7CAC
5DVRL6MFXQOCPOZMYSKBERMRRVUTYRL2SRGRTU2MH4IEOFCDKM3QC
SMMBFECLGSUKRZW5YPOQPOQCOY2CH2OTZXBSZ3KG2N3J3HQZ5PSAC
3AZB5NUOZ3PEP5RX2M2QKA4OVAF6AIXQZ6GH4D6W3JK7UFCLA2RQC
IIV3EL2XYI2X7HZWKXEXQFAE3R3KC2Q7SGOT3Q332HSENMYVF32QC
A3DMBJJAPLS6ASSZ7JVVVULRQNZCF2WKYTRUD7EY7PKVYABSATFAC
B3QWIGDERNMB3M6P5WTWP5CN2DB3KCS7MVTEPC2XVJ237ZXVQGMAC
VU4KVXHWMLZCJJDO3DDUTNTYUDCDD7RSJ3QJ67EMNZV44H2YIKSAC
VO5OQW4W2656DIYYRNZ3PO7TQ4JOKQ3GVWE5ALUTYVMX3WMXJOYQC
EEOOHGQQK43J36LQJDSS3UK56M54DXPYE4VB3K4A2XAYGOYDJAXAC
OJZWJUF2TCGZ7RFVY6FPKBS5P3C4BGHZDPVH775OHVNVFMJICKNQC
4VWXL6KQGYGDUQRCVJCEVIV6CKJSEIYDX4YF33OX6EDNKJNEGD2AC
HMMMKONLCRAXVT7SO2ITTFDOJIQKKVSRIZPXYVPDC34RCBHWMHVAC
6DOXSHWGKJIMIPFCNLASGKBAJCJMJULW5HFRZAZ67EYSMXXGJ3KAC
2K7JLB4Z7BS5VFNWD4DO3MKYU7VNPA5MTVHVSDI3FQZ5ICM6XM6QC
OWCCRVO5LMF3AJ6CU76UOT6HS2VNGI6O3LGTTYQBKZLPCCRNETXQC
QE64ATLZWMKHYABCD3VA547PYXCK6YN3K7RE2TX3SCQNKG7XLVAQC
A6R6SGCPLFM45QNWJLISFBR3EEXVITYHCWEUOPNH4UIGIWJRTZAQC
XA23FMQM2AI7RMR36AYN7UNP2D5JWVJMJPHURWZO7URM7H46PU6AC
R3H7D42UZ446V5TO2574BMAQQAYYJPEIMSZVDPAGVIYU2COJSWBAC
MDADYULS5AWVMTJDGYCGNQTN6T7XJDRUBDTFILDY5MLF6I2PE5NAC
let (inodes, remote_changes) = self
.update_changelist(txn, path)
.await?
.expect("Remote is not self");
let (inodes, remote_changes) = if let Some(x) = self.update_changelist(txn, path).await? {
x
} else {
bail!("Channel not found")
};
let mut txn = self.pristine.mut_txn_begin()?;
let mut channel = txn.open_or_create_channel(to_channel.unwrap_or(&self.channel))?;
let txn = self.pristine.arc_txn_begin()?;
let channel = txn
.write()
.open_or_create_channel(to_channel.unwrap_or(&self.channel))?;
let txn = repo.pristine.mut_txn_begin()?;
let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
let txn = repo.pristine.arc_txn_begin()?;
let cur = txn
.read()
.current_channel()
.unwrap_or(crate::DEFAULT_CHANNEL)
.to_string();
let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
txn.into_inner().unwrap()
} else {
unreachable!()
};
let channel = txn.load_channel(&channel_name)?.unwrap();
let last_t = if let Some(n) = txn.reverse_log(&*channel.read()?, None)?.next() {
let channel = txn.read().load_channel(&channel_name)?.unwrap();
let last_t = if let Some(n) = txn.read().reverse_log(&*channel.read(), None)?.next()
{
changes_after(&*txn_, &*cur.read()?, a, &mut changediff, &mut inodes)?;
changes_after(&*txn_, &*channel.read()?, b, &mut changediff, &mut inodes)?;
changes_after(&*txn_, &*cur.read(), a, &mut changediff, &mut inodes)?;
changes_after(&*txn_, &*channel.read(), b, &mut changediff, &mut inodes)?;
let mut txn = if let Ok(txn) = Arc::try_unwrap(txn) {
txn.into_inner().unwrap()
} else {
unreachable!()
};
txn.apply_local_change(&mut channel, &change, &hash, &updates)?;
let mut txn_ = txn.write();
txn_.apply_local_change(&mut channel, &change, &hash, &updates)?;
let remote_changes = remote.update_changelist(&mut txn, &self.path).await?;
let channel = txn.open_or_create_channel(&channel_name)?;
let remote_changes = remote
.update_changelist(&mut *txn.write(), &self.path)
.await?;
let channel = txn.write().open_or_create_channel(&channel_name)?;
for x in txn.reverse_log(&*channel.read()?, None)? {
let (_, (h, m)) = x?;
if let Some((_, ref remote_changes)) = remote_changes {
if txn.remote_has_state(remote_changes, &m)? {
break;
}
let h_int = txn.get_internal(h)?.unwrap();
if !txn.remote_has_change(&remote_changes, &h)? {
if paths.is_empty() {
to_upload.push(h.into())
} else {
for p in paths.iter() {
if txn.get_touched_files(p, Some(h_int))?.is_some() {
to_upload.push(h.into());
break;
}
}
{
let txn = txn.read();
for x in txn.reverse_log(&*channel.read(), None)? {
let (_, (h, m)) = x?;
if let Some((_, ref remote_changes)) = remote_changes {
if txn.remote_has_state(remote_changes, &m)? {
break;
} else if let crate::remote::RemoteRepo::LocalChannel(ref remote_channel) = remote {
if let Some(channel) = txn.load_channel(remote_channel)? {
let channel = channel.read();
let h_int = txn.get_internal(h)?.unwrap();
if txn.get_changeset(txn.changes(&channel), h_int)?.is_none() {
if paths.is_empty() {
to_upload.push(h.into())
} else {
for p in paths.iter() {
if txn.get_touched_files(p, Some(h_int))?.is_some() {
to_upload.push(h.into());
break;
}
}
}
}
}
let mut txn = repo.pristine.mut_txn_begin()?;
let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
let txn = repo.pristine.arc_txn_begin()?;
let cur = txn
.read()
.current_channel()
.unwrap_or(crate::DEFAULT_CHANNEL)
.to_string();
for &i in touched.iter() {
if let Some((path, _)) = libpijul::fs::find_path(
&repo.changes,
&*txn.read().unwrap(),
&*channel.read()?,
false,
i,
)? {
touched_paths.push(path)
} else {
touched_paths.clear();
break;
{
let txn_ = txn.read();
for &i in touched.iter() {
if let Some((path, _)) =
libpijul::fs::find_path(&repo.changes, &*txn_, &*channel.read(), false, i)?
{
touched_paths.push(path)
} else {
touched_paths.clear();
break;
}
if txn.current_state(&*channel.read()?)? == state && extra.is_empty() {
txn.archive(&repo.changes, &channel, &mut tarball)?
if txn.read().current_state(&*channel.read())? == state && extra.is_empty() {
txn.read().archive(&repo.changes, &channel, &mut tarball)?
import_commit_parents(
repo,
dag,
txn.clone(),
channel.clone(),
&oid,
&mut ws,
&mut stats,
)?;
let state =
import_commit(git, repo, txn.clone(), channel.clone(), &oid, &mut stats)?;
import_commit_parents(repo, dag, &txn, &channel, &oid, &mut ws, &mut stats)?;
let state = import_commit(git, repo, &txn, &channel, &oid, &mut stats)?;
return Ok((
0,
None,
txn.current_state(&channel.read().unwrap())
.map_err(TxnErr)?,
));
return Ok((0, None, txn.current_state(&channel.read()).map_err(TxnErr)?));
let mut txn = repo.pristine.mut_txn_begin()?;
let mut channel = txn.open_or_create_channel(&self.channel)?;
let txn = repo.pristine.arc_txn_begin()?;
let mut channel = txn.write().open_or_create_channel(&self.channel)?;
let mut txn = if let Ok(t) = Arc::try_unwrap(txn) {
t.into_inner().unwrap()
} else {
unreachable!()
};
txn.set_current_channel(&self.channel)?;
txn.write().set_current_channel(&self.channel)?;
let mut txn = repo.pristine.mut_txn_begin()?;
let cur = txn.current_channel().unwrap_or(crate::DEFAULT_CHANNEL);
let txn = repo.pristine.arc_txn_begin()?;
let cur = txn
.read()
.current_channel()
.unwrap_or(crate::DEFAULT_CHANNEL)
.to_string();
let mut channel = channel.write().unwrap();
txn.apply_deps_rec(&repo.changes, &mut channel, hashes.last().unwrap())?;
let mut channel = channel.write();
txn.write()
.apply_deps_rec(&repo.changes, &mut channel, hashes.last().unwrap())?;