#timestamp #build #mtime #ci #file-content

build timelord

A Rust library to preserve file timestamps (mtime) between builds, even with fresh git checkouts

3 stable releases

Uses new Rust 2024

new 3.0.2 Mar 22, 2025

#105 in Build Utils

Download history 163/week @ 2025-03-17

163 downloads per month
Used in timelord-cli

MIT/Apache

31KB
667 lines

timelord

Crates.io Documentation License: MIT OR Apache-2.0

A Rust library to preserve file timestamps (mtime) between builds, even with fresh git checkouts.

Usage

Timelord provides the sync function to preserve file timestamps between builds:

use timelord::sync;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    sync("path/to/source", "path/to/cache")?;
    Ok(())
}

The sync function takes two arguments:

  • source_dir: Directory containing files to preserve timestamps for
  • cache_dir: Persistent directory to store the timestamp database across builds

Timelord stores a database of file sizes and hashes, and restores old timestamps if file contents remain unchanged.

For CLI usage, see the timelord-cli crate.

Additional Configuration

To ensure Timelord works properly, especially in CI environments, it's important to use the -Zremap-cwd-prefix rustc flag. This flag helps maintain consistent paths across different build environments.

License

Licensed under either of

at your option.

Dependencies

~9–34MB
~491K SLoC