2 个不稳定版本
0.2.0 | 2020 年 7 月 2 日 |
---|---|
0.1.0 | 2020 年 5 月 4 日 |
#2835 在 命令行工具
8KB
73 行
dirsh
dirsh 对目录内容进行哈希处理,同时尊重您的 .gitignore
文件及其自己的 .hashignore
文件。
动机
对构建的输入进行哈希处理是避免重建的一种便捷方式。目前解决此问题的方案要么是特定领域的,要么缺乏配置哪些文件应包含在哈希中的便捷方式。
用法
默认情况下,dirsh 对当前目录进行哈希处理。 .gitignore
和 .hashignore
将按 gitignore 规范 解析,并用于过滤。
dirsh 计算目录内容的 md5,并以 base32 编码无填充的方式返回哈希值。
$ dirsh -h
dirsh 0.2.0
Ignore-file-respecting consistent hasher of directory contents
USAGE:
dirsh [FLAGS] [paths]...
FLAGS:
-h, --help Prints help information
--no-gitignore don't parse gitignore (including global gitignore and local git excludes)
-V, --version Prints version information
ARGS:
<paths>... [default: ./]
算法
路径按字母顺序递归遍历。
将文件内容输入到摘要中,随后是 64 位的修改时间,以及 32 位的模式。
然后计算 md5 哈希值,并以无填充的方式 base32 编码(为了便于 URL 编码,以及与忽略大小写的文件系统兼容)。
开发
此项目使用 nix 构建,开发环境可以通过 nix-shell
获取,或者更好的是,lorri。
您可以使用 nix-build
构建发布二进制文件。
不使用 nix
这是一个标准的 Rust 项目。您需要 Rust 工具链来构建此项目。
cargobuild
依赖关系
~6–15MB
~183K SLoC