replacement in pijul/src/remote/ssh.rs at line 849
− F: FnMut(&mut A, u64, Hash, libpijul::Merkle) -> Result<(), anyhow::Error>,
+ F: FnMut(&mut A, u64, Hash, libpijul::Merkle, bool) -> Result<(), anyhow::Error>,
replacement in pijul/src/remote/ssh.rs at line 875
− super::ListLine::Change { n, h, m } => f(a, n, h, m)?,
+ super::ListLine::Change { n, h, m, is_tagged } => f(a, n, h, m, is_tagged)?,
edit in pijul/src/remote/mod.rs at line 190
+ pub tags: HashSet<Merkle>,
replacement in pijul/src/remote/mod.rs at line 196
[4.3195]→[4.3195:3250](∅→∅) − pub theirs_ge_dichotomy: Vec<(u64, Hash, Merkle)>,
+ pub theirs_ge_dichotomy: Vec<(u64, Hash, Merkle, bool)>,
replacement in pijul/src/remote/mod.rs at line 289
[4.6984]→[4.6984:7022](∅→∅) − .filter_map(|(_, h, _)| {
+ .filter_map(|(_, h, _, _)| {
replacement in pijul/src/remote/mod.rs at line 324
edit in pijul/src/remote/mod.rs at line 330
edit in pijul/src/remote/mod.rs at line 345
+ let mut tags = HashSet::new();
replacement in pijul/src/remote/mod.rs at line 349
[4.9021]→[4.9021:9056](∅→∅) replacement in pijul/src/remote/mod.rs at line 368
[4.9776]→[4.9776:9827](∅→∅) − to_download.push(h.into())
+ to_download.push(h.into());
+ if txn.is_tagged(&remote_channel.tags, n)? {
+ tags.insert(m.into());
+ }
edit in pijul/src/remote/mod.rs at line 379
replacement in pijul/src/remote/mod.rs at line 522
− for (_, h, _) in theirs_ge_dichotomy.iter() {
+ let mut tags = HashSet::new();
+ for (_, h, m, is_tagged) in theirs_ge_dichotomy.iter() {
edit in pijul/src/remote/mod.rs at line 527
+ if *is_tagged {
+ tags.insert(*m);
+ }
edit in pijul/src/remote/mod.rs at line 536
replacement in pijul/src/remote/mod.rs at line 576
[4.12796]→[4.12796:12828](∅→∅) replacement in pijul/src/remote/mod.rs at line 598
[4.13766]→[4.13766:13894](∅→∅) − for (n, h, m) in theirs_ge_dichotomy.iter().copied() {
− txn.put_remote(&mut remote_ref, n, (h, m))?;
+ for (n, h, m, t) in theirs_ge_dichotomy.iter().copied() {
+ txn.put_remote(&mut remote_ref, n, (h, m, t))?;
edit in pijul/src/remote/mod.rs at line 631
replacement in pijul/src/remote/mod.rs at line 639
[4.15437]→[4.15437:15783](∅→∅) − for thing in txn.iter_remote(&remote_ref.lock().remote, 0)? {
− let (_, libpijul::pristine::Pair { a: hash, b: merkle }) = thing?;
− if state_cond(txn, &merkle)? {
− break;
− } else if change_cond(txn, &hash.into()) {
− to_download.push(Hash::from(hash));
+ let mut tags = HashSet::new();
+ {
+ let rem = remote_ref.lock();
+ for thing in txn.iter_remote(&rem.remote, 0)? {
+ let (n, libpijul::pristine::Pair { a: hash, b: merkle }) = thing?;
+ if state_cond(txn, &merkle)? {
+ break;
+ } else if change_cond(txn, &hash.into()) {
+ to_download.push(Hash::from(hash));
+ if txn.is_tagged(&rem.tags, (*n).into())? {
+ tags.insert(merkle.into());
+ }
+ }
edit in pijul/src/remote/mod.rs at line 654
[4.15815]→[4.15815:15816](∅→∅) edit in pijul/src/remote/mod.rs at line 658
replacement in pijul/src/remote/mod.rs at line 676
[4.16649]→[4.16649:16709](∅→∅) − for (_, hash, merkle) in &theirs_ge_dichotomy {
+ let mut tags = HashSet::new();
+ for (_, hash, merkle, t) in &theirs_ge_dichotomy {
edit in pijul/src/remote/mod.rs at line 682
+ if *t {
+ tags.insert(*merkle);
+ }
edit in pijul/src/remote/mod.rs at line 692
replacement in pijul/src/remote/mod.rs at line 708
[4.17557]→[4.17557:17643](∅→∅) − ) -> Result<(HashSet<Position<Hash>>, Vec<(u64, Hash, Merkle)>), anyhow::Error> {
+ ) -> Result<(HashSet<Position<Hash>>, Vec<(u64, Hash, Merkle, bool)>), anyhow::Error> {
replacement in pijul/src/remote/mod.rs at line 710
[4.17675]→[4.17675:17737](∅→∅) − let f = |v: &mut Vec<(u64, Hash, Merkle)>, n, h, m| {
+ let f = |v: &mut Vec<(u64, Hash, Merkle, bool)>, n, h, m, t| {
replacement in pijul/src/remote/mod.rs at line 712
[4.17778]→[4.17778:17812](∅→∅) + Ok(v.push((n, h, m, t)))
replacement in pijul/src/remote/mod.rs at line 857
[4.1161]→[4.453:518](∅→∅) − let f = |a: &mut (&mut T, &mut RemoteRef<T>), n, h, m| {
+ let f = |a: &mut (&mut T, &mut RemoteRef<T>), n, h, m, is_tagged| {
replacement in pijul/src/remote/mod.rs at line 859
− txn.put_remote(remote, n, (h, m))?;
+ txn.put_remote(remote, n, (h, m, is_tagged))?;
replacement in pijul/src/remote/mod.rs at line 1291
[4.2996]→[4.2996:3137](∅→∅) − static ref CHANGELIST_LINE: Regex =
− Regex::new(r#"(?P<num>[0-9]+)\.(?P<hash>[A-Za-z0-9]+)\.(?P<merkle>[A-Za-z0-9]+)"#).unwrap();
+ static ref CHANGELIST_LINE: Regex = Regex::new(
+ r#"(?P<num>[0-9]+)\.(?P<hash>[A-Za-z0-9]+)\.(?P<merkle>[A-Za-z0-9]+)(?P<tag>\.)?"#
+ )
+ .unwrap();
replacement in pijul/src/remote/mod.rs at line 1300
[4.3266]→[4.3266:3309](∅→∅) − Change { n: u64, h: Hash, m: Merkle },
+ Change {
+ n: u64,
+ h: Hash,
+ m: Merkle,
+ is_tagged: bool,
+ },
edit in pijul/src/remote/mod.rs at line 1321
+ is_tagged: caps.name("tag").is_some(),
replacement in pijul/src/remote/local.rs at line 56
[4.2043]→[4.2043:2117](∅→∅) − F: FnMut(&mut A, u64, Hash, Merkle) -> Result<(), anyhow::Error>,
+ F: FnMut(&mut A, u64, Hash, Merkle, bool) -> Result<(), anyhow::Error>,
replacement in pijul/src/remote/local.rs at line 109
[4.9387]→[4.2163:2209](∅→∅) − f(a, n, h.into(), m.into())?;
+ f(
+ a,
+ n,
+ h.into(),
+ m.into(),
+ remote_txn.is_tagged(&remote_channel.read().tags, n)?,
+ )?;
replacement in pijul/src/remote/http.rs at line 223
[4.2324]→[4.2324:2408](∅→∅) − F: FnMut(&mut A, u64, Hash, libpijul::Merkle) -> Result<(), anyhow::Error>,
+ F: FnMut(&mut A, u64, Hash, libpijul::Merkle, bool) -> Result<(), anyhow::Error>,
replacement in pijul/src/remote/http.rs at line 269
[4.6079]→[4.2454:2533](∅→∅) − super::ListLine::Change { n, m, h } => f(a, n, h, m)?,
+ super::ListLine::Change { n, m, h, is_tagged } => f(a, n, h, m, is_tagged)?,
replacement in pijul/src/commands/protocol.rs at line 140
[4.12631]→[4.127893:127975](∅→∅),
[4.127893]→[4.127893:127975](∅→∅) − writeln!(o, "{}.{}.{}", n, h.to_base32(), m.to_base32())?
+ if txn.is_tagged(&channel.read().tags, n)? {
+ writeln!(o, "{}.{}.{}.", n, h.to_base32(), m.to_base32())?
+ } else {
+ writeln!(o, "{}.{}.{}", n, h.to_base32(), m.to_base32())?
+ }
edit in libpijul/src/pristine/sanakirja.rs at line 1308
+ tags: Db::from_page(remote.tags.into()),
edit in libpijul/src/pristine/sanakirja.rs at line 1438
+ tags: Db::from_page(remote.tags.into()),
replacement in libpijul/src/pristine/sanakirja.rs at line 1786
[4.562292]→[4.562292:562319](∅→∅) + v: (Hash, Merkle, bool),
edit in libpijul/src/pristine/sanakirja.rs at line 1798
+ if v.2 {
+ btree::put(&mut self.txn, &mut remote.tags, &k.into(), &())?;
+ }
edit in libpijul/src/pristine/sanakirja.rs at line 2070
+ tags: Db::from_page(remote.tags.into()),
edit in libpijul/src/pristine/sanakirja.rs at line 2082
+ tags: btree::create_db(&mut self.txn)?,
edit in libpijul/src/pristine/mod.rs at line 121
edit in libpijul/src/pristine/mod.rs at line 239
replacement in libpijul/src/pristine/mod.rs at line 1872
[4.638332]→[4.638332:638359](∅→∅) + v: (Hash, Merkle, bool),