#mtime #cargo #restore #save #attributes #save-file #hash

app mtime-travel

一个用于保存和恢复文件mtime属性的的小工具

2 个不稳定版本

0.1.0 2024年5月23日
0.0.1 2023年12月25日

#285 in 开发工具

MIT/Apache

15KB
259 代码行

mtime-travel

crates.io link

一个用于保存和恢复文件mtime属性的小工具。保存时,它会记录文件的哈希值,恢复时,只有当文件哈希值匹配时才会恢复mtime。文件哈希使用SHA-256进行。

这可以用于避免在文件内容未更改但mtime已更改的情况下进行Rust重建,因为Rust会根据mtime进行重建(参见https://github.com/rust-lang/cargo/issues/6529)。一个不希望进行此类重建的例子是从CI中通过git拉取项目,因为这会改变mtime值,因此通常触发重建,即使你可能已经从之前的CI运行中缓存了构建工件。

安装

您可以通过 cargo 安装mtime-travel

cargo install --locked mtime-travel

用法

保存

Usage: mtime-travel save [OPTIONS] <TARGET_DIR>

Arguments:
  <TARGET_DIR>  The location to recursively scan for files

Options:
  -f, --file <FILE>           The location to a file to save the current mtimes to [default: mtimes.json]
  -i, --ignore [<IGNORE>...]  Regex patterns for which files to skip; multiple regex strings can be passed. Note the file paths checked are the absolute paths
  -v, --verbose               Enable verbose output
  -h, --help                  Print help

将当前目录保存到名为 mtimes.json 的文件中

mtime-travel save ./

要忽略某些正则表达式

mtime-travel save --ignore ".*foo.*" ./

保存到其他位置

mtime-travel save --file <MTIME_FILE_PATH> ./

这将输出一个包含文件的哈希值和mtime值的 .json 文件。

恢复

Usage: mtime-travel restore [OPTIONS] <TARGET_DIR>

Arguments:
  <TARGET_DIR>  The location to recursively restore mtimes to

Options:
  -f, --file <FILE>  The location to a file to restore previous mtimes from [default: mtimes.json]
  -v, --verbose      Enable verbose output
  -i, --ignore-hash  Restore mtime for a file even if the hash does not match
  -h, --help         Print help

从同一目录中名为 mtimes.json 的文件恢复当前目录的文件 如果文件哈希值匹配

mtime-travel restore ./

忽略文件哈希值

mtime-travel restore --ignore-hash ./

从不同路径的文件恢复

mtime-travel restore --file <MTIME_FILE_PATH> ./

依赖项

~4–14MB
~161K SLoC