5 个版本
0.1.5 | 2020 年 6 月 21 日 |
---|---|
0.1.4 | 2020 年 6 月 15 日 |
0.1.2 | 2020 年 6 月 7 日 |
0.1.1 | 2020 年 6 月 7 日 |
0.1.0 | 2020 年 5 月 30 日 |
#3 in #deleted
每月 22 次下载
85KB
467 代码行
fts_gitignore_nuke
fts_gitignore_nuke 是一个 Rust 编写的 CLI 工具,用于查找由 .gitignore 文件隐藏的文件和文件夹,以便可以将其删除。
这很有用,因为它允许一次性删除许多项目的构建输出。所有操作都是手动进行的,并且永远不会调用 git
。这是因为 .gitignore
文件越来越多地用于 Git 之外的环境中。例如,Mercurial、perforce 或自定义工具可能会利用 .gitignore
文件。
为什么创建这个工具?
你可能想知道。为什么要创建这样一个工具呢?为什么不运行像 git clean -dX
这样的命令呢?这可以工作,但在某些情况下不行。fts_gitignore_nuke
的动机是一系列需求。
- 一次性删除多个源代码库中的文件。
- 在 Git、Mercurial 和 Perforce 代码库中删除文件。
- 在单体代码库中删除文件。
- 支持 Windows、macOS 和 Linux。
目前还没有现有的工具支持我的所有需求。我在家里有几十个 Git 代码库。在工作中,我有一个 Mercurial 单一代码库加上 Perforce。我希望有一个工具来统治它们。一个简单的命令行调用,可以在所有个人用例中工作。
更多信息请参阅我的博客文章: 使用 Rust 删除 Git 忽略的垃圾文件。
安装
目前可以通过 fts_gitignore_nuke
通过 cargo install fts_gitignore_nuke
进行安装。
使用方法
编译 fts_gitignore_nuke
并在任何目录下运行。如果没有明确用户输入,则不会删除任何文件。
默认行为从当前目录开始,测试所有子目录。 .gitignore
文件按后进先出顺序堆叠并评估。
默认行为不包括父目录或 .gitignore
文件。可以通过 --include_parent_ignores
和 --include_global_ignore
分别包含它们。
Deletes files hidden by .gitignore files
USAGE:
fts_gitignore_nuke.exe [FLAGS] [OPTIONS]
FLAGS:
-b, --benchmark Auto-quit after walking directory
-h, --help Prints help information
--include-global-ignore Include global .gitignore for matches
--print-errors Prints errors if encountered
--print-glob-matches Prints which glob and which .gitignore matched each path
-V, --version Prints version information
OPTIONS:
-d, --directory <directory> Root directory to start search
--min-file-size <min-file-size> Minimum size, in bytes, to nuke [default: 0]
--num-threads <num-threads> Number of threads to use. Default: num physical cores
-r, --root <root> Include .gitignores between root and target directory
支持
fts_gitignore_nuke
应该适用于 Windows、macOS 和 Linux。它主要是为了我个人的 Windows 使用场景编写的。可能需要稍作修改以支持不同的环境或工作流程。欢迎提交拉取请求!
性能
fts_gitignore_nuke
相对较快,默认情况下是多线程的。磁盘 I/O 是不可避免的瓶颈。
问题:我可以保留未添加到源控制的重要本地文件,例如私钥吗?
是的!
除了 .gitignore
文件外,fts_gitignore_nuke
还会查找 .gitnuke
文件。一个 .gitnuke
文件会被完全当作一个常规的 .gitignore
文件加载。预期用户行为是 .gitnuke
文件包含白名单模式(例如:!foo.privatekey
或 !/LocalContent
)用于文件和文件夹,这些文件和文件夹不是 Git 仓库的一部分,但不应该被清除。此类内容示例包括私钥、本地内容或昂贵的构建工件。
当匹配路径时,fts_gitignore_nuke
将遍历所有层级的 .gitnuke
文件,然后是所有 .gitignore
文件。这意味着每个 .gitnuke
文件都比每个 .gitignore
文件有更高的优先级。
一如既往,请在清除文件之前仔细检查要删除的文件列表。
依赖关系
~9MB
~164K SLoC