2 个不稳定版本

0.2.0 2020 年 7 月 2 日
0.1.0 2020 年 5 月 4 日

#2835命令行工具

BSD-3-Clause

8KB
73

dirsh

built with nix

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