Higher resolution for status change times on Unix, and coarser test for 1-second-resolution filesystems
Dependencies
- [2]
KGN7KVLAFormatting - [3]
LODKR74EChanging touched_channel resolution to milliseconds instead of seconds - [4]
F6V27C3MFixing the "old file optimisation" in record, after the move to parallelisable records - [5]
EUZFFJSOUpdating Pijul with the latest changes in Libpijul - [6]
SXEYMYF7Fixing the bad changes in history (unfortunately, by rebooting). - [7]
3ZAS64J6Solving conflicts - [8]
34Q5U4HLUpdating the channel touched time after a clone - [9]
QU6T6J6WUse the change time in addition to the modified time when detecting untouched files (at least on Unix) - [10]
GHO6DWPIRefactoring iterators - [11]
MFTN7GBWPre-tags cleanup + fast Sanakirja - [12]
I24UEJQLVarious post-fire fixes - [13]
YN63NUZOSanakirja 1.0
Change contents
- replacement in pijul/src/commands/record.rs at line 190
txn_.touch_channel(&mut *channel.write(), Some(oldest));txn_.touch_channel(&mut *channel.write(), Some((oldest / 1000) * 1000)); - replacement in pijul/src/commands/clone.rs at line 116
.as_millis() as u64;.as_secs() as u64; - replacement in pijul/src/commands/clone.rs at line 118
.touch_channel(&mut *channel.write(), Some(time + 1));.touch_channel(&mut *channel.write(), Some(time * 1000 + 1)); - replacement in libpijul/src/working_copy/filesystem.rs at line 357
std::time::SystemTime::UNIX_EPOCH + std::time::Duration::from_secs(attr.ctime() as u64);std::time::SystemTime::UNIX_EPOCH + std::time::Duration::from_millis(attr.ctime() as u64 * 1000 + attr.ctime_nsec() as u64 / 1_000_000); - replacement in libpijul/src/record.rs at line 721
Ok(last_modified.duration_since(std::time::UNIX_EPOCH)?.as_millis() as u64>= txn.last_modified(channel))// Account for low-resolution filesystems, by truncating the// channel modification time if the file modification time is// a multiple of 1000.let last_mod = last_modified.duration_since(std::time::UNIX_EPOCH)?.as_millis() as u64;let channel_mod = if last_mod % 1000 == 0 {(txn.last_modified(channel) / 1000) * 1000} else {txn.last_modified(channel)};Ok(last_mod >= channel_mod) - replacement in libpijul/src/pristine/sanakirja.rs at line 1604
channel.last_modified = duration.as_millis() as u64channel.last_modified = (duration.as_millis() as u64 / 1000) * 1000